NextJS SSRF 漏洞中,Host 头滥用危害有多大?

2026-05-30 23:534阅读0评论SEO优化
  • 内容介绍
  • 文章标签
  • 相关推荐

你有没有试过在某个深夜, 盯着代码库发呆,突然发现一个小小的 Host 头竟然能带来这么大的平安隐患?我试过。那晚, 我深信... 我差点没被 SSRF 漏洞吓出心脏病。别看这个 Host 头小,它要是发起疯来能让你的服务器“社死”现场。

Host 是什么?

到位。 “Host” 这个词, 听起来挺“主人”的,其实它就是个请求头,告诉服务器“嘿,我找你是主要原因是你家门牌号是啥”。它在 HTTP/1.1 请求中是必须的,没有它,服务器根本不知道你到底想访问谁。但问题来了如果这个“门牌号”被伪造了呢?

「漏洞复现」(五)从 NextJS SSRF 漏洞看 Host 头滥用所带来的危害

比如 你发一个请求,说“我要访问你家”,但你其实把地址写成了“你邻居家的地址”,那服务器就真去你邻居家敲门了。这不就完蛋了,我emo了。?

SSRF 漏洞:Host 头的“黑手”

SSRF这个东西, 说白了就是服务器被“骗”了。攻击者通过伪造一个请求, 让我们一起... 让服务器去访问一个“假的”地址,然后……你懂的,数据就可能被偷了。

比如 你服务器本来好好的,后来啊被攻击者用 Host 头一忽悠,就去访问了不该访问的内网地址,比如 http://169.254.169.254那你的云服务器密钥、数据库信息、内部配置……全被偷光了。

Next.js 的 SSRF 漏洞:一个重定向引发的“血案”

Next.js 是个好东西,但它的 Server Actions 有点“憨”。比如 你写了个重定向,用的是 redirect后来啊它就真去请求那个路径了。问题是 这个路径的 Host 是从请求头里拿的,攻击者只要改个 Host,你服务器就可能去访问不该访问的地方。

比如 你访问 /admin/secrets但 Host 被改成 169.254. 你没事吧? 169.254那你的服务器就可能被诱导去访问云服务器的 metadata,然后……

数据就没了。

Host 滥用的“骚操作”

Host 头的滥用,其实就是在 SSRF 漏洞中扮演“幕后黑手”的角色。你可能觉得这不就是个请求头吗?但你错了它能让你的服务器“跑路”,火候不够。。

比如 你服务器本来是访问 https://yourdomain.com但 Host 被改成 http://internal-aws-metadata/那你的服务器就可能被诱导去访问 AWS 元数据,然后……,也许吧...

你的 Access Key 和 Secret Key 就没了,摸鱼。。

修复 SSRF 漏洞:别再让 Host 头“放飞自我”

修复 SSRF 漏洞,其实就是在 Host 头上“加把锁”。你不能让服务器随便访问一个地址,特别是你根本不知道这个地址是哪来的。

所以 你得:

  • 校验 Host:别让服务器随便访问一个地址,特别是你根本不知道这个地址是哪来的。
  • 限制协议:别让服务器访问 file:// gopher:// 这些凶险协议,不然你服务器就可能被 SSRF 了。
  • 过滤输入:别让服务器访问的地址是用户输入的,特别是你根本不知道这个地址是哪来的。

你猜怎么着? 比如 你写了个 fetch但你访问的地址是 http://evil.com那你的服务器就可能被 SSRF 了。

Next.js SSRF 漏洞修复:加个“白名单”

  • 白名单:你访问的地址必须在白名单里不然你服务器就可能被 SSRF 了。
  • 协议限制:你不能让服务器访问 file:// gopher:// 这些凶险协议,不然你服务器就可能被 SSRF 了。
  • 输入过滤:你不能让服务器访问的地址是用户输入的,特别是你根本不知道这个地址是哪来的。

