首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >从WebShell到域控实战详解

从WebShell到域控实战详解

作者头像
用户1631416
发布于 2019-11-18 14:53:16
发布于 2019-11-18 14:53:16
2.1K1
举报
文章被收录于专栏:玄魂工作室玄魂工作室

渗透环境

首先介绍此次渗透的环境:假设我们现在已经渗透了一台服务器PAVMSEF21,该服务器内网IP为10.51.0.21。扫描后发现内网网络结构大概如图所示,其中PAVMSEF21是连接外网和内网的关键节点,内网其他服务器均不能直接连接。

我们的渗透目标是通过一个普通的WebShell权限一步步地获得域管权限,从而掌控整个内网。

一. 提升权限

上传免杀的Payload到机器名为PAVMSEF21、IP为10.51.0.21的服务器上,然后在“中国菜刀”或者WebShell下运行,如图所示。

获得Meterpreter Shell后要做的第一件事情就是提权。通常,在渗透过程中很有可能只获得了一个系统的Guest或User权限。低的权限级别将使我们受到很多的限制,所以必须将访问权限从Guset提升到User,再到Administrator,最后到SYSTEM级别。

我们先尝试利用本地溢出漏洞提权,即使用本地漏洞的利用程序(Local Exploit)提升权限。也就是说,通过运行一些现成的、能造成溢出漏洞的Exploit,把用户从User组或其他系统用户组提升到Administrator组(或root)。

此时,我们获取的权限是一个普通域用户权限,如图所示。

首先利用本地溢出漏洞提权,发现服务器补丁打得很全,尝试利用MS1505、MS15078等,都以失败告终,如图所示。

再尝试绕过Windows账户控制(UAC),我们现在具有一个普通域用户的权限。利用Bypass UAC模块提权,又以失败告终,如果成功会返回一个新的Meterpreter Shell,如图所示。

使用Bypass UAC模块进行提权时,系统当前用户必须在管理员组,而且用户账户控制程序UAC设置为默认,即“仅在程序试图更改我的计算机时通知我”,而且Bypass UAC模块运行时会因为在目标机上创建多个文件而被杀毒软件识别。我们没能绕过UAC,可能是这两个原因。

其实提权没有成功也不要紧,我们还是可以以此服务器为跳板,攻击其他服务器的。

二. 信息收集

我们此时虽然提权不成功,但还是可以进行域渗透测试的。有了内网的第一台机器的权限后,收集信息是很关键的一步,也是内网渗透中不可或缺的一部分。

首先要查看当前机器的网络环境,收集域里的相关信息,包括所有的用户、所有的计算机,以及相关关键组的信息,下面列出了常用的命令及其作用,如图所示。

net user /domain:查看域用户。

net view /domain:查看有几个域。

net view /domain:XXX:查看域内的主机。

net group /domain:查看域里面的组。

net group “domain computers” /domain:查看域内所有的主机名。

net group “domain admins” /domain:查看域管理员。

net group “domain controllers” /domain:查看域控制器。

net group “enterprise admins” /domain:查看企业管理组。

nettime/domain:查看时间服务器。

通过收集以上信息,我们可以分析出很多重要的线索,例如内网是怎么划分的,各机器名的命名规则,根据机器名尝试找出重要人物的计算机,以及目标机是否为多层域结构,关键是要探测出域管理员的名字和域服务器的名字等信息。

三. 获取一台服务器的权限

我们的目标是域服务器,此时有两种情况:当前服务器可以直接攻击域服务器和不可以直接攻击域服务器。不可以直接攻击又分为两种情况:如果是权限不够就需要提升权限;如果是不能连接到域服务器,则需要攻击内网中某个可以连接到域服务器的服务器,然后以此为跳板再攻击域服务器。

现在因为权限问题不可以直接攻击域服务器,整理下思路,可以采取以下方法继续渗透。

— 使用Meterpreter目前拥有的权限添加内网路由,进行弱口令扫描。

