专栏名称: 衡阳信安
船山院士网络安全团队唯一公众号,为国之安全而奋斗,为信息安全而发声!
目录
相关文章推荐
武汉本地宝  ·  雨雨雨!武汉未来几天阴雨天“包场”! ·  昨天  
武汉本地宝  ·  下调!湖北当前油价是多少? ·  2 天前  
武汉本地宝  ·  上新啦!武汉又一批公租房开始配租登记! ·  昨天  
51好读  ›  专栏  ›  衡阳信安

AWD Plus纯干货分享

衡阳信安  · 公众号  ·  · 2024-07-15 00:37

主要观点总结

文章介绍了AwD+比赛的相关知识,包括比赛背景、前期准备、比赛阶段和总结。文章指出AwD+比赛分为Break(攻击)和Fix(修复)两个部分,并介绍了两部分的具体内容和注意事项。此外,文章还提到了比赛中的防守技巧和注意事项,以及比赛的一些重要提示和建议。

关键观点总结

关键观点1: AwD+比赛背景

AwD+比赛是一种安全挑战赛,分为Break(攻击)和Fix(修复)两个部分。选手需要在预设的靶标环境中进行安全挑战和漏洞破解,通过获取Flag得分。比赛采用动态积分方式,允许选手重置靶机。

关键观点2: 前期准备

选手需要准备相关的技能和知识,包括web技术、Go语言、JavaScript原型链污染等。此外,选手还需要熟悉Linux命令和中间件重启命令,以及掌握代码审计和文件操作技巧。

关键观点3: 比赛阶段注意事项

比赛阶段需要注意速度、心态和策略。选手需要熟悉防守技巧,如熟悉Linux命令、重启服务器、文件操作等。同时,要注意上传文件的格式、执行权限和耗时。在比赛中,速度是非常重要的,但也要注意避免破坏服务导致扣分。

关键观点4: 总结

文章总结了比赛的重要事项,包括速度、心态、队伍组成、比赛流程和防守技巧等。同时,文章强调了前几轮拿分的重要性,并提醒选手注意身体健康和饮食。


正文

0x0 背景

首先来了解什么是Awd Plus(或者叫awd+,Break+Fix等等),它分为两个部分,我们现从Break(攻击环节)开始说。

Break(攻击)

各赛队对靶标环境进行预设安全挑战研究与破解,检测出靶标环境中的预设安全挑战或者未预期安全漏洞,攻破靶标环境获取 Flag 进行得分。Break 环节采用动态积分方式(即题目分值随解出队伍数量增加而减少,队伍总分也会随之变化)。Break 允许选手重置靶机,一般最多允许重置 5 次。

Fix(修复)

这个和攻击有点区别,每个比赛修复方式不同,如有些是通过SSH连接主机进行修复,有些则需要编写update.sh(例子:图一)然后上传脚本,通过运行脚本替换文件或删除文件在服务器上进行修复。同样的Fix也是动态积分+允许重置靶机,一般重置五次,上传后一般会实时check(或等待一轮时间),check未修复一般不扣分,只在check点无法正常访问,服务宕机等异常情况扣分(一般不会实时扣分,只会在一轮check过后扣分,所以可以随意进行上传脚本修复的过程,在一轮时间前恢复就可以)

比赛题目

一般只有Web&Pwn

相信看到背景大家也知道awd+和普通的awd有什么区别了,一个是选手之间的斗法,一个是静态攻防(高情商:人机对抗),所以要了解的知识不同,准备的东西也不同,下面我们来进入正题。

0x1 前期准备

由于我是个web手,所以对pwn不熟,我这就不描述pwn了(毕竟pwn大佬们也不会看我这种文章哈哈哈哈哈哈哈,能看的都是来指正我错误的~)

1、考点:

web:JavaScript原型链污染、Go语言(如湖湘杯线下)、SSTI、CBC翻转字符攻击和常见考点(反序列化、Sql注入,重置密码、越权等逻辑漏洞等等),简单通俗点来说就是一个线下的CTF解题赛

2、防守:

一般在平台可以下载或直接通过SSH连接主机Down下来, 少部分会让你黑盒渗透,然后下载源码进行加固。防守的过程其实也简单,这个过程倒是和普通的CTF的 防守一样,找到漏洞点进行删除就好,所以具体不多说,参考普通CTF加固来进行准备,如IDE啊,go环境啊,npm的环境等等,主要是需要能让服务在本地跑起来,才好去进行验证是否加固成功。