修复 SSRF 漏洞:加个“锁”

  • 协议限制:你不能让服务器访问 file://gopher:// 这些凶险协议,不然你服务器就可能被 SSRF 了。
  • 输入过滤:你不能让服务器访问的地址是用户输入的,特别是你根本不知道这个地址是哪来的。
  • 白名单:你访问的地址必须在白名单里不然你服务器就可能被 SSRF 了。
  • 白名单:你访问的地址必须在白名单里不然你服务器就可能被 SSRF 了。
  • 协议限制:你不能让服务器访问 file:// gopher:// 这些凶险协议,不然你服务器就可能被 SSRF 了。
  • 输入过滤:你不能让服务器访问的地址是用户输入的,特别是你根本不知道这个地址是哪来的。
  • 白名单:你访问的地址必须在白名单里不然你服务器就可能被 SSRF 了。
  • 协议限制:你不能让服务器访问 file:// gopher:// 这些凶险协议,不然你服务器就可能被 SSRF 了。
  • 输入过滤:你不能让服务器访问的地址是用户输入的,特别是你根本不知道这个地址是哪来的。
  • 白名单:你访问的地址必须在白名单里不然你服务器就可能被 SSRF 了。
  • 协议限制:你不能让服务器访问 file:// gopher:// 这些凶险协议,不然你服务器就可能被 SSRF 了。
  • 输入过滤:你不能让服务器访问的地址是用户输入的,特别是你根本不知道这个地址是哪来的。
  • 白名单:你访问的地址必须在白名单里不然你服务器就可能被 SSRF 了。
  • 协议限制:你不能让服务器访问 file:// gopher:// 这些凶险协议,不然你服务器就可能被 SSRF 了。
  • 输入过滤:你不能让服务器访问的地址是用户输入的,特别是你根本不知道这个地址是哪来的。
  • 白名单:你访问的地址必须在白名单里不然你服务器就可能被 SSRF 了。
  • 协议限制:你不能让服务器访问 file:// gopher:// 这些凶险协议,不然你服务器就可能被 SSRF 了。
  • 输入过滤:你不能让服务器访问的地址是用户输入的,特别是你根本不知道这个地址是哪来的。
  • 白名单:你访问的地址必须在白名单里不然你服务器就可能被 SSRF 了。
  • 协议限制:你不能让服务器访问 file:// gopher:// 这些凶险协议,不然你服务器就可能被 SSRF 了。
  • 输入过滤:你不能让服务器访问的地址是用户输入的,特别是你根本不知道这个地址是哪来的。

修复 SSR

你有没有试过在某个深夜, 盯着代码库发呆,突然发现一个小小的 Host 头竟然能带来这么大的平安隐患?我试过。那晚, 我深信... 我差点没被 SSRF 漏洞吓出心脏病。别看这个 Host 头小,它要是发起疯来能让你的服务器“社死”现场。

Host 是什么?

到位。 “Host” 这个词, 听起来挺“主人”的,其实它就是个请求头,告诉服务器“嘿,我找你是主要原因是你家门牌号是啥”。它在 HTTP/1.1 请求中是必须的,没有它,服务器根本不知道你到底想访问谁。但问题来了如果这个“门牌号”被伪造了呢?

「漏洞复现」(五)从 NextJS SSRF 漏洞看 Host 头滥用所带来的危害

比如 你发一个请求,说“我要访问你家”,但你其实把地址写成了“你邻居家的地址”,那服务器就真去你邻居家敲门了。这不就完蛋了,我emo了。?

SSRF 漏洞:Host 头的“黑手”

SSRF这个东西, 说白了就是服务器被“骗”了。攻击者通过伪造一个请求, 让我们一起... 让服务器去访问一个“假的”地址,然后……你懂的,数据就可能被偷了。

比如 你服务器本来好好的,后来啊被攻击者用 Host 头一忽悠,就去访问了不该访问的内网地址,比如 http://169.254.169.254那你的云服务器密钥、数据库信息、内部配置……全被偷光了。

Next.js 的 SSRF 漏洞:一个重定向引发的“血案”

Next.js 是个好东西,但它的 Server Actions 有点“憨”。比如 你写了个重定向,用的是 redirect后来啊它就真去请求那个路径了。问题是 这个路径的 Host 是从请求头里拿的,攻击者只要改个 Host,你服务器就可能去访问不该访问的地方。

比如 你访问 /admin/secrets但 Host 被改成 169.254. 你没事吧? 169.254那你的服务器就可能被诱导去访问云服务器的 metadata,然后……

数据就没了。