— 使用PowerShell对内网进行扫描(要求目标机是Windows 7以上的服务器)。

— 架设Socks4a,然后Socks会自动进行内网扫描。

— 利用当前权限进行内网IPC$渗透。

— 其他方法。

通过上面的分析,我们先选择最简单的方法,在net view的机器名里选择一个和我们机器名相似的服务器来试试,不出意外的话,成功率很高,如图所示。

下面再给读者温习下经典的IPC$入侵。

IPC$入侵,即通过使用Windows系统中默认启动的IPC$共享获得计算机控制权的入侵,在内网中极其常见。

假设现在有一台IPC$主机:127.0.0.25,输入以下命令。

D:>net use \127.0.0.25\ipc$ #连接127.0.0.25的IPC$共享

D:>copy srv.exe \127.0.0.25\ipc$ #复制srv.exe上去

D:>net time \127.0.0.25 #查时间

D:>at\127.0.0.25 10:50 srv.exe #用at命令在10点50分启动srv.exe(注意这里设置的时间要比主机时间快)

上述命令中的at就是让计算机在指定的时间做指定事情的命令(例如运行程序)。

这里把免杀的Payload上传到PAVMSEP131服务器,然后利用at命令启动Payload,反弹回Meterpreter Shell,具体操作如图所示。

将木马复制到目标服务器

查看系统时间

使用at命令启动木马

接着返回handler监听,可以看到反弹成功了,我们获得了PAVMSEP131服务器的Meterpreter Shell,如图所示。

我们先看看PAVMSEP131服务器的信息和现在的权限,如图所示。

可以看到没有SYSTEM权限,说明既可以用Mimikatz等工具,也可以用run post/windows/gather/hashdump来抓Hash。

我们在用Mimikatz抓Hash之前要注意一点:如果服务器安装的是64位操作系统,要把Mimikatz进程迁移到一个64位的程序进程中,才能查看64位系统的密码明文,32位系统没有这个限制。

这里使用Mimikatz抓Hash,具体操作如图所示。

接着查看抓到的域用户的权限,如图所示。

四. PowerShell寻找域管在线服务器

Windows PowerShell是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用.NET Framework的强大功能。PowerShell还允许将几个命令组合起来放到文件里执行,实现文件级的重用,也就是说有脚本的性质。

将Hunter模块上传到主机名为PAVMSEP131,IP为10.51.0.131的服务器中,然后输入Invoke-UserHunter,如图所示。

具体命令如下所示。

