作者: 圈子社区 yzddmr6
首发于圈子社区 https://www.secquan.org/Prime/1069497
本文已声明原创,恶意转载硬刚到底!
仅供技术交流,切勿非法用途!
前言#
最近D盾更新了,在某司某圈也看到了不少免杀d盾免杀狗的一句话帖子
但是基本上只要放出来不到两天时间就加入查杀全家桶.
最近一直在造各种车轮子,就想着其实可以写个脚本利用异或来 fuzz 出指定的字符,然后拼接出 assert 或者 create_function 等函数,来对抗 waf 的检测.
查杀 0级了无痕,处女座的福音!
思路及实现#
###首先解决如何fuzz的问题
先讲一个离散数学中的概念叫可逆 ,异或的运算就是具有可逆性的.
具体什么意思呢,就是说若a^b=c,则有b^c=a
所以只要把需要拼凑出来的字符串 a 跟随机取出来的符号 b 异或,然后出来的结果 c 就是需要跟 b 异或的内容.
举个例子
我们来 echo 一下字符 a 跟符号 * 异或的结果
是大写字母K
然后把大写 K 跟 * 异或
就出来了我们想要的 a
那么也就是
a=K^*
但是在写的过程中问题来了
很多时候异或出来的字符是不可见的小方块
就需要把它编码
看了以前有一篇文章是用url编码,但是在实现过程中发现url编码也有一定概率出现不可表示的字符
那就开开心心上 hex 吧
最终成功拼接出来了 assert
接下来就是写个字符串池子,用来存特殊符号,然后随机取出来进行异或,拼接想要的字符.
把它封装成函数
可以设置需要异或的字符串长度
其实也可以用中文甚至 emoji 表情来异或,但是考虑到乱码还有不同系统对表情的支持不同,就算了.
取出拼接好的 assert, 把 get 的数据传进去,就成了下面这样
哈,看来可以使用啦
编辑提示:
在这里 mr6 就是菜刀密码,后面的参数 phpinfo();
就是你要执行的php命令,可以直接丢到菜刀里。
接着是调用的问题,其实到了这个地步,不管你什么d盾安全狗已经认不出来函数里面写的什么意思了,但是他会根据函数的调用来检测拦截,如果这个时候直接调用的话会爆一级可疑函数.
既然做免杀肯定要0级了啦
放到类里面再调用就好了
接下来就是造轮子了
在脚本中为了增大waf识别的难度 类名方法名也随机化了.
使用方法#
右键查看生成的源码
已经保存到同目录下 1.php 里面了
生成了十几个,免杀无压力~
附上过D截图
最后#
脚本特点有三个#
一利用特殊符号异或达到迷惑waf的目的,并且因为每一次的拼接都是随机生成的,所以单单一个文件进了特征库也不用担心
二是利用类调用,类名函数名随机化,杀软分析起来可能跟普通的文件没有什么区别
三是没有assert eval create_function 等这些关键字,更为隐蔽.
因为是随手写的,所以代码比较糙,不过不要在意这些细节……
只是提供了一个思路,其实大马也可以像这样写个免杀模版,下一篇文章再讲吧
虽然都是随机化,也没有assert eval 这种关键字,但是用的人多了当然脚本的免杀性也失效了,可以关注我的 github :
https://github.com/yzddmr6
以后更新的免杀脚本都会放在上面.
如果有什么讲的不对的地方还请大佬们多多包涵.
源码地址:
https://github.com/yzddmr6/php_xor_bypass/blob/master/xor.php#
不来个star?? 不来个star?? 不来个star??
顺便在线等团长的 CVE-2019-0708-RCE 的exp~
欢迎关注 圈子社区官方公众号,不花一混钱,享受最新实战动态!
公益,鲜活,专业
关于圈子社区:
圈子社区是一个非盈利,封闭的白帽子技术交流社区。目前成员已有近2000人,拥有业内首个自主研发的实战化靶场,体系化学习和燃爆的交流气氛带你成为真正的大佬,社区专注实战,崇尚技术,如果你也是实战派,请关注我们。
社区地址:(请使用https访问)
https://www.secquan.org
本文始发于微信公众号(Secquan圈子社区):谁能杀我?浅谈随机异或无限免杀各种WAF(d盾示例)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论