-
Notifications
You must be signed in to change notification settings - Fork 182
7、Bypass WAF
炁 edited this page Oct 10, 2024
·
2 revisions
对于冰蝎和哥斯拉,他们自己在流量和Java层都有很多可以提取的特征,这里没有办法去管控,需要各位自行去魔改,其实也并不难。本项目把一些大家实现的比较类似的一些特征进行了去除。
在一些情况下,流量层的 WAF 会在对流量数据包解析时对关键字、关键特征进行匹配,例如反序列化流量包中出现的一些关键类的包名、类名,但是流量设备受限于性能影响,不会无限制的解析请求包,可能会影响到实际业务,因此一般会有解析的时间
上或长度
上的阈值,超过该阈值,将放弃检查。
因此本项目添加了为反序列化数据添加脏数据用来绕过流量层面的 WAF 的功能,在生成反序列化数据时,指定 -dt 参数,即可根据不同类型生成封装后的带有随机脏字符的反序列化数据包。
例如:
java -jar JYso-[version].jar -y -g CommonsBeanutils1 -p 'EX-MS-TEXMSFromThread' -dt 1 -dl 50000
可以生成填充了 50000 个脏字符的序列化数据
通过UTF编码对原始序列化数据中 TC_CLASSDESC、TC_PROXYCLASSDESC、TC_STRING 这些强特征来3字节加密
java -jar JYso-[version].jar -y -g CommonsBeanutils1 -p 'EX-MS-TEXMSFromThread' -utf
对于漏洞执行常使用的 Runtime、URLClassLoader 等,很多 RASP 都进行了 Hook,在攻击时可能会被拦截,这里我使用了一些反射调用 native 方法之类的技术去尝试 RASP 的防御,具体的技术实现就不细说了,感兴趣的朋友可以反编译 jar 包查看相关代码。 可以使用 -o 参数指定使用绕过 RASP 的相关技术。
目前已支持动态生成混淆的类名,不存在任何 qi4l
关键字。