CENTOS 7 踢用户_实验|CentOS下从零搭建Redis测试环境

beb8aefb932623e040418633c10d5a5e.gif

本文为9.21--9.27这周的更新,这该死的拖延症。

0x00 前言

上周刚做完一个项目,目标部署的大量redis立了大功:暴露公网的6379端口是很好的突破口,内网中root权限运行的redis也堪称提权利器。   遂产生了想把redis漏洞的各种利用方式本地复现一遍的念头,结果因为该死的拖延症,本周只搭好了复现的环境……先水一篇文章再说。   文章标题:实验|CentOS下Redis漏洞利用方式复现 文章标题 :实验|CentOS下从零搭建Redis服务  

0x01 安装centos虚拟机

1、去centos官网下载iso镜像 这里我选择的是centos7版本,centos8还比较新,用的人暂时还没有7多。 centos7镜像iso下载链接: https://mirrors.xtom.com/centos/7.8.2003/isos/x86_64/

69db9f38842b1d92883721e301e18e77.png

  2、选择下载镜像类型 0_README.txt文件可以看到下面各个镜像的适用范围,这里我们下载最上面的DVD版本,CentOS-7-x86_64-DVD-2003.isoCentOS-7-x86_64-DVD-2003.torrent两个最后下载的内容是一样的。这里推荐使用下载.torrent文件,然后用迅雷打开进行下载,速度会比直接下载.iso文件快很多。  

0efe9364fa3d1a4557b17ade408d9b8f.png

3、安装系统 下载完成后使用vmware的文件—新建虚拟机,然后加载iso镜像,按照指示进行安装系统,没什么需要特别注意的地方,就类似在windows下安装软件不停的下一步就好了。

7b872fb0ae0b4a9c47257523e0ea8f77.png

4、登陆系统

安装完成后使用root账号登陆系统,密码在输入时不会显示,但实际是能输进去的,注意小键盘是否开启(虚拟机貌似会默认关闭小键盘)。

4e069b410a4acec9f3bf593d756187d7.png

0x02 配置CentOS网卡

1、记录网段信息

发现NAT模式下虚拟机网络不通

85516a7b2a55a044cdb0196d1abaa49b.png

查阅资料得知刚安装好的centos需要手动配置一下网卡,首先打开Vmware的 【编辑—虚拟网络编辑器—VMnat8—NAT设置】

06c743593bec75e41a6dcde2a371e0ab.png

记录下弹出的子网掩码网关IP

fe20a1c7ea652bad7edee7edf6afa15d.png

2、修改网卡配置

回到centos虚拟机, cd   /etc/sysconfig/network-scripts/ 之后 用 ls 命令寻找默认网卡,ifcfg-开头的排除ifcfg-lo,剩下的那个就是默认网卡,我这里是ifcfg-ens33

b78926d9acf7808b71d4222a4d55952b.png

使用vi编辑这个文件,将BOOTPROTO=dhcp改为static,然后手动补充IPADDRNETMASKGATEWAYDNS信息,NETMASK和GATEWAY对应子网掩码和网关ip,填写内容为之间记录的内容。IPADDR在子网范围内随意填写,DNS无特殊要求选用任意公用dns均可。最后把ONBOOTno改为yes使网卡开机自启动

c5dddf181d64ee20e92ad771673b719b.png

3、测试网络

重启网卡,再ping百度就能通了 # s ervice network restart

d3fdf42edae1acea76634094bd0f17a3.png

这里顺便安装一个工具包,后面会用到。输入命令ifconfig可查看到网卡信息即为安装成功。 yum install -y net-tools

18e13374d052610b6ab92542259ffc89.png

0x03 搭建lamp环境

有些好奇宝宝看到这里可能会问:“测试redis,为什么要搭建lamp环境呢?”——因为 redis的利用方式有一条是向web目录下写webshell。 并且我突然发现自己虽然已经手动搭建过数十次的lamp环境,但是centos下的搭建过程还没有记录过,正好在这里记录一下。 1、安装apache 首先更新yum # yum  update && yum  upgrade 安装apache # yum install  httpd httpd-devel 启动apache服务 # systemctl start  httpd 查看apache服务状态 # systemctl status httpd

0b9ec1b94e61776e2dfc84442b4c8c82.png

可以看到apache已经跑起来了,但是物理机还无法访问到虚拟机的80端口

0c68bd5775b8538534093c7f6ef60d7c.png

配置防火墙放行80和443端口 # firewall-cmd --permanent --zone=public --add-service=http # firewall-cmd --permanent --zone=public --add-service=https # firewall-cmd  --reload

之后物理机即可访问

4cfef55693ee0f87c928c60012a111d1.png

2、安装mysql # yum -y install  mariadb mariadb-servermariadb-libs mariadb-devel 启动mysql服务 # systemctl start mariadb mysql安全设置 # mysql_secure_installation 根据提示设置数据库root用户密码等设置(初始密码为空)