Host 滥用的“骚操作”

Host 头的滥用,其实就是在 SSRF 漏洞中扮演“幕后黑手”的角色。你可能觉得这不就是个请求头吗?但你错了它能让你的服务器“跑路”,火候不够。。

比如 你服务器本来是访问 https://yourdomain.com但 Host 被改成 http://internal-aws-metadata/那你的服务器就可能被诱导去访问 AWS 元数据,然后……,也许吧...

你的 Access Key 和 Secret Key 就没了,摸鱼。。

修复 SSRF 漏洞:别再让 Host 头“放飞自我”

修复 SSRF 漏洞,其实就是在 Host 头上“加把锁”。你不能让服务器随便访问一个地址,特别是你根本不知道这个地址是哪来的。

所以 你得:

  • 校验 Host:别让服务器随便访问一个地址,特别是你根本不知道这个地址是哪来的。
  • 限制协议:别让服务器访问 file:// gopher:// 这些凶险协议,不然你服务器就可能被 SSRF 了。
  • 过滤输入:别让服务器访问的地址是用户输入的,特别是你根本不知道这个地址是哪来的。

你猜怎么着? 比如 你写了个 fetch但你访问的地址是 http://evil.com那你的服务器就可能被 SSRF 了。

Next.js SSRF 漏洞修复:加个“白名单”

  • 白名单:你访问的地址必须在白名单里不然你服务器就可能被 SSRF 了。
  • 协议限制:你不能让服务器访问 file:// gopher:// 这些凶险协议,不然你服务器就可能被 SSRF 了。
  • 输入过滤:你不能让服务器访问的地址是用户输入的,特别是你根本不知道这个地址是哪来的。

修复 SSRF 漏洞:加个“锁”

  • 协议限制:你不能让服务器访问 file://gopher:// 这些凶险协议,不然你服务器就可能被 SSRF 了。
  • 输入过滤:你不能让服务器访问的地址是用户输入的,特别是你根本不知道这个地址是哪来的。
  • 白名单:你访问的地址必须在白名单里不然你服务器就可能被 SSRF 了。
  • 白名单:你访问的地址必须在白名单里不然你服务器就可能被 SSRF 了。
  • 协议限制:你不能让服务器访问 file:// gopher:// 这些凶险协议,不然你服务器就可能被 SSRF 了。
  • 输入过滤:你不能让服务器访问的地址是用户输入的,特别是你根本不知道这个地址是哪来的。
  • 白名单:你访问的地址必须在白名单里不然你服务器就可能被 SSRF 了。
  • 协议限制:你不能让服务器访问 file:// gopher:// 这些凶险协议,不然你服务器就可能被 SSRF 了。
  • 输入过滤:你不能让服务器访问的地址是用户输入的,特别是你根本不知道这个地址是哪来的。
  • 白名单:你访问的地址必须在白名单里不然你服务器就可能被 SSRF 了。
  • 协议限制:你不能让服务器访问 file:// gopher:// 这些凶险协议,不然你服务器就可能被 SSRF 了。
  • 输入过滤:你不能让服务器访问的地址是用户输入的,特别是你根本不知道这个地址是哪来的。
  • 白名单:你访问的地址必须在白名单里不然你服务器就可能被 SSRF 了。
  • 协议限制:你不能让服务器访问 file:// gopher:// 这些凶险协议,不然你服务器就可能被 SSRF 了。
  • 输入过滤:你不能让服务器访问的地址是用户输入的,特别是你根本不知道这个地址是哪来的。
  • 白名单:你访问的地址必须在白名单里不然你服务器就可能被 SSRF 了。
  • 协议限制:你不能让服务器访问 file:// gopher:// 这些凶险协议,不然你服务器就可能被 SSRF 了。
  • 输入过滤:你不能让服务器访问的地址是用户输入的,特别是你根本不知道这个地址是哪来的。
  • 白名单:你访问的地址必须在白名单里不然你服务器就可能被 SSRF 了。
  • 协议限制:你不能让服务器访问 file:// gopher:// 这些凶险协议,不然你服务器就可能被 SSRF 了。
  • 输入过滤:你不能让服务器访问的地址是用户输入的,特别是你根本不知道这个地址是哪来的。

修复 SSR