0x00 背景
这周学弟学妹经常提问到如何绕过安全防护软件的检测,那么本篇就以dog为例子带大家走一遍dogByPass的一条龙服务流程,本篇仅提供思路,后续可能由于软件规则的更新而需要重新设置或更改规则,所以先带大家走一遍流程,熟悉后各位便能自行去更改规则了。
dogByPass的一条龙服务:
上传ByPass -> 一句话ByPass -> cknife ByPass
0x01 UploadByPass
在目标站点有上传漏洞并使用dog防护的时候,可以使用如下的方式绕过。
在服务端写好未做任何限制的上传脚本,然后直接上传php文件,发现被dog拦截了。
最基本的方式可以通过对request的报文进行FUZZ,得到绕过防护软件的方式。
举个栗子在filename=后面加上空格,TAB等空字符再跟上文件名,可以绕过dog的上传检测。
又一个栗子在分号的前后加上一定数量的TAB,在测试中是加入了466个TAB字符,可以绕过dog的上传检测。
0x02 OneWordByPass
dog By Pass 的一句话可以参考往篇的文章:
https://mp.weixin.qq.com/s/5EYc-foPPvu9B0DKkUKmMw
https://mp.weixin.qq.com/s/vzNx1qz6iTnOUurW0hO2MQ
绕过上传后,普通的一句话会被dog查杀,因此需要特殊的一句话,又为了能够使用cknife连接而不是手动连接的方式,因此需要在传输的过程中对内容进行编码或加密,最简单的方式就是使用base64编码,上传后没有被查杀,因为这个一句话是免杀的。
使用手动连接的方式确认一句话可以正常使用,把POST请求中参数的值cmd=system(‘whoami’) 进行base64编码得到cmd=c3lzdGVtKCd3aG9hbWknKQ==,提交后正常执行。
0x03 CknifeByPass
正常情况下Cknife发送的数据是没有进行编码或加密的,因此会造成某些敏感关键字被dog检测到从而被拦截,所以为了能够让Cknife能够发送编码或加密的内容可以在cknife中的Config.ini配置发包规则。
首先查看默认情况下Cknife的发包规则,设置Cknife的代理地址和端口是BurpSuite的地址和端口。
使用BurpSuite拦截Cknife的请求包,然后发送的repeater,可以看到因为cmd参数的值中包含敏感关键字从而被dog拦截。cmd是免杀一句话的密码。
拦截后Cknife无法正常使用,直接报错。
接下来开始对Cknife进行修改,打开Config.ini文件,这里以PHP为例子,找到PHP_MAKE,将PHP_MAKE中的值eval(base64_decode($_POST[action]))进行base64编码,编辑好后保存config.ini
重新启动Cknife,使用BurpSuite监测请求包,cmd参数的值成功被转成base64编码的数据,由于上一步的免杀一句话会进行base64解码,所以请求可以正常运行。
此时关闭BurpSuite的拦截,cknife可以正常使用,本篇介绍的流程也就到此结束。
0x04 小小总结
本篇重在带大家走下dogByPass的一条龙服务流程,提供一些bypass的思路,但bypass的技巧都是要靠不断的学习和积累的,并且由于cknife是开源的所以为很多骚操作提供很好的支撑。cknife还要很多知识本篇没有涉及到后续再进行总结和探讨。期待大家的交流和讨论。
网友评论