3、攻击:

上面也说了,在防守阶段已经提供了源码,我们就可以按照白盒渗透的方式进行审计,找到漏洞点进行攻击,同样准备的东西也是GO环境、NPM环境、PHP环境等能本地调试的工具和一颗聪明的大脑

4、队员

T0:PWN手+全栈+Web手(三个全栈肯定是最牛逼,但是全栈大佬可遇不可求啊T-T)

T1:PWN手*2+Web手

T2:PWN手+Web手*2

T3:Web手*3(这里不说3PWN手,因为基本会pwn的都会web点,但web手基本不打pwn)

T99999*n:摸鱼大佬*3

人永远是左右比赛的关键因素,现在大部分比赛都围绕着PWN来举办,所以pwn手肯定是最优选,就如我前面说的,会pwn的基本都会点web,就算是3个pwn也能在比赛中拿到比较好的成绩,原因是web的加固实在实在实在是太简单了,实在攻不下来能防住也是很重要的。

0x2 比赛阶段

这里重点说比赛中遇到的坑,因为其实能看到这文章的肯定是基本到准备到线下比赛的,技术肯定都有的,只不过会碰到很多奇奇怪怪的坑。但这里只说防守,攻击没有什么坑,该是啥漏洞就是啥漏洞,毕竟代码就在那里变不了。

防守流程:

一定一定一定要熟悉linux每个命令,最重要的是中间件的重启命令,题目一般会给题目的根目录,比如给出题目根目录是:/app/    你下载下来的源代码目录+根目录就是你操作的目录

比如这个:我要操作web文件夹的东西,就是/app/web/*

大家也可以看到,这个是整个docker下载下来的,里面有服务启动的语句

我们就可以根据这个语句来启动服务,但是,npm和go都是需要重启服务器的,我们知道了拉起命令,怎么暂停服务呢?最常见的方法,用ps去找进程然后kill掉,比如我要重启JavaScript的环境,肯定是先杀进程

ps -ef|grep npm|grep -v grep |awk '{print $2}'|xargs kill -9
ps -ef|grep node|grep -v grep |awk '{print $2}'|xargs kill -9

或者根据目录去杀

ps -ef|grep app|grep -v grep |awk '{print $2}'|xargs kill -9

然后去替换或者删除漏洞文件

mv -f index.js /app/index.js
mv -f routes/app/index.js

最后拉起

npm run dev 
或者使用官方的restart脚本
bash /restart.sh

这里有个小tips,要根据服务启动的用户去启动,例如weblogic不能root启动,不能盲目使用sudo命令,以及就是权限问题,最好直接给777权限

sudo chmod -R 777 /app/*

最后就是打包,一般服务器是接受tar包,并且会给相关说明,如何打包及如何接受

### update.tar.gz目录结构
```
# tree update/
update/
├── some_files
└── update.sh
```

### update目录打包为update.tar.gz命令
```
tar zcvf update.tar.gz update
```

### 注意事项
+ web目录或pwn目录请多留意题目描述、题目附件。
+ 修改的原则尽可能只在漏洞相关的文件上,请勿更改其他文件。
+ 执行脚本的文件名必须是update.sh
+ update.sh的执行权限,平台解包后自动对其`chmod +x`
+ 请注意update.sh是Linux文件格式。DOS转化为Linux文件格式,可以使用dos2unix命令。
+ 请勿添加无关命令,所有上传包都会备份。
+ 请注意耗时。

上传后即可进行校验

最最最最重要的事情!!!一定要快!!!否则少了前几轮check的分数基本就追不上了

防守技巧:

一般D盾啥的都扫不出来,普通的代码审计工具不如人工定位,直接放例子

在不看代码的情况下来评判威胁度,那肯定admin文件夹是威胁系数最高的呀!直接干掉!干掉后再看check情况,如果干掉还不行可以在看看其他代码,依次先排除最危险的

第二个例子:

一个go语言的代码,先看威胁点,那肯定是执行命令啊,

"os"
"os/exec"

通过这个去找命令执行点,关键词:

bash
exec
curl
ping

直接批量替换,同样的更新完文件再上传check,check不过再检查







请到「今天看啥」查看全文