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
2
3
4
5
6
7
8
9
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;

CREATE USER 'username'@'%' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

创建数据库并导入

1
2
3
4
create database ry;
use ry;
source /opt/quartz.sql
source /opt/ry_20200323.sql

启动环境

访问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代码:


RuoYi代码审计学习记录
https://blog.njcit.me/2022/12/29/代码审计/RuoYi代码审计学习记录/
作者
ccadmin
发布于
2022年12月29日
许可协议