记一次实战中的代码审计

admin 2024年2月25日13:25:46评论25 views字数 969阅读3分13秒阅读模式

漏洞挖掘

开局登陆框并且验证码还有效,通过验证码识别在进行爆破效率低,爆破账号密码这条路就先放着最后。

记一次实战中的代码审计

记一次实战中的代码审计

在网页源代码找到一段注释的代码。通过给的链接查看发现这个代码几年都没有更新了,八九不离十都存在漏洞。

记一次实战中的代码审计

记一次实战中的代码审计

可以看到这套代码使用的Shiro为权限授权层,根据maven提供的shiro版本1.3.2在低版本情况下存在权限绕过借用下panda师傅)。

记一次实战中的代码审计

记一次实战中的代码审计

看到shiro权限鉴定的配置,可以通过CVE-2020-11989进行权限绕过。例如:/;/xxxx/user

记一次实战中的代码审计

目前手握一个权限绕过,现在只需要找一个文件上传、命令执行、模版注入或反序列化其中一个都可以拿下这个网站。
看到这里使用fastjson组件velocity模版,这里fastjson版本虽然低但是全文找了下没有一处被调用,

记一次实战中的代码审计

记一次实战中的代码审计

看了下readObject,从redis里面缓存获取数据进行反序列化,按道理这里连接redis设置序列化值都可以RCE了,可以参考先知社区这篇【redis未授权到shiro反序列化,但是目标没有对外开放redis就放弃了这条路。

记一次实战中的代码审计

现在突破点就放在了文件上传了,全局搜索在FileController控制/common/sysFile/upload不需要权限可以直接进行任意文件上。
但是这里直接上传会爆空指针异常,因为目前只是权限绕过没有进行用户登陆所以获取当前用户名为空,这里还需要解决用户登陆问题。

记一次实战中的代码审计

记一次实战中的代码审计

之前最开始说把爆破放着最后原因就是效率低,所以现在看看能不能找到泄漏用户信息的接口。在/sys/user/list找到泄漏用户信息接口配合之前的权限绕过就可以获取用户相关信息。

记一次实战中的代码审计

记一次实战中的代码审计
泄漏的所有密码是被加密了,看着像md5全部提取去解密一个都没有解出来,估计应该是加了盐继续看代码。

记一次实战中的代码审计

看得出来这里 SALT是动态 构成:用户名+1qazxsw2 ,但是这里环境查询出来的用户名全是中文,当时直接丢给cmd5解密好像报错了。

记一次实战中的代码审计

后面就换了种方式:直接将本地明文密码和盐进行全部加密然后与之前接口查询出来的密码进行对比,一样再去查看明文密码。

记一次实战中的代码审计

运气好碰撞到一个密码,现在只需要带上这个cookie

记一次实战中的代码审计

成功上传,但是由于目标是SpringBoot项目没有装tomcat-embed-jasper依赖库导致无法解析jsp,直接大结局了。

记一次实战中的代码审计

原文始发于微信公众号(LK安全):记一次实战中的代码审计

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月25日13:25:46
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记一次实战中的代码审计http://cn-sec.com/archives/2523918.html

发表评论

匿名网友 填写信息