AWD攻击与防御
攻击
主机发现
如果官方没公开靶机地址(通常不会给),则攻击手首先要做的事就是先找到每个主机地址和端口
用工具或者自己的脚本都行,不过建议提前准备好脚本,现场写会慢一点可能还会出问题
弱口令
ssh弱口令
可能会有些队伍没有改
web弱口令
一般在后台登录处,或者phpmyadmin之类的服务
代码审计
代码审计是攻防一体的工作,当发现漏洞时,进攻的同时跟防守的队友商讨如何修复
预留后门
某些地市级awd比赛为了降低难度一般会设置一句话木马,注意第一时间删除然后用脚本去批量打其他主机
其他漏洞
将源码下载到本地,先用D盾或者河马等扫描工具大概扫描下,在深入挖掘漏洞
权限维持
不死马
参考文章:AWD不死马与克制方法
内核漏洞提权
1 |
|
crontab写定时任务
1 |
|
搅屎
1:到最后一轮时,该拿完的flag拿到时可以进行删站,无限复制等操作
2:fork炸弹
1 |
|
防御
web防御
ssh登录
ssh命令登录或者使用图形化工具连接
1 |
|
备份源码
比赛一开始就需要有一个队友对网站源码和数据库数据进行备份,如果后续被删站了可以及时恢复
1 |
|
改密码
ssh密码
如果发现拿到的ssh密码不是类似于SDs2dKJaH5hs
的随机强口令,而是类似于ctf/123456
,则需要更改ssh密码
1 |
|
web后台密码
一般题目大概率是一个cms或者自己写的网站,那么后台就有可能存在弱口令,需要修改
mysql密码
mysql密码是很多队伍会忽略的地方,当然也同样重要。改完要注意cms中的配置文件,不然可能会导致cms连不上数据库而崩溃
1 |
|
代码审计
一般先用D盾,河马等工具扫一遍,发现一句话木马等较明显的漏洞,再用seay等或手动分析,或者可以找找历史漏洞cve等
找到漏洞后根据漏洞的种类进行修复
1:删站
不建议。如果参赛手册中没有明确禁止,这是最简单粗暴的姿势
2:删页面
只要删掉有漏洞的页面就行了,比如删后台登录页面、注册页面、上传页面等等
3:破坏正常功能
如果手册中规定了不能删除任何页面,则可以让这些漏洞点的功能函数失效
4:正常修补手段
如加白名单,字符过滤转义,设置open_basedir等,有权限还可以修改php.ini,改完记得重启
1 |
|
上waf
waf也是比较重要的一点。一般可以分为两个类型,一种是只有监控的功能,可以监控流量方便分析其他队的payload,一般比赛的检查都能通过。另一种就是带拦截的防御waf,也称通防,一般比赛不允许使用
几个waf项目
1:AoiAWD
安恒维护的开源项目,需要提前在本机编译,支持web,pwn流量捕获,系统进程监控等
地址:https://github.com/DasSecurity-HatLab/AoiAWD
2:watchbird
通防waf,支持流量转发和替换flag,防御注入,反序列化,rce等漏洞
地址:https://github.com/leohearts/awd-watchbird
shell查杀
对于不死马可以参考我以前写的一篇文章:AWD不死马与克制方法
一些find命令
1 |
|
查看进程
1 |
|
杀死进程
1 |
|
别名
经过实践,发现别名似乎在网站上rce执行命令时并不会生效
1 |
|
pwn防御
打patch
上通防
现在大部分比赛不允许上通防,因为通防基本可以实现完美防御
通防是通用防御的简称。因为awd里pwn题的形式基本都是运行一个二进制,然后把二进制的流量转发到某个端口,所以如果给这个pwn题加个壳子过滤一下流量,所有带flag的字符串都不允许输出,所有带flag的文件都不允许打开,基本上就没办法攻击了。
以下是几个通防项目
PwnSandboxForCTF:Ptrace,劫持敏感syscall,检查参数过滤敏感字符串
evilPatcher:Seccomp沙盒,劫持syscall,无法过滤指针类参数
pwn_waf:抓取流量、通防、转发、多人转发模式,
LIEF:劫持敏感函数调用,过滤敏感字符串等。对原文件改动较小