1. 极度安全首页
  2. 网络安全技术

各种常见未授权访问漏洞学习

未授权访问是系统对用户限制不全,或者无限制,可以让任意用户或者限制访问用户,访问到需要权限认证的地址。未授权访问通常是会泄露用户信息,系统信息。某些服务和系统中,未授权访问还可以执行系统命令,操作系统文件,导致系统的整体安全遭到破坏。

前言

本片文章主要是在网上现有文章的基础上,结合自己的经验,进行总结、增补,以保证之前没接触过该应用的师傅不用去检索其他资料也可以看懂。(新手向,大佬轻喷)

MongoDB未授权访问漏洞

漏洞简介

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

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

造成未授权访问的根本原因就在于启动 Mongodb 的时候未设置 --auth 也很少会有人会给数据库添加上账号密码(默认空口令),使用默认空口令这将导致恶意攻击者无需进行账号认证就可以登陆到数据服务器。

更多MongoDB的介绍请移步:https://www.runoob.com/mongodb/mongodb-tutorial.html

漏洞复现

环境搭建

这里使用docker。Docker教程:https://www.runoob.com/docker/docker-tutorial.html

docker search mongodb  # 从Docker Hub查找镜像

各种常见未授权访问漏洞学习-极度安全

docker pull mongo  #从镜像仓库中拉取或者更新指定镜像

各种常见未授权访问漏洞学习-极度安全

docker images mongo #列出本地主机上的mongo镜像

各种常见未授权访问漏洞学习-极度安全

docker run -d -p 27017:27017 --name mongodb mongo  # 创建一个新的容器并运行一个命令

各种常见未授权访问漏洞学习-极度安全

docker ps  # 显示正在运行的容器

各种常见未授权访问漏洞学习-极度安全

漏洞检测

Python检测脚本:

#! /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

nmap检测:

nmap -p 27017 --script mongodb-info <target>

各种常见未授权访问漏洞学习-极度安全

漏洞利用

这里使用 NoSQLBooster

下载地址:https://s3.mongobooster.com/download/releasesv5/nosqlbooster4mongo-5.1.12.exe

各种常见未授权访问漏洞学习-极度安全各种常见未授权访问漏洞学习-极度安全

修复方法

(1) 为 MongoDB 添加认证

① MongoDB 启动时添加 -auth 参数。

② 给 MongoDB 添加用户

use admin # 使用 admin 库
db.addUser“用户名” “密码”# 添加用户名、密码
db.auth“用户名”,“密码”# 验证是否添加成功返回 1 说明成功。

(2) 禁用 HTTP 和 REST 端口

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

(3) 限制绑定 IP

启动时加入参数

--bind_ip 127.0.0.1

或在 /etc/mongodb.conf 文件中添加以下内容

bind_ip = 127.0.0.1

本文转载:Freebuf,不代表 极度安全 立场,转载请注明出处:https://www.secvery.com/3951.html