powershell.exe -exec bypass -Command "&{Import-Module .\powerview.ps1;Invoke-UserHunter}"`

可以看到域管理员当前在线登录的机器主机名为PAVMSXD30,IP为10.51.0.30,此时需要入侵此服务器,然后将其迁移到域管理登录所在的进程,这样便拥有了域管理的权限。

五. 获取域管权限

利用获取到的HASH,我们成功地获取到主机名PAVMSXD30,IP为10.51.0.30的服务器权限,接下来就可以渗透域控了。

首先利用getsystem命令提升权限,如图所示。

可以看到我们现在的UID是sonicwall,从前面获取的域管理员账号信息中已知sonicwall是域管理员。

然后利用ps命令找到域管理所在的进程,把Meterpreter Shell进程迁移到此进程中,成功后就获得了域管理权限,如图所示。

这里除了迁移进程外,也可以使用Metasploit中的窃取令牌功能,同样能获得获得域管理权限。

接着查看主域控IP,这里使用net time命令,一般来说时间服务器都是域服务器,如图所示。

可以看到域服务器的主机名为PAVMSAD64,IP地址为10.51.0.63。

现在我们可以使用经典的IPC$入侵来反弹一个Meterpreter Shell,具体操作如图所示。

提示at命令已经被弃用,现在使用schtasks添加计划任务,因为目标机的系统是Windows 2012。因为现在已经在域管理员权限下面了,所以要给域控添加一个管理员账户,如图所示。

利用如下命令确认账户是否添加成功,如图所示。

可以看到我们已经成功添加了管理员账户。

六. 登录域控制器

现在域控的权限也终于到手了。接下来就要登陆域控,然后抓域控的Hash。

整理下思路,常见的登录域控的方式有以下几种。

1.利用IPC上传AT&Schtasks远程执行命令。 2.利用端口转发或者Socks登录域控远程桌面。 3.登录对方内网的一台电脑使用pstools工具包中的PsExec来反弹Shell。 4.使用Metasploit下的psexec, psexec_psh;Impacket psexec;pth-winexe;Empire Invoke-Psexec等PsExec类工具反弹shell。 5.使用Metasploit下的smb_login来反弹Meterpreter。 6.使用WMI(Windows Management Instrumentation)来进行攻击。 7.使用PsRemoting posershel远程执行命令。其他一些方法。

这里采用最常见也是效果最好的,Metasploit下的PsExec来反弹Meterpreter,使用时注意以下这两点,如图所示。

— MSF中的PsExec模块。

— cuestom模块,建议使用类似Veil之类的工具来生成免杀的Payload。

这里采用最常见也是效果最好的方式——Metasploit下的PsExec来反弹Meterpreter,使用时注意以下两点,如图所示。

— MSF中的PsExec模块。

— cuestom模块,建议使用类似Veil之类的工具生成免杀的Payload。

可以看到已经反弹成功了,然后先迁移进程,查看域控的系统信息和sessions控制图,如图所示。

思路:可以看到现阶段控制的session共有5个。session1为WebShell反弹,session2利用ipc$入侵,渗透session4是为了获取域管在线服务器,session5为域。整个渗透过程一环套一环,环环相扣。

有了域控的权限,接着来抓Hash,常用方法有以下几种。

— 使用Metasploit自带的dumphash或者smart_hashdump模块导出用户的Hash。

— 利用PowerShell的相应模块导出Hash。

— 使用WCE、Mimikatz等工具。

— 其他方法。

这里使用了Metasploit自带的dumphash模块。需要注意:要想使用此模块导出Hash,必须要有SYSTEM的权限才行,具体操作如图所示。

七. SMB爆破内网

有了域控的密码,接下来只要快速在内网扩大控制权限就好,具体操作如下所示。

— 利用当前获取到的域控账户密码,对整个域控IP段进行扫描。

— 使用SMB下的smb_login模块。

— 端口转发或者Socks代理进内网。

我们先在Metasploit添加路由,然后使用smb_login模块或者psexec_scanner模块进行爆破,具体操作如图所示。

可以看出,我们获取了大量内网服务器的密码,下面就可以畅游内网了。可以使用Meterpreter的端口转发,也可以使用Metasploit下的Socks4a模块或者第三方软件。

这里简单地使用Meterpreter的端口转发即可,如图所示。

八. 清理日志

清理日志主要有以下几个步骤,如图所示。

— 删除之前添加的域管理账号。

— 删除所有在渗透过程中使用过的工具。

— 删除应用程序、系统和安全日志

— 关闭所有的Meterpreter连接。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 玄魂工作室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
好厉害!
好厉害!
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
java前端好学还是后端好学,一篇文章帮你解答
整体来说,一面的基础性问题比较多,所以博主基本都答出来了,准备过还是有些用处的。所以一面完了感觉还不错,接着第二天下午就二面了。
全栈程序员站长
2022/09/15
7000
java前端好学还是后端好学,一篇文章帮你解答
偷偷盘点一下京东研发岗薪资
京东这几天的热度真的非常高,据说零售部门开始严查考勤,并且调整了午休时间,整整缩短了一个小时,从原来的 11:30-13:30 调整为 12:00-13:00。
沉默王二
2024/05/23
1.5K0
偷偷盘点一下京东研发岗薪资
java程序员|超详细面经(四面一总结),助你逆袭!
面经不同的人问的问题很可能不同,不能押宝在这里,不过帮助大家用来做模拟还是不错的~以下按收到offer顺序列出
Java架构技术
2018/09/19
1.4K0
java程序员|超详细面经(四面一总结),助你逆袭!
【阿里面经分享】蚂蚁金服研发面经+阿里中间件研发面经+面试题
之前面了阿里中间件的提前批,不过没走流程。同期还面了蚂蚁中间件的两轮面试,被告知不走流程就不能面了,所以也没面完。
本人秃顶程序员
2019/05/07
1.6K0
【阿里面经分享】蚂蚁金服研发面经+阿里中间件研发面经+面试题
从Java到Vue:一位全栈工程师的实战面试全记录
一位Java全栈工程师的实战面试记录,涵盖技术栈和项目经验。
用魔法才能打败魔法
2025/10/21
1130
从Java到Vue:一位全栈工程师的实战面试全记录
秋招提前批小结(CVTE一面挂、阿里三面挂)
1.自我介绍 2.有没有做过JavaWeb相关的项目?你觉得难点在哪里呢? 3.你这个博客系统有没有加权限系统?如果被拦截封包获取了账号密码怎么办?(没加,凉拌..) 4.用过事务吗?怎么用的举一个实际的例子? 5.Spring中的@Transactional放在类级别和方法级别上有什么不同?(不知道..) 6.你对Java哪一个方面的知识熟悉? 7.List/ Set/ Map有什么区别? 8.谈一下HashMap插入元素的过程? 9.HashMap安全吗?那有安全的Map吗? 10.多线程并发有什么问题?刚才安全的Map是如何解决这个问题的? 11.Java中实现多线程有哪些方式?
我没有三颗心脏
2018/09/14
1.5K1
蚂蚁金服Java研发三面(电面+现场面),终获offer分享我的面经感悟
一份初得蚂蚁面试机会(本人非985/211,蚂蚁真的不是很在乎学历!!!),有了一次社招机会,前后经历三关,受益匪浅,在此与各位朋友分享经历与心得。
烂猪皮
2021/06/09
1.1K0
蚂蚁金服Java研发三面(电面+现场面),终获offer分享我的面经感悟
面试官:new一个对象有哪两个过程?
Java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话,就会先通过类的全限定名来加载。加载并初始化类完成后,再进行对象的创建工作。
Java技术栈
2019/10/29
2K0
跟小伟一起学习类加载机制
我们在学习 java 基础的时候,从宏观上了解了一个类到运行大致是:.java 文件通过 javac 编译器编译得到 .class 文件,在用到该类时,jvm 会加载该 class 文件,并创建对应的 class 对象,将 class 文件加载到 jvm 的内存当中,这个过程也被称之为类加载过程。
niceyoo
2020/05/26
4030
蚂蚁金服面经(3+4)
【每日一语】我和这个世界不熟。这并非是我撕裂的原因。我依旧有很多完整,至少我要成全我自己。──北岛《我和这个世界不熟》
牛客网
2018/08/10
7780
面试官:请你谈谈 Java 的类加载过程
刚刚走出校门的应届毕业生,如果在去寻求一份 Java 开发的工作时,你的面试官很有可能一边看着你的简历,一边漫不经心地问你:了解过 Java 类的加载过程吗?
CG国斌
2020/05/14
2.2K0
一步之差进入大厂,下定决心钻透java所有面试题,顺利通过!
这篇文章真的是给大家分享一篇我自己血的教训,本人是一个勤勤恳恳、任劳任怨的java程序猿一直都在自己的岗位上发光发热,耐不住今年疫情小心思就发芽了,想要跳槽到大厂上班,在家里那简直就是头悬梁锥刺股,因为身边也没有太多大厂上班经验的朋友,所以自己也算是无头苍蝇一样头悬梁锥刺股的看书、做题,但是确实自己看的题型还是不够全面,面试官问的问题都是比较全面的,可想而知是挂了。
程序员白楠楠
2021/01/05
3740
上岸 2022 字节 Java 后端实习面经
这是一位读者的 2022 字节跳动 Java 后端实习面经,已经拿到了 offer。字节虽然用 Go 居多,但也是有挺多 Java 岗位的招聘。
Guide哥
2022/11/07
1.3K0
上岸 2022 字节 Java 后端实习面经
JVM类加载、验证、准备、解析、初始化、卸载过程详解
任何程序都需要加载到内存才能与CPU进行交流,同理, 字节码.class文件同样需要加载到内存中,才可以实例化类。 ClassLoader的使命就是提前加载.class 类文件到内存中,在加载类时,使用的是Parents Delegation Model(溯源委派加载模型)。
JavaEdge
2021/02/22
4810
JVM类加载、验证、准备、解析、初始化、卸载过程详解
热乎乎的阿里面经,攒人品
一面: 1.自我介绍一下,然后问你最擅长哪一方面(我说虚拟机、集合) 2.他说HashMap我现在都不敢问了,出过很多笑话,很多人都是背的,自己没办法判断是看的还是背的 3.简单说下HashMap的get方法实现 4.HashMap数组的第一个元素存的是什么(我不知道然后他说HashMap可以存'呐亩'吗,我听成能不能存enum,我说可以可以能存Integer,String,enum,然后他说是null,不是enum...) 5.HashMap和Hashtable的区别(线程安全不安全,能否存null,数
牛客网
2018/04/28
7620
南京渣硕求职路(网易美团头条百度面经)+Java学习路线(拙见)
首先自我介绍一下,楼主南京渣硕一枚,秋招主要投递JAVA后台岗位,面过以下公司:网易+美团+头条+百度+华为+中兴,拿下了网易和中兴提前批offer,华为依旧泡池子,美团四面挂,头条三面挂,百度今天下午二面没去了。其他一些公司收到了面试,没去参加了。
Java架构技术
2019/07/22
9690
从Java全栈到云原生:一位资深开发者的实战经验分享
一位Java全栈开发者的面试实录,涵盖技术栈与实战经验分享。
用魔法才能打败魔法
2025/09/01
1780
从Java全栈到云原生:一位资深开发者的实战经验分享
我是如何通过阿里面试的?
笔者参加18年阿里春招,有幸最终拿到阿里offer,base杭州,岗位客户端开发。一直忙于其他事情,拿到意向已经过去十多天,在此分享一些关于面试的干货,攒一波RP,回馈社会。 从阿里面试说起,阿里的面试一般采用电话面试的形式。笔者一共参加五轮面试,一面电话面试+在线编程,二面视频面试+在线编程,三面部门boss面试,四面交叉面,五面HR。在此分享五轮面试的大概问题吧,笔者是android岗开发,所问题型会更偏android。 一面 阿里的面试官都很和蔼。一面面试官听声音感觉应该是入职两三年的感觉。上来自我
用户1269200
2018/06/22
2.4K0
【Java 程序员面试 + 学习指南】覆盖互联网一线大厂 Java 程序员所需面试知识点与技巧
为帮助Java程序员准备互联网大厂面试,我将从面试知识点和面试技巧两方面入手,为你整合关键信息。其中知识点涵盖Java基础、JVM、框架等;技巧包括简历撰写、项目经验阐述等,助你提升面试成功率。
啦啦啦191
2025/06/07
2410
【Java 程序员面试 + 学习指南】覆盖互联网一线大厂 Java 程序员所需面试知识点与技巧
【Java面经】非科班渣硕面经
楼主某末流985渣硕一枚,磕盐不会,偶然接触了下编程,然后又稍微学了学Java,后面就走上了程序猿的道路,今年四月侥幸去菊厂实习了一波(虽然没学到东西)。
牛客网
2018/08/01
1.1K0
推荐阅读
相关推荐
java前端好学还是后端好学,一篇文章帮你解答
更多 >
交个朋友
加入腾讯云官网粉丝站
双11活动抢先看 更有社群专属礼券掉落
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档