RuoYi代码审计学习记录
前言
总算要开始学习代码审计了,正好看到一篇比较好的代码审计的文章,跟着学习一点皮毛,顺便记录一下。基本都是抄的,推荐去看原文,文章地址:https://mp.weixin.qq.com/s/xpC9WGUKvoIkrdDmRdwMaQ
参考文章:https://xz.aliyun.com/t/11928
基础配置
工具配置
JDK 1.8下载地址
推荐使用IntelliJ IDEA Ultimate版本,下载地址:IntelliJ IDEA,学生可以免费领专业版,有钱可以支持正版,没钱淘宝买个学生账号。
推荐Free MyBatis Tool插件和官方中文语言包,其他的看着装就行。
Free MyBatis Tool插件可以快速定位MyBatis调用代码,例如:
环境搭建
RuoYi版本:v4.2,下载地址,下载4.2的版本就行
使用idea直接打开项目,找到RuoYi-v4.2-admin.yml,修改web端口(可选)
打开RuoYi-v4.2-admin-druid.yml,修改数据库相关信息
mysql Ver 8.0.30 for Linux on x86_64 不允许root远程登录,可以使用以下方法缓解
1 |
|
创建数据库并导入
1 |
|
启动环境
访问http://127.0.0.1:8081/login,自带用户名密码,没有的话试试admin/admin123
基础环境配置到此结束。
漏洞分析
Shiro反序列化漏洞
为啥说这篇文章好呢,因为他把你每个步骤需要按的键都给你了,这里就依葫芦画瓢。根据文章可知,一般情况下shiro的配置文件在shiroconfig.java中,在idea中,如果你想搜索全部代码的话,快捷键是按两次Shift,这里按两下shift然后搜索shiroconfig,结果如下:
在shiroconfig.java中搜索key可以找到shiro加密使用的密钥fCq+/xW488hMTCD+cmJ3aQ==,这里要注意,加密的方式是gcm:
查看设置的cookie:
shiro反序列化导致rce可以参考链接,这里就不多讲了,主要是我也不会。
SQL注入
这个版本官方发布了一些sql注入的补丁,具体注入点我们可以通过使用idea进行全局搜索来进行查找,在idea中按两次shift可以调出全局的搜索框,搜索常见的可以存在注入的点${xxx}找到的结果如下:
这里先定位到id为selectDeptList的sql语句,通过使用插件可以快速定位到Java代码: