通过 URL 暴力破解 10 位数字有多实用

信息安全 蛮力
2021-08-15 07:27:37

示例网址 www.[somewebsite].com/[10_digit_number]

获得正确的数字会加载一个页面。

我知道有 100 亿个可能的数字可供选择,但需要多长时间?需要哪些资源?

4个回答

大约一天

如果幸运的话:没有限制,我们可以使用 HEAD 请求执行每个测试,可以使用 Keepalive 对单个 HTTP 连接执行许多测试,并且可以有许多并发连接。

在这种情况下,我们主要受到带宽的限制。假设我们制作了一个 100 字节的紧凑请求,这意味着我们需要发送总共 100 * 10 10个字节。让我们假设我们有一个不错的 100 Mbps 连接,大约每秒 10 兆字节。这将需要 100,000 秒 - 仅仅一天多一点。

这是最好的情况,在实践中可能存在阻止它如此快速工作的问题。我们可以让多个系统同时工作以使其更快 - 但在某些时候我们会超载服务器。

无论使用哪种脚本/语言,在大多数系统上滚动 10 位数字都不会太久。这里更大的问题是您同时打开的连接数和请求之间的延迟。一个良好配置的系统会阻止太多来自同一地址的请求(防火墙或守护进程本身)。

例如:

#!/bin/bash
for i in {1..1000}
do
   curl "www.[somewebsite].com/$i" > "${i}_out.txt"
done

你可能想要线程这个。

取决于几个因素。

服务器端

  • 服务器带宽
  • 这个请求的数字是否会在某个数据库上生成查询?
  • 任何用于检测此类活动并阻止它的防火墙/安全脚本
  • 任何其他可能成为瓶颈的资源,如 CPU 或内存。
  • 如果您是那种会在日志存储在非常有限的文件系统上的服务器上尝试它的幸运者,那么这种活动将消耗它的每个空闲字节,从而使应用程序停止。

客户端

  • 您的带宽

我对这项活动的考虑:

首先进行 DNS 查询,查看该地址是否有多个服务器。这将有帮助,更多的服务器,你可以分担更多的负载。

测试防火墙,获取 VPS 并进行一些测试以了解您的环境,而不将您的 IP 地址列入黑名单。测试一些速率,每秒 100、1000、10000。测试一天中每个小时的平均响应时间。如果响应时间发生变化,那么您的服务器有一些时间窗口可以接收更多流量/请求,这将是不给服务器带来压力的好时机。

有了以上所有结果,您将知道该怎么做。如果服务器有更多的带宽,几乎总是发生这种情况,你可以找一个 VPS 来帮助你,选择一个靠近服务器的 VPS。您将制定关于归档解决方案的最佳请求数的计划,例如,如果服务器在早上收到更多负载,您可以在白天使用 1000/s,例如上午 8 点到晚上 10 点,并使用尽可能多的服务器可以在晚上 10 点到早上 8 点期间接听。

请注意,这种活动可能会导致某些服务崩溃或负载过大,以至于无法响应用户,这可能被视为拒绝服务攻击。由于几个因素,它会给你带来一些麻烦,我不知道所有国家,在一些国家,这种攻击是犯罪行为。在您使任何系统崩溃并为停机负责之前,请联系系统管理员了解您的意图。

无论资源如何,一天都是非常不现实的。

一天有 86,400 秒。四舍五入到 100k。将 1B 除以 100k,每秒可获得 10,000 个查询。这有点大。服务器将需要一个体面的负载平衡故事和相当数量的计算能力。作为参考,如果我们有 100 台机器,每台 8 核(总共 800 核),我们将需要在最多80 毫秒内完成每个请求,这很紧,但并非完全不合理客户端还需要与服务器容量相称的容量,假设您是黑帽攻击者,您可能正在运行僵尸网络或类似性质的东西。

实际上,您必须在操作一个僵尸网络,因为客户端需要以这样一种方式在地理上分布,以便服务器可以对其进行负载平衡,而无需遍历高延迟的网络链接。这很关键,因为服务器和客户端之间的延迟计入我们 80 毫秒的预算。如果客户端完全在美国,但一半的服务器在欧洲,跨大西洋的延迟将完全破坏我们的性能,我们将需要更多的容量来弥补它(否则我们将只需要使用美国一半的服务器,遇到类似的容量问题)。

可是等等!你说'无论资源如何。你为什么向我扔资源号?

因为以这种规模运行 Web 服务的人通常有足够好的监控来检测来自僵尸网络的突然 10k QPS 的流量泛滥。您的目标很可能会确定您正在对他们进行 DDoS 攻击(这基本上就是您正在做的事情)并部署标准缓解措施(例如,提供 503 或验证码、对流量进行黑洞等)。此时,您的攻击将失败,或者至少花费的时间比您计划的要长得多,当局现在将努力拆除您的僵尸网络。

所以如果你想让你的攻击真正起作用,你不能以这种速度进行。您的目标要么无法处理流量,要么他们足够聪明,可以检测并阻止它。