拒绝服务攻击 (Denial of Service)
拒绝服务攻击 (DoS) 旨在通过发起大量非法请求来淹没服务,或利用目标软件中的漏洞导致系统崩溃或性能下降,从而使服务不可用。在分布式拒绝服务 (DDoS) 中,攻击者使用多个来源(通常是被控制的机器)同时发起攻击。
摘要 (Summary)
方法论 (Methodology)
以下是拒绝服务攻击 (DoS) 的一些示例。这些示例应作为理解概念的参考,但任何 DoS 测试都应谨慎进行,因为它可能会干扰目标环境,并可能导致访问丢失或敏感数据泄露。
锁定客户账户 (Locking Customer Accounts)
在测试客户账户时可能发生的拒绝服务示例。 由于这很可能超出授权范围 (out-of-scope) 且会对业务产生重大影响,请务必极其小心。
-
当账户在 X 次错误尝试后被临时/永久锁定时,对登录页面进行多次尝试。
文件系统上的文件限制 (File Limits on FileSystem)
当进程在服务器上写入文件时,尝试达到文件系统格式允许的最大文件数量。当达到限制时,系统应输出消息:No space left on device (设备空间不足)。
| 文件系统 | 最大 Inode 数量 |
|---|---|
| BTRFS | 2^64 (约 1800 亿亿) |
| EXT4 | 约 40 亿 |
| FAT32 | 约 2.68 亿个文件 |
| NTFS | 约 42 亿 (MFT 条目) |
| XFS | 动态(取决于磁盘大小) |
| ZFS | 约 281 万亿 |
该技术的一种变体是填充应用程序使用的某个文件,直到其达到文件系统允许的最大大小,例如在 SQLite 数据库或日志文件上。
FAT32 有 4 GB 的显著限制,这就是为什么对于大文件,它通常被 exFAT 或 NTFS 取代。
BTRFS、ZFS 和 XFS 等现代文件系统支持 EB (exabyte) 规模的文件,远超当前的存储能力,使其能够满足未来大数据集的需求。
内存消耗 - 与技术相关 (Memory Exhaustion - Technology Related)
根据网站所使用的技术,攻击者可能有能力触发特定的功能或范式,从而消耗大量内存。
-
XML 外部实体 (XXE):十亿笑话攻击 (Billion laughs attack)/XML 炸弹
<?xml version="1.0"?> <!DOCTYPE lolz [ <!ENTITY lol "lol"> <!ELEMENT lolz (#PCDATA)> <!ENTITY lol1 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;"> <!ENTITY lol2 "&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;"> <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;"> <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;"> <!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;"> <!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;"> <!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;"> <!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;"> <!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;"> ]> <lolz>&lol9;</lolz> -
GraphQL:深度嵌套的 GraphQL 查询。
-
图片调整大小:尝试发送带有修改过标头的无效图片,例如:异常的尺寸、巨大的像素数量。
- SVG 处理:SVG 文件格式基于 XML,尝试执行“十亿笑话攻击”。
- 正则表达式:ReDoS(正则表达式拒绝服务)。
-
Fork 炸弹:在循环中快速创建新进程,消耗系统资源直到机器不再响应。