5513e5e48e34c4cc32988dc58d448929.png

3、安装php 安装php和php的mysql模块 # yum -y install php # yum -y install php-mysql 安装常用php模块

# yum -y install php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel php-bcmath

vel php-bcmath
重启apache(这里参考文献命令有错误,下面已改正)
# systemctl restart httpd
写php脚本并用浏览器访问
# cd /var/www/html
# vi info.php
<?php phpinfo(); ?>

3022dce0741359a6180aaf3b299ce7bf.png

至此lamp环境搭建完成。
 

0x04 搭建redis服务

1、下载解压首先安装wget工具
# yum -y install wget
然后安装gcc编译器
# yum -y install gcc gcc-c++ libstdc++-devel

访问http://download.redis.io/releases/挑选你想下载的版本,因为我的目的是进行漏洞复现,所以没有选用最新的版本。挑选好后用wget下载到centos上

# wget http://download.redis.io/releases/redis-4.0.14.tar.gz
下载完成后解压
# tar -zxvf redis-4.0.14.tar.gz
2、编译安装
进入源码目录进行编译
# cd redis-4.0.14
# make CFLAGS="-march=x86-64"
安装tcl
# yum -y install tcl
运行安装测试,可能会出现错误如下
# make test

50905510c624ab858f2cd443b7dfac03.png

解决方案:vim修改tests/unit/expire.tcl文件,将tags{“slow”}下面的2100改为21000,1000改为10000

 tags {"slow"} {        test {EXPIRE - After 2.1 seconds the key should no longer be here} {            after 21000            list [r get x] [r exists x]        } {{} 0}    }    test {EXPIRE - write on expire should work} {        r del x        r lpush x foo        r expire x 10000        r lpush x bar        r lrange x 0 -1} {bar foo}
再次运行安装测试成功 # make test

8e71a91a464129f61bd81a6a6e0e108f.png

开始安装,测试成功了安装一般不会出问题 # make install

a1a57d1c3e1e8503011ff4ceb2312845.png

  redis服务被默认安装到/usr/local/bin目录下

d60d2dd5cc06af3ba8f59d823e6536f1.png

3、启动redis服务

编辑redis配置文件 # vi  redis.conf 设置访问ip
bind 127.0.0.1 改为 bind 0.0.0.0
设置后台运行
daemonize no 改为 daemonize yes
配置防火墙放行6379端口 # firewall-cmd  --zone=public --add-port=6379/tcp --permanent # firewall-cmd --reload 启动redis服务 # /usr/local/bin/redis-server  redis.conf 查看网络信息可以看到6379端口开放,redis启动成功 # netstat -antp

84305cfd2f00de52a966dbff616e824c.png

4、测试未授权访问

在物理机上用telnet测试连接

telnet 192.168.108.33 6379 输入info并回车(连接后第一次输入命令在cmd上不会显示,但实际是输进去了,和linux输入密码一样) 可以看到打印出了redis信息

3b7d9147f5c870703287aad03974f997.png

至此,redis服务安装完成。

0x05 个人感受

虽说现在各种靶机一键运行特别方便,但我还是更喜欢自己手动的去搭一遍环境,感觉这样会理解的更透彻。也不知道这种重复造轮子的行为是对还是错……下面说说我在redis搭建过程中的感受。   (1) redis默认配置中只有一条bind 127.0.0.1保证了安全性(貌似更低的版本默认为bind 0.0.0.0),而实际环境中通常需要多台主机互相通信,开发人员很可能改掉这条配置导致安全性降低。 (2) 配置文件中,密码相关的配置默认是注释掉的,也就是没有密码,注释也导致了这条配置很不显眼。没有安全意识的开发人员就会很容易的忽略这一条,即导致大量【redis未授权访问漏洞】的产生。 (3)我目前在配置文件里没看到redis有相关的防爆破措施,这将导致redis的弱口令更容易被利用。 (4)还有正文里没提到的一点:用ps aux命令可以看到,root用户运行的redis就是root权限,这一点可以用于拿下shell之后的提权(bind 127.0.0.1在这种情况下没什么卵用)。   下周文章将给大家分享redis常用命令,以及渗透测试中获取redis权限后常用的几种利用方式的演示。

0x06 后记

因为小黑不是专业的开发人员,对redis的理解可能会有很多错误之处,欢迎各位师傅批评指正,以免本文误人子弟,感激不尽!

0x07 参考文献

https://jingyan.baidu.com/article/642c9d345e3606644a46f7a2.html https://www.cnblogs.com/me80/p/7218883.html https://zhuanlan.zhihu.com/p/36529010 https://blog.csdn.net/u013593306/article/details/51228672?utm_source=copy https://blog.csdn.net/w433668/article/details/82315468

END.


欢迎留言~

欢迎关注~

欢迎点赞~

a916e33f0475a1b65b7e4e1f9327998d.png

我是小黑,喵~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值