应用层攻击主要针对网络模型中的应用层(OSI模型的第7层或TCP/IP模型的应用层),这些攻击通常利用应用程序的逻辑漏洞、协议缺陷或配置错误来实施。以下是一些常见的应用层攻击类型及其简要说明:
1. SQL注入(SQL Injection)
- 原理:攻击者通过输入恶意SQL代码,操纵应用程序的数据库查询,从而窃取、篡改或删除数据。
- 示例:在登录表单中输入
' OR '1'='1
绕过身份验证。 - 防御:参数化查询、输入验证、ORM框架。
2. 跨站脚本攻击(XSS, Cross-Site Scripting)
- 原理:攻击者在网页中注入恶意脚本(如JavaScript),当其他用户访问时触发,窃取Cookie或会话信息。
- 类型:
- 存储型XSS:恶意脚本存储到服务器(如评论区)。
- 反射型XSS:通过URL参数传递恶意脚本。
- 防御:输入过滤、输出编码、设置HTTP头(如
Content-Security-Policy
)。
3. 跨站请求伪造(CSRF, Cross-Site Request Forgery)
- 原理:诱使用户在已登录状态下执行恶意请求(如转账、修改密码)。
- 示例:通过钓鱼邮件诱导用户点击伪造的请求链接。
- 防御:使用CSRF Token、验证请求来源(Referer检查)。
4. 远程代码执行(RCE, Remote Code Execution)
- 原理:利用应用程序漏洞执行攻击者指定的任意代码,完全控制服务器。
- 案例:Log4j漏洞(CVE-2021-44228)允许通过日志输入触发代码执行。
- 防御:及时更新补丁、输入过滤、最小化权限。
5. 文件包含攻击(LFI/RFI)
- 原理:
- 本地文件包含(LFI):包含服务器本地敏感文件(如
/etc/passwd
)。 - 远程文件包含(RFI):加载远程恶意文件并执行。
- 本地文件包含(LFI):包含服务器本地敏感文件(如
- 防御:禁用动态文件包含、白名单限制文件路径。
6. 目录遍历(Directory Traversal)
- 原理:通过构造特殊路径(如
../../
)访问服务器上的未授权文件。 - 示例:
http://example.com/file?name=../../etc/passwd
- 防御:规范化路径、限制文件访问权限。
7. HTTP Flood攻击(DDoS应用层)
- 原理:通过大量合法的HTTP请求耗尽服务器资源(如登录、搜索接口)。
- 防御:速率限制、WAF(Web应用防火墙)、CDN过滤。
8. XML外部实体注入(XXE, XML External Entity)
- 原理:利用XML解析器加载恶意外部实体,读取文件或触发SSRF。
- 示例:通过上传恶意XML文件读取服务器文件。
- 防御:禁用外部实体解析、使用JSON替代XML。
9. 不安全的反序列化(Insecure Deserialization)
- 原理:反序列化恶意数据时触发代码执行或逻辑漏洞。
- 案例:Java反序列化漏洞(如Apache Commons Collections)。
- 防御:验证序列化数据、使用安全的序列化库。
10. API滥用攻击
- 类型:
- 未授权访问:API接口缺乏身份验证(如暴露数据库的API)。
- 数据过度暴露:API返回过多敏感信息。
- 速率限制绕过:暴力破解密码或API密钥。
- 防御:OAuth/JWT认证、输入验证、限流。
11. 服务器端请求伪造(SSRF, Server-Side Request Forgery)
- 原理:诱使服务器向内部或第三方系统发送恶意请求。
- 示例:利用URL参数让服务器访问内网资源(如
http://internal-server/admin
)。 - 防御:过滤用户输入的URL、禁用非必要协议(如
file://
)。
12. 身份验证与会话攻击
- 类型:
- 暴力破解:尝试大量密码组合。
- 会话劫持:窃取Cookie或Session ID。
- 凭证填充:利用泄露的密码库撞库。
- 防御:多因素认证(MFA)、强密码策略、会话超时。
13. 点击劫持(Clickjacking)
- 原理:通过透明iframe覆盖诱使用户点击恶意按钮(如隐藏的“转账”按钮)。
- 防御:设置HTTP头
X-Frame-Options: DENY
。
14. 钓鱼攻击(Phishing)
- 原理:伪造登录页面或邮件诱导用户提交敏感信息。
- 防御:用户教育、SPF/DKIM邮件验证、HTTPS。
防御通用策略
- 输入验证与过滤:对所有用户输入进行严格检查。
- 最小权限原则:限制应用程序和用户的权限。
- 定期更新与补丁:修复已知漏洞(如CVE)。
- 安全工具:使用WAF、IDS/IPS、漏洞扫描器。
- 日志与监控:实时检测异常行为。
应用层攻击因直接针对业务逻辑,危害性极大。防御需结合安全开发(如SDL)、持续监控和用户教育。