【攻防实战】Redis未授权RCE联动metasploit打穿三层内网(上)

到底要怎样努力,才能超脱那芸芸众生的苦海

前言

网络安全技术学习,承认⾃⼰的弱点不是丑事,只有对原理了然于⼼,才能突破更多的限制。

拥有快速学习能力的安全研究员,是不能有短板的,有的只能是大量的标准板和几块长板。

知识⾯,决定看到的攻击⾯有多⼴;知识链,决定发动的杀伤链有多深。

最终效果

最终达到的效果如下

网络拓扑图

DMZ区渗透

信息收集

kali攻击机优先扫描目标IP段存活网络

扫描存活IP端口详细信息

可以看到目标站点开放了22、80、81、6379端口

Laravel Debug mode RCE(CVE-2021-3129)

访问80端口发现是一个博客网站

访问81端口发现是Laravel框架且版本是Laravel v8.29.0 (PHP v7.4.14)

Laravel是一套简洁、开源的PHP Web开发框架,旨在实现Web软件的MVC架构。而在2021年01月12日,Laravel被披露存在一个远程代码执行漏洞(CVE-2021-3129)。当Laravel开启了Debug模式时,由于Laravel自带的Ignition 组件对file_get_contents()和file_put_contents()函数的不安全使用,攻击者可以通过发起恶意请求,构造恶意Log文件等方式触发Phar反序列化,最终造成远程代码执行。目标站点的Laravel版本正好在今年刚爆出来的Laravel Debug mode RCE漏洞(CVE-2021-3129)的范围内。

直接使用工具进行Getshell(后面分享代码审计系列专题的时候,会同步分享Laravel 反序列化漏洞详细分析过程)

成功以后使用蚁剑或者哥斯拉连接即可。

webshell地址:

复制代码
http://xxx.xxx.xxx.xxx/shell.php

密码:one

进行信息收集,发现是一个docker环境

1.判断根目录下是否存在 .dockerenv 文件

2.查询系统进程的cgroup信息是否包含docker字符

环境变量提权

使用suid的方法进行提权。查找SUID提权的命令如下:尝试搜索寻找带有SUID的文件

通过执行上述命令,攻击者可以遍历任何可执行文件,在这里我们可以看到/home/jobs目录下有一个shell文件,并且其具有SUID权限:

cd到/home/jobs目录下,ls一下,确实看到了名为shell的可执行文件。我们运行一下这个文件:

可以看到shell文件执行了ps命令,并且未使用绝对路径,源码在demo.c中可以清楚看到所以我们可以尝试更改$PATH来执行我们的恶意程序,从而获得目标主机的高权限shell。

首先nc开启监听

使用蚁剑加载脚本执行的插件反弹一个shell到kali进行操作

然后在shell中执行如下命令:

开始提权,写恶意ps命令,ps内容/bin/bash就是进入命令行,然后修改环境变量,这样shell.sh就找到了tmp下的ps命令,然后以shell的root执行了ps,也就是以root进入了命令行,这个方式叫做环境变量劫持

将/tmp添加到环境变量中,并且先加载执行/tmp里的程序

可以看到已经获取到了root权限

docker上线msf

现在需要把这个shell持久化一下,通过msf生成木马

然后msf开启监听

安装wget并且通过wget把上面生成的木马下载下来

安装完后,下载执行这个上面生成的木马

msf收到meterpreter会话

Redis未授权

之前进行端口扫描时发现该机器开着6379,尝试Redis弱口令或未授权访问

尝试进行连接Redis,连接成功,存在未授权访问

尝试写入SSH公钥

kali生成ssh公钥hack

将公钥导入key.txt文件(前后用\n换行,避免和Redis里其他缓存数据混合),再把key.txt文件内容写入目标主机的redis缓冲里:

将公钥导入key.txt文件

把key.txt文件内容写入目标主机的redis缓冲中

设置redis的备份路径为/root/.ssh/

设置保存文件名为authorized_keys

将数据保存在目标服务器硬盘上

连接

输入私钥

成功连接

成功进行连接,简单进行了信息收集,发现很幸运,是一台双网卡机器,存在另一个网段

因为之前的shell反弹不了,所以看一下nginx的配置文件是不是做了反向代理

可以看到nginx反向代理的标志------"proxy_pass",可以知到Ubuntu (Web 1) 服务器上的nginx把80端口上收到的请求转发了 ,将81端口上收到的请求转发给了内网办公区网络的Web服务器xxx.xxx.xxx.xxx

Ubuntu (Web 1) 上线msf

现在需要把这个shell持久化一下,通过msf生成木马

然后msf开启监听

通过wget把上面生成的木马下载下来

成功上线

获取内网网段地址:

添加路由

这一步也可以使用run post/multi/manage/autoroute自动添加路由

之后使用auxiliary/scanner/portscan/tcp对上面获取到的新的网段进行扫描

结果扫描出xxx.xxx.xxx.10、xxx.xxx.xxx.20,xxx.xxx.xxx.30其中xxx.xxx.xxx.10是本机

也可以使用使用nmap进行扫描,不过扫描之前,需要使用auxiliary/server/socks4a模块,然后配置一下proxychain 代理:

设置proxychain代理,在kali中编辑

对目标进行扫描。

解释一下,这里为什么用 '-Pn -sT',因为socks4a不支持icmp协议,所以要使用不进行ping命令的-Pn,'-sT'则代表进行Tcp扫描。

