前置知识:
1.CRLF注入漏洞
是因为Web应用没有对用户输入做严格验证,导致攻击者可以输入一些恶意字符。攻击者一旦向请求行或首部中的字段注入恶意的CRLF,就能注入一些首部字段或报文主体,并在响应中输出,所以又称为HTTP响应拆分漏洞。
漏洞检测工具:
CRLFuzz:https://github.com/dwisiswant0/crlfuzz/releases
2.URL重定向跳转
写代码时没有考虑过任意URL跳转漏洞,或者根本不知道/不认为这是个漏洞;
写代码时考虑不周,用取子串、取后缀等方法简单判断,代码逻辑可被绕过;
对传入参数做一些奇葩的操作(域名剪切/拼接/重组)和判断,适得其反,反被绕过;
原始语言自带的解析URL、判断域名的函数库出现逻辑漏洞或者意外特性,可被绕过;
原始语言、服务器/容器特性、浏览器等对标准URL协议解析处理等差异性导致绕过;
3.Web拒绝服务
现在有许多资源是由服务器生成然后返回给客户端的,而此类“资源生成”接口如若有参数可以被客户端控制(可控),并没有做任何资源生成大小限制,这样就会造成拒绝服务风险,导致服务器处理不过来或占用资源去处理。
案例演示:URL重定向——钓鱼获取账号密码
用户要访问的网站:http://127.0.0.1:8081/zblog/zb_system/login.php进行登录
这里有一个url重定向跳转功能,输入:127.0.0.1:8081/zblog/zb_system/login.php?url=http://baidu.com访问成功跳转百度
于是攻击者在服务器搭建了一个一模一样的显示界面:http://www.xiaoheizi.fun/zblog/zb_system/login.php
然后将重定向url:
127.0.0.1:8081/zblog/zb_system/login.php?url=http://www.xiaoheizi.fun/zblog/zb_system/login.php
发送给用户,用户访问登录就等于是在攻击者搭建的http://xiaoheizi.fun/zblog/zb_system/login.php网页登录,攻击者就能够在自己服务器接收用户登录的账号密码
攻击者搭建好钓鱼页面
服务器设置使用x.php文件接收用户输入的账号密码
x.php接收账号密码后将其写入到password.txt文件中
攻击者将重定向url发送给用户:127.0.0.1:8081/zblog/zb_system/login.php?url=http://www.xiaoheizi.fun/zblog/zb_system/login.php
用户访问url,输入账号密码点击登录
攻击者服务器生成一个password.txt文件
打开查看,成功接收到账号密码
原文始发于微信公众号(小黑子安全):通用漏洞-CRLF注入+URL重定向+WEB拒绝服务
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论