本页面概述了现代 Web 应用程序中常见的 Web 应用程序漏洞。Web 应用程序漏洞是指可能被利用来获得未经授权的访问、提取敏感数据或破坏 Web 应用程序功能的安全缺陷。有关具体的利用技术和详细的方法,请参阅本文档中链接的各个漏洞页面。
Web 应用程序漏洞源于 Web 应用程序的设计缺陷、实现错误或配置错误。攻击者可以利用这些漏洞来损害 Web 应用程序及其数据的机密性、完整性或可用性。
PayloadsAllTheThings 存储库包含针对各种 Web 应用程序漏洞的全面 payload、绕过技术和方法。
来源: XSS Injection/README.md1-56 XXE Injection/README.md1-40 SQL Injection/README.md1-39 Command Injection/README.md1-39
Web 应用程序漏洞可根据其攻击向量、影响和利用技术进行分类。
来源: XSS Injection/README.md5-45 SQL Injection/README.md7-38 Command Injection/README.md7-38 Upload Insecure Files/README.md5-38 CORS Misconfiguration/README.md5-16 API Key Leaks/README.md6-13 Client Side Path Traversal/README.md3-14
注入漏洞发生在将不受信任的数据作为命令或查询的一部分发送给解释器时,从而欺骗解释器执行意外的命令或访问未经授权的数据。
SQL 注入允许攻击者通过注入恶意 SQL 代码来操纵发送到数据库的 SQL 查询。
来源: SQL Injection/README.md184-302 SQL Injection/MySQL Injection.md111-131 SQL Injection/MSSQL Injection.md119-142 SQL Injection/PostgreSQL Injection.md59-101 SQL Injection/OracleSQL Injection.md67-94 SQL Injection/SQLite Injection.md38-70
命令注入发生在应用程序将不安全的、用户提供的的数据传递给系统 shell 时。此漏洞允许攻击者在主机操作系统上执行任意命令。
如果攻击者输入例如 8.8.8.8; cat /etc/passwd,实际执行的命令将是: ping -c 4 8.8.8.8; cat /etc/passwd。
来源: Command Injection/README.md46-67
XXE 在应用程序处理包含外部实体引用的 XML 输入时发生,可能导致泄露机密数据、服务器端请求伪造或拒绝服务攻击。
来源: XXE Injection/README.md75-102
客户端漏洞会影响浏览器或客户端应用程序代码,通常会导致会话劫持、数据泄露或代表用户执行恶意操作。
XSS 允许攻击者将恶意脚本注入到其他用户查看的网页中。这些脚本可以窃取 cookie、会话令牌或将用户重定向到恶意网站。
来源: XSS Injection/README.md43-58 XSS Injection/README.md172-217
CORS 配置错误可能允许攻击者代表用户发起跨域请求,可能导致数据泄露或未经授权的操作。
来源: CORS Misconfiguration/README.md32-190
点击劫持是一种通过将隐藏网站的活动内容覆盖在诱饵网站上,来欺骗用户点击隐藏网站上的内容,从而可能导致未经授权的操作。
来源: Clickjacking/README.md3-39
这些漏洞涉及身份验证机制、会话管理或访问控制系统中的缺陷。
API 密钥和令牌可能通过源代码、公共存储库或不安全的响应泄露,从而导致未经授权的 API 访问。
API 密钥泄露的常见原因包括:
来源: API Key Leaks/README.md14-62
类型混淆漏洞发生在 PHP 等弱类型语言中,自动类型转换可能导致身份验证绕过。
来源: Type Juggling/README.md3-40
服务器端漏洞会影响 Web 应用程序的服务器组件,可能导致服务器被破坏、数据泄露或拒绝服务。
不安全的文件上传漏洞允许攻击者上传恶意文件,这些文件可以执行代码、执行跨站脚本或访问敏感信息。
| 扩展 | 风险 |
|---|---|
| .php, .php5, .phtml | 远程代码执行 |
| .asp, .aspx | 远程代码执行 |
| .jsp | 远程代码执行 |
| .svg | XXE、XSS、SSRF |
| .xml | XXE |
| .html | XSS、开放重定向 |
| .zip | 远程代码执行、DoS |
来源: Upload Insecure Files/README.md29-81
Web 缓存欺骗是指攻击者诱骗缓存代理存储敏感内容并将其提供给其他用户。
来源:Web Cache Deception/README.md3-35
了解常见的攻击模式有助于识别和缓解 Web 应用程序漏洞。
无论注入载体如何,注入攻击都遵循通用模式
来源:SQL Injection/README.md40-116 Command Injection/README.md68-124 XXE Injection/README.md49-70
身份验证绕过技术利用身份验证逻辑中的缺陷
来源:SQL Injection/README.md126-181 Type Juggling/README.md16-42
可以通过多种方法检测 Web 应用程序漏洞
手动测试涉及在寻找潜在漏洞时与应用程序进行交互
自动化工具可以帮助识别潜在的漏洞
漏洞通常根据其影响和可利用性进行分类
来源:SQL Injection/README.md40-79 XSS Injection/README.md125-161 Command Injection/README.md41-97
实施适当的安全控制有助于缓解 Web 应用程序漏洞
实施安全标头有助于防范各种攻击
| 标题 | 防护 |
|---|---|
| Content-Security-Policy | XSS、点击劫持 |
| X-Frame-Options | 点击劫持 |
| X-Content-Type-Options | MIME 嗅探 |
| X-XSS-Protection | XSS |
| Strict-Transport-Security | 协议降级 |
| Access-Control-Allow-Origin | CORS |
来源:CORS Misconfiguration/README.md88-102 Clickjacking/README.md191-267 XSS Injection/README.md567-607
Web 应用程序漏洞对应用程序安全构成重大风险,其中 SQL 注入和 XSS 等注入漏洞最为普遍。理解这些漏洞、它们的攻击载体以及适当的缓解措施对于保护 Web 应用程序至关重要。
有关特定漏洞的详细信息,请参阅此存储库中的各个漏洞页面。