阿白
原来是小白啊~
阿白Blog

记一次攻击

WebHook,网络钩子,本意是让信息收到更新的时候第一时间知道,让平台主动发送请求到用户预设的接受网络地址,并且不用耗费太多计算的产物,对安全的要求是最多的。

TelegramWebHook,用于PHPLang,JSLang。我的母语就是PHP。

有一天,我在Telegram看到一个担保发布的Bot,号称免费克隆骰子游戏,这勾起了我的好奇(主要是我看他的实现语言是PHP。

我注册了个Bot,看了一下,还不错,突然,一个奇怪的念头在我的脑袋里冒出。

我通过 /getwebhookinfo 查询到了WebHook的地址,访问了过去。没想到! 真的没想到!竟然返回了200(请求成功了)!

这意味着什么?这意味着我可以伪造来自Telegram的请求啊。这样的话,我不就可以盈利了…?说干就干,我截取了一个TelegramRequst,转发给Bot,

结果我立马收到了回应! 成了!我都没想到这么简单。

SO,结束了,并没有,如果这位开发者有经验的话,一定会使用随机生成的WebHookURL,但是偏偏很巧,这位开发者使用了从0到X的顺序排列,以至于我可以“猜”出来然后作弊。

Tips:该开发者和担保使用了FastAdmin产品作为后端产品,其实这个也是有bug的,这都是后话了…

于是我Rep给了开发者,开发者很快的回复了我,并且做了IP限制(结果给他们老板IP限制了),我们又聊了很多安全性的问题和开发难题,并分享了自己的项目。

所以说,我们该怎么预防呢?

首先,就是信任问题,你的这个URL是暴露在公网上的,你就有责任处理好信任问题。计算机学有个叫 零信任 的概念,就是这个的极端,也是极致的安全。

https://blog.kugua.site/wp-content/uploads/2026/02/image-9-1024x403.png

1./getwebhookinfo 是返回了个 ip_adress 是Telegram发送WebHook的服务器IP,可以跟据这个IP手动/自动加白。

https://blog.kugua.site/wp-content/uploads/2026/02/image-10-1024x969.png

2.Telegram官方在 /setwebhook 的时候提示提供了一个 secret_token 的字段的,用官方的话解释说就是

A secret token to be sent in a header “X-Telegram-Bot-Api-Secret-Token” in every webhook request, 1-256 characters. Only characters A-Za-z0-9_ and - are allowed. The header is useful to ensure that the request comes from a webhook set by you.

用人话来讲,就是请求时携带一个密钥,你只要验证密钥就行了。

3.你还可以验证官方请求的时间戳,当然,高级的工具当然会更精细的伪造,我们不论。

4….防守的速度肯定比不上攻击的速度,没有天然的BUG,只有不细心的开发者,让我们一起来维护程序环境吧,记得为您的机器人/产品加上对应的安全防护哦~

本文著作权属于 阿白 ,转载请标注 记一次攻击
没有标签
首页      未分类      记一次攻击

阿白

文章作者

发表回复

textsms
account_circle
email

阿白Blog

记一次攻击
WebHook,网络钩子,本意是让信息收到更新的时候第一时间知道,让平台主动发送请求到用户预设的接受网络地址,并且不用耗费太多计算的产物,对安全的要求是最多的。 TelegramWebHook,…
扫描二维码继续阅读
2026-02-27