这里说明一下最新版的metasploit是支持socks5的,之前用旧版本的metasploit只支持socks4a。

办公区域渗透

Docker 特权模式逃逸

原理

特权模式于版本0.6时被引入Docker,允许容器内的root拥有外部物理机root权限,而此前容器内root用户仅拥有外部物理机普通用户权限。

使用特权模式启动容器,可以获取大量设备文件访问权限。因为当管理员执行docker run ---privileged时,Docker容器将被允许访问主机上的所有设备,并可以执行mount命令进行挂载。

当控制使用特权模式启动的容器时,docker管理员可通过mount命令将外部宿主机磁盘设备挂载进容器内部,获取对整个宿主机的文件读写权限,此外还可以通过写入计划任务等方式在宿主机执行命令。

漏洞利用

查看磁盘文件

查看设备文件

有三个磁盘文件和N个设备文件,将/dev/sda1挂载到自己创建的文件夹

在docker中新建一个/hello目录用来挂载文件:

如上图所示挂载成功了,此时我们就可以通过访问容器内部的/hack路径来达到访问整个宿主机的目的

在docker容器里挂载一个宿主的本地目录,这样某些容器里输出的文件,就可以在本地目录中打开访问了。

看一下隐藏文件

可以看到有ubuntu这个用户

接下来就可以将我们自己生成的ssh秘钥写入到/hack/home/ubuntu/.ssh目录中的authorized_keys文件中,写入成功之后就可以使用该密钥进行登陆该机器

在Ubuntu (Web 1) 上生成ssh秘钥

赋予权限

拿到hack.pub中的内容

输入密钥,成功登录

信息收集,发现很幸运是一台多网卡机器,还存在新的网段

CVE-2021-3493

linux kernel一般指Linux内核。Linux是一种开源电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。

linux内核中的overlayfs文件系统中没有正确地验证用户名称空间和底层文件系统中文件功能的设置。由于非特权用户名称空间和Ubuntu内核中允许非特权覆盖的补丁的组合,攻击者可以使用它来获得更高的特权。

漏洞影响版本

Ubuntu 20.10

Ubuntu 20.04 LTS

Ubuntu 18.04 LTS

Ubuntu 16.04 LTS

Ubuntu 14.04 ESM

因为登录的是ubuntu用户,刚好今年ubuntu机器出了一个内核提权漏洞,该机器在影响范围内

先进行提权

进入到tmp目录

将下载的exploit.c的内容粘贴到该文件中

编译

成功提权,那么接下来该将这台机器上线MSF继续进攻内网了

网络安全感悟

网络安全是一个长期的过程,因为网络安全没有终点,不管是网络安全企业,还是在网络安全行业各种不同方向的从业人员,不管你选择哪个方向,只有在这条路上坚持不懈,才能在这条路上走的更远,走的更好,不然你肯定走不远,迟早会转行或者被淘汰,把时间全浪费掉。

如果你觉得自己是真的热爱网络安全这个行业,坚持走下去就可以了,不用去管别人,现在就是一个大浪淘金的时代,淘下去的是沙子,留下来的才是金子,正所谓,千淘万漉虽辛苦,吹尽狂沙始到金,网络安全的路还很长,一生只做一件事,坚持做好一件事!

声明

文笔生疏,措辞浅薄,敬请各位大佬不吝赐教,万分感谢。

免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失,均由使用者本人负责, 文章作者不为此承担任何责任。

转载声明:平凡安全 拥有对此文章的修改和解释权,如欲转载或传播此文章,必须保证此文章的完

复制代码
CSDN:
https://rdyx0.blog.csdn.net/

公众号:
https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg5NTU2NjA1Mw==&action=getalbum&album_id=1696286248027357190&scene=173&from_msgid=2247485408&from_itemidx=1&count=3&nolastread=1#wechat_redirect

博客:
https://rdyx0.github.io/

先知社区:
https://xz.aliyun.com/u/37846

SecIN:
https://www.sec-in.com/author/3097

FreeBuf:
https://www.freebuf.com/author/%E5%9B%BD%E6%9C%8D%E6%9C%80%E5%BC%BA%E6%B8%97%E9%80%8F%E6%8E%8C%E6%8E%A7%E8%80%85
相关推荐
松涛和鸣35 分钟前
72、IMX6ULL驱动实战:设备树(DTS/DTB)+ GPIO子系统+Platform总线
linux·服务器·arm开发·数据库·单片机
likangbinlxa1 小时前
【Oracle11g SQL详解】UPDATE 和 DELETE 操作的正确使用
数据库·sql
r i c k1 小时前
数据库系统学习笔记
数据库·笔记·学习
野犬寒鸦2 小时前
从零起步学习JVM || 第一章:类加载器与双亲委派机制模型详解
java·jvm·数据库·后端·学习
IvorySQL2 小时前
PostgreSQL 分区表的 ALTER TABLE 语句执行机制解析
数据库·postgresql·开源
·云扬·3 小时前
MySQL 8.0 Redo Log 归档与禁用实战指南
android·数据库·mysql
IT邦德3 小时前
Oracle 26ai DataGuard 搭建(RAC到单机)
数据库·oracle
惊讶的猫3 小时前
redis分片集群
数据库·redis·缓存·分片集群·海量数据存储·高并发写
不爱缺氧i3 小时前
完全卸载MariaDB
数据库·mariadb
期待のcode3 小时前
Redis的主从复制与集群
运维·服务器·redis