利用HTTP host头攻击的技术

本文详细探讨了HTTP Host头攻击的两种主要形式——密码重置污染和缓存污染,通过实例解释了攻击原理。同时,文章指出了一些知名框架如Django存在的相关漏洞,并提供了服务器和应用层面的安全配置建议,强调了对SERVER_NAME的信任优于HTTP_HOST。
摘要由CSDN通过智能技术生成

在这里插入图片描述
一般通用web程序是如果想知道网站域名不是一件简单的事情,如果用一个固定的URI来作为域名会有各种麻烦。开发人员一般是依赖HTTP Host header(比如在php里是_SERVER[“HTTP_HOST”] ),而这个header很多情况下是靠不住的。而很多应用是直接把这个值不做html编码便输出到了页面中,比如:

<link href="http://_SERVER['HOST']"    (Joomla)

还有的地方还包含有secret key和token,

<a href="http://_SERVER['HOST']?token=topsecret">  (Django, Gallery, others)

这样处理问题一般会很容易遭遇到两种常见的攻击:缓存污染和密码重置。缓存污染是指攻击者通过控制一个缓存系统来将一个恶意站点的页面返回给用户。密码重置这种攻击主要是因为发送给用户的内容是可以污染的,也就是说可以间接的劫持邮件发送内容。

0x01 密码重置污染攻击
拿 Gallery 这个站来做例子。当我们进行密码重置的时候,网站会给我们发送一个随机的key:

$user -> hash = random::hash() ;
  
$message -> confirm_url = url::abs_site("password/do_reset?key=$user->hash") ;

当用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值