Web安全入门与信息搜集

0 阅读7分钟

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流量:

  1. 设置Burp代理监听:默认监听 127.0.0.1:8080
  2. 配置浏览器代理:将Firefox/Chrome代理设置为 127.0.0.1:8080
  3. 安装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是手动测试最常用的模块:

  1. 在Proxy中右键 → Send to Repeater
  2. 在Repeater中修改请求参数
  3. 点击Send发送,查看响应
  4. 反复修改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应用漏洞:

  1. 配置目标站点范围(Target → Scope)
  2. 右键站点 → Active Scan
  3. Burp自动爬取所有页面,对每个参数进行漏洞测试
  4. 查看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

使用流程:

  1. 首先在目标服务器上传Webshell文件(如 shell.php)
  2. 在蚁剑中添加Shell,填写URL和连接密码
  3. 连接成功后可进行文件管理、虚拟终端、数据库操作
<!-- 示例:一句话木马(仅用于教学演示) -->
<?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安全实战的起点,核心内容:

  1. OWASP Top 10:理解Web应用十大风险类型,是漏洞测试的框架指南。
  2. 攻击方法论:信息搜集 → 漏洞发现 → 漏洞利用 → 后渗透 → 报告。
  3. Burp Suite:Proxy拦截流量,Repeater手动测试,Intruder自动化Fuzz,Scanner自动扫描。
  4. Webshell工具:蚁剑适合学习,冰刃/哥斯拉适合绕过WAF的隐蔽通信。
  5. 信息搜集:被动搜集(WHOIS/DNS/搜索引擎)+ 主动搜集(端口扫描/目录爆破/指纹识别),是渗透测试的基础。
  6. DVWA靶场:搭建了安全练习环境,为后续漏洞实战做好准备。

下一篇将深入SQL注入漏洞,从原理到手动注入再到SQLMap自动化利用。


免责声明:本文所有技术内容仅用于授权安全测试和教学目的。未经授权对他人系统进行测试属于违法行为。