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