Web安全入门与信息搜集
马哥教育网络安全课程实战博客 · 第05篇 对应课程章节:第13-14章(Web安全攻击初体验与常用工具,Burp Suite、Webshell管理工具和信息搜集) 实验环境:4台 Ubuntu 24.04 服务器(8vCPU / 16GB),攻击机 113.47.1.165,目标机 192.168.1.100/101/102
一、前言
本篇正式进入Web安全实战。首先介绍OWASP Top 10和Web攻击方法论,然后详细讲解Burp Suite的使用、Webshell管理工具,最后系统讲解信息搜集技术并在DVWA靶场上进行实操。
二、OWASP Top 10 概览
OWASP(Open Web Application Security Project)每三年发布Web应用十大安全风险。以下是2021版本(OWASP Top 10:2021):
| 排名 | 漏洞类型 | 说明 | 风险等级 |
|---|---|---|---|
| A01 | 访问控制失效(Broken Access Control) | 越权访问、未授权操作 | 高危 |
| A02 | 加密机制失效(Cryptographic Failures) | 明文传输、弱加密算法 | 高危 |
| A03 | 注入(Injection) | SQL注入、命令注入、LDAP注入 | 高危 |
| A04 | 不安全设计(Insecure Design) | 缺乏安全设计原则 | 中危 |
| A05 | 安全配置错误(Security Misconfiguration) | 默认配置、目录列表开启 | 中危 |
| A06 | 易受攻击和过时的组件 | 使用含已知漏洞的第三方库 | 中危 |
| A07 | 身份认证与身份识别失效 | 弱口令、会话固定、暴力破解 | 高危 |
| A08 | 软件与数据完整性失效 | 未验证的更新、反序列化漏洞 | 中危 |
| A09 | 安全日志与监控失效 | 缺乏日志记录和告警 | 低危 |
| A10 | 服务端请求伪造(SSRF) | 服务端发起未授权请求 | 高危 |
三、Web攻击方法论
3.1 渗透测试标准流程
1. 信息搜集(Reconnaissance)
├── 被动信息搜集:搜索引擎、DNS记录、WHOIS
└── 主动信息搜集:端口扫描、目录爆破、指纹识别
2. 漏洞发现(Vulnerability Discovery)
├── 自动化扫描:Burp Scanner、AWVS、Nessus
└── 手动测试:逐参数测试注入、XSS、越权等
3. 漏洞利用(Exploitation)
├── 获取权限:SQL注入提取数据、文件上传获取Webshell
└── 权限提升:内核漏洞、配置错误提权
4. 后渗透(Post-Exploitation)
├── 内网渗透、横向移动
└── 数据提取、痕迹清理
5. 报告编写(Reporting)
└── 漏洞描述、复现步骤、修复建议
3.2 Web攻击面分析
对目标Web应用,攻击面包括:
- 输入点:URL参数、表单字段、HTTP头(Cookie、User-Agent、Referer)、JSON/XML Body
- 功能点:登录注册、文件上传/下载、搜索、数据展示、API接口
- 隐藏内容:备份文件、源码泄露、配置文件、管理后台
四、Burp Suite 详细使用
4.1 安装与基础配置
# 方式1:直接下载JAR包(需Java环境)
sudo apt install default-jre -y
wget https://portswigger.net/burp/releases/download?product=community&version=2024.1 -O burpsuite.jar
java -jar burpsuite.jar
# 方式2:使用Flatpak安装
flatpak install flathub com.portswigger.burp.community
4.2 代理配置(Proxy模块)
Burp Suite作为中间人代理拦截HTTP流量:
- 设置Burp代理监听:默认监听 127.0.0.1:8080
- 配置浏览器代理:将Firefox/Chrome代理设置为 127.0.0.1:8080
- 安装CA证书(HTTPS拦截需要):
- 浏览器访问
http://burp - 下载
cacert.der并导入到浏览器受信任根证书
- 浏览器访问
# 使用命令行配置Firefox代理
# 或使用FoxyProxy插件快速切换
拦截操作示例:
1. 开启 Intercept On
2. 浏览器访问 http://192.168.1.100/login.php
3. Burp拦截到请求:
POST /login.php HTTP/1.1
Host: 192.168.1.100
Content-Type: application/x-www-form-urlencoded
username=admin&password=test&Login=Login
4. 可修改password参数后 Forward 发送
5. 或发送到 Repeater 进行反复测试
4.3 Repeater模块 — 手动重发请求
Repeater是手动测试最常用的模块:
- 在Proxy中右键 → Send to Repeater
- 在Repeater中修改请求参数
- 点击Send发送,查看响应
- 反复修改Payload,观察响应差异
测试SQL注入示例:
原始请求参数: id=1
测试Payload:
id=1' → 500错误,说明可能存在注入
id=1' -- - → 正常返回,确认存在注入
id=1' ORDER BY 1-- - → 正常
id=1' ORDER BY 5-- - → 错误,确定字段数
4.4 Intruder模块 — 自动化Fuzz
Intruder支持四种攻击模式:
| 模式 | 说明 | 适用场景 |
|---|---|---|
| Sniper(狙击手) | 单变量,逐个替换 | 单参数Fuzz |
| Battering Ram(撞锤) | 多变量,同一字典 | 多参数同Payload |
| Pitchfork(集束弹) | 多变量,并行对应 | 用户名+密码对应 |
| Cluster Bomb(破击炮) | 多变量,全排列 | 用户名×密码爆破 |
暴力破解示例:
1. 将密码参数标记为变量 §password§
2. 选择 Sniper 模式
3. 加载密码字典 payload.txt
4. 在 Options → Grep - Match 中添加匹配规则:
- "Login failed"(失败标志)
- "Welcome"(成功标志)
5. Start Attack
6. 观察结果,Length异常的响应通常为成功登录
4.5 Scanner模块(专业版)
Scanner自动爬取并扫描Web应用漏洞:
- 配置目标站点范围(Target → Scope)
- 右键站点 → Active Scan
- Burp自动爬取所有页面,对每个参数进行漏洞测试
- 查看Issues面板中的发现结果
五、Webshell管理工具
Webshell是上传到目标服务器的恶意脚本,用于远程控制。Webshell管理工具提供加密通信和文件管理功能。
5.1 蚁剑(AntSword)
蚁剑是开源的Webshell管理工具,支持PHP/ASP/JSP等多种类型。
# 安装蚁剑(需Node.js环境)
git clone https://github.com/AntSwordProject/antSword.git
cd antSword
npm install
npm start
使用流程:
- 首先在目标服务器上传Webshell文件(如
shell.php) - 在蚁剑中添加Shell,填写URL和连接密码
- 连接成功后可进行文件管理、虚拟终端、数据库操作
<!-- 示例:一句话木马(仅用于教学演示) -->
<?php @eval($_POST['cmd']); ?>
5.2 冰刃(Behinder)
冰刃(Behinder)采用加密流量通信,流量特征不易被WAF检测:
- 支持PHP/ASP/JSP/.NET
- 使用AES加密通信
- 内置内存马功能(不落地文件)
- 插件化设计,支持自定义插件
5.3 哥斯拉(Godzilla)
哥斯拉(Godzilla)功能全面的Webshell管理工具:
- 支持4种加密器(AES/RAW/Base64/自定义)
- 支持6种载荷类型
- 内置隧道代理功能
- 支持内存Shell
5.4 Webshell管理工具对比
| 工具 | 开源 | 加密通信 | 内存马 | 适用场景 |
|---|---|---|---|---|
| 蚁剑 | 是 | 弱 | 否 | 基础测试、学习 |
| 冰刃 | 否 | 强(AES) | 是 | 绕过WAF、隐蔽通信 |
| 哥斯拉 | 否 | 强 | 是 | 复杂环境、隧道代理 |
安全提示:Webshell管理工具仅用于授权渗透测试。在未授权系统上上传Webshell属于违法行为。
六、信息搜集技术
信息搜集是渗透测试的第一步,搜集到的信息越全面,后续攻击成功率越高。
6.1 被动信息搜集
6.1.1 WHOIS查询
# 查询域名注册信息
whois example.com
# 关键信息:注册人、注册邮箱、DNS服务器、注册/过期时间
6.1.2 DNS信息
# DNS记录查询
dig example.com A # A记录
dig example.com MX # 邮件记录
dig example.com NS # DNS服务器
dig example.com TXT # TXT记录
# 反查DNS
dig -x 192.168.1.100
6.1.3 搜索引擎收集
利用搜索引擎发现目标信息:
site:example.com # 搜索目标站点所有被收录页面
site:example.com filetype:pdf # 搜索PDF文件
site:example.com inurl:admin # 搜索包含admin的URL
site:example.com intitle:登录 # 搜索标题包含"登录"的页面
6.2 子域名枚举
子域名发现是扩大攻击面的重要手段:
# 安装子域名扫描工具
sudo apt install subfinder -y # 或从GitHub安装
# 使用subfinder
subfinder -d example.com -o subdomains.txt
# 使用amass(更全面但较慢)
sudo apt install amass -y
amass enum -d example.com -o amass_results.txt
# 使用OneForAll(综合工具)
git clone https://github.com/shmilylty/OneForAll.git
cd OneForAll && pip3 install -r requirements.txt
python3 oneforall.py --target example.com run
6.3 端口扫描(Nmap)
# TCP全连接扫描(准确但慢)
nmap -sT -p- 192.168.1.100
# SYN半开扫描(快速,需root)
sudo nmap -sS -p 1-1000 192.168.1.100
# 服务版本+脚本扫描
nmap -sC -sV -p 80,443,8080 192.168.1.100
# 输出结果到文件
nmap -sV -oN scan_result.txt 192.168.1.100
实际扫描结果示例:
Nmap scan report for 192.168.1.100
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu
80/tcp open http Apache httpd 2.4.52 ((Ubuntu))
3306/tcp open mysql MySQL 8.0.35
6.4 目录暴力破解
# dirsearch
git clone https://github.com/maurosoria/dirsearch.git
cd dirsearch
python3 dirsearch.py -u http://192.168.1.100 -e php,html,txt
# gobuster(Go编写,速度快)
sudo apt install gobuster -y
gobuster dir -u http://192.168.1.100 -w /usr/share/wordlists/dirb/common.txt -x php
# ffuf(模糊测试工具)
sudo apt install ffuf -y
ffuf -u http://192.168.1.100/FUZZ -w wordlist.txt -mc 200,301,302,403
dirsearch输出示例:
[20:01:23] Starting:
[20:01:25] 200 - 12B - /index.php
[20:01:26] 301 - 312B - /js/
[20:01:27] 200 - 892B - /login.php
[20:01:28] 403 - 277B - /admin/
[20:01:29] 200 - 1.2KB - /config.php.bak ← 备份文件!
[20:01:30] 200 - 45B - /robots.txt
6.5 指纹识别
# whatweb
sudo apt install whatweb -y
whatweb http://192.168.1.100
# 输出示例:
# http://192.168.1.100 [200 OK] Apache[2.4.52], Country[CN],
# HTML5, HTTPServer[Ubuntu Linux], IP[192.168.1.100],
# PHP[8.1.2], Title[Welcome]
# Wappalyzer(浏览器插件或CLI)
npx wappalyzer http://192.168.1.100
# CMS识别 — CMSeek
git clone https://github.com/Tuhinshubhra/CMSeeK.git
cd CMSeeK
python3 cmseek.py -u http://192.168.1.100
6.6 Google Hacking(Google Dorks)
Google Dorks是利用搜索引擎高级语法发现敏感信息的技巧:
| Dork | 含义 |
|---|---|
site:target.com filetype:sql | 搜索SQL文件 |
site:target.com filetype:bak | 搜索备份文件 |
site:target.com inurl:upload | 搜索上传页面 |
intext:"sql syntax near" | 搜索SQL错误信息 |
intitle:"index of" /backup | 搜索开放目录 |
filetype:env "DB_PASSWORD" | 搜索泄露的环境变量文件 |
Google Hacking数据库(GHDB):www.exploit-db.com/google-hack…
七、实战:搭建DVWA并进行信息搜集
7.1 安装DVWA
DVWA(Damn Vulnerable Web Application)是经典Web安全练习靶场。
# 在目标机 192.168.1.100 上操作
cd /var/www/html
# 下载DVWA
git clone https://github.com/digininja/DVWA.git
# 设置权限
cd DVWA
cp config/config.inc.php.dist config/config.inc.php
# 修改配置文件中的数据库连接信息
sudo nano config/config.inc.php
# 修改以下字段:
# $_DVWA['db_user'] = 'dvwa';
# $_DVWA['db_password'] = 'p@ssw0rd';
# $_DVWA['db_database'] = 'dvwa';
# 设置目录权限
sudo chown -R www-data:www-data /var/www/html/DVWA/
sudo chmod -R 755 /var/www/html/DVWA/
# 配置PHP(修改php.ini)
sudo nano /etc/php/8.1/apache2/php.ini
# 设置 allow_url_include = On
# 设置 allow_url_fopen = On
# 设置 display_errors = On
sudo systemctl restart apache2
7.2 初始化DVWA
1. 浏览器访问 http://192.168.1.100/DVWA/setup.php
2. 点击 "Create / Reset Database"
3. 看到成功提示后,访问 http://192.168.1.100/DVWA/login.php
4. 默认账号:admin / password
5. 登录后在左侧设置安全等级:low / medium / high / impossible
7.3 信息搜集实操
从攻击机 113.47.1.165 对目标 192.168.1.100 进行信息搜集:
# Step 1: 端口扫描
nmap -sV -p- 192.168.1.100
# 发现 22(SSH), 80(HTTP/Apache), 3306(MySQL)
# Step 2: 目录爆破
python3 dirsearch.py -u http://192.168.1.100 -e php,html,txt,bak
# 发现 /DVWA/, /index.php, /robots.txt, /config.php.bak
# Step 3: 指纹识别
whatweb http://192.168.1.100/DVWA/
# 识别出 PHP 8.1, Apache 2.4.52, DVWA
# Step 4: 详细目录探测DVWA
gobuster dir -u http://192.168.1.100/DVWA/ \
-w /usr/share/wordlists/dirb/common.txt -x php
# 发现 /login.php, /setup.php, /security.php, /vulnerabilities/
# Step 5: 探测vulnerabilities目录下的模块
gobuster dir -u http://192.168.1.100/DVWA/vulnerabilities/ \
-w /usr/share/wordlists/dirb/common.txt -x php
# 发现 sqli/, xss/, fileupload/, exec/, rce/ 等漏洞模块
7.4 使用Burp Suite代理抓包
1. 配置浏览器代理 127.0.0.1:8080
2. 安装Burp CA证书(访问 http://burp 下载)
3. 访问 http://192.168.1.100/DVWA/login.php
4. Burp拦截登录请求:
POST /DVWA/login.php HTTP/1.1
Host: 192.168.1.100
Cookie: PHPSESSID=xxx; security=low
username=admin&password=password&Login=Login
5. 右键 → Send to Repeater
6. 在Repeater中修改参数测试
八、总结
本篇是Web安全实战的起点,核心内容:
- OWASP Top 10:理解Web应用十大风险类型,是漏洞测试的框架指南。
- 攻击方法论:信息搜集 → 漏洞发现 → 漏洞利用 → 后渗透 → 报告。
- Burp Suite:Proxy拦截流量,Repeater手动测试,Intruder自动化Fuzz,Scanner自动扫描。
- Webshell工具:蚁剑适合学习,冰刃/哥斯拉适合绕过WAF的隐蔽通信。
- 信息搜集:被动搜集(WHOIS/DNS/搜索引擎)+ 主动搜集(端口扫描/目录爆破/指纹识别),是渗透测试的基础。
- DVWA靶场:搭建了安全练习环境,为后续漏洞实战做好准备。
下一篇将深入SQL注入漏洞,从原理到手动注入再到SQLMap自动化利用。
免责声明:本文所有技术内容仅用于授权安全测试和教学目的。未经授权对他人系统进行测试属于违法行为。