[Day27]- 新手的Web系列CRLF 0x2

Day27- 新手的Web系列CRLF 0x2

正文

CRLF Injection原理

  • HTTP Header 定义
    • key:value的结构
    • 分行符号:
      • CR(\r)
      • LF(\n)
中文解释 符号 十进位 ASCll 十六进位 ASCll
LF 换行 n 10 0x0A
CR 回车 r 13 0x0D
  • CR或是LF作为每一行的结束
  • 当使用者传递包含\n或是\r的资讯时,如果服务器没有过滤就直接回传给 http header 的话,那攻击者就可以任意设置一些特殊的http讯息或是直接修改 http response 的内容
  • CRLF用於许多地方,例如:多文本档案、程序语言,所以攻击的范围很广,这种攻击用於http时被称作 HTTP Response Splitting

CRLF Injection 攻击手法

  • 攻击者会注入一些错误的分割符号来混淆服务器的过滤,好进行恶意攻击
  • 要执行CRLF注入,攻击者必须要有一个可以拦截浏览器和服务器之间http封包的工具,进而窜改http封包的内容,再注入 http request 让服务器回传两个 http response ,透过第二个建构的 http response 来达到攻击者的目的,例如:设置cookie值...等
  • 例如:一段脚本程序
<%
nameValueCollection request=Request.QueryString;
Response.cookies["name"].Value=resquest["text"];
%>
  • 正常情况浏览网页:
    • http://macaron.tw/crlf.aspx?text=test
  • 用text值设定cookies["name"]
  • 那如果服务器没有过滤使用者的输入
    • 恶意连结:
      • http://macaron.tw/crlf.aspx?text=yu%0D%0ASet-cookie%3A%20CRLFcookie=macaron
        • 前面有介绍,Set-cookie是http response 的资讯,用来设定与保存cookie的
        • %0D:是经过URL编码的CR,程序中被视为\r
        • %0A:是经过URL编码的LF,程序中被视为\n
        • CRLF作为分界点
      • 恶意连结 decoder =
        • http://macaron.tw/crlf.aspx?text=yu
          Set-cookie: CRLFcookie=macaron
          
  • 如上面那样攻击者注入了换行字元,将原始的cookie添加了新的cookie资讯
  • 正常情况的 http response
content-type: text/html; charset=utf-8
date: Mon, 12 Oct 2020 14:35:39 GMT
server: cloudflare
set-cookie: name=yu
  • CRLF注入後的 http response
content-type: text/html; charset=utf-8
date: Mon, 12 Oct 2020 14:35:39 GMT
server: cloudflare
set-cookie: name=yu
set-cookie: CRLFcookie=macaron
  • 攻击者也可能不止注入http deader ,可能会注入html或是javascript程序码
  • 结论:虽然 CRLF Injection 的攻击方式主要还是跨网站,但因为可以任意注入,所以比xss要来的危险

<<:  Day 29 JavaScript : promise

>>:  Day 27 - 临时插播的中间件 - Middleware

事件监听的this:「这个」到底是哪一个?

欧阳克是谁杀的? 这个this是谁?要看凶手是谁而定! 前面有提到,这个e是在当事件发生时,事件处...

Day 12 Compose UI Dialog

今年的疫情蛮严重的,希望大家都过得安好,希望疫情快点过去,能回到一些线下技术聚会的时光~ 今天目标:...

Day 29. F2E-完善过渡动画

昨天後来在看效果时,有发现过渡动画的元素已经完全超出卡片组件的范围了,这个不是我们想要的效果 理想...

[day25]Vue实作-历史交易查询画面

在昨天的铁人贴文中制作了交易建立的画面,之前也有提到,透过批次,会於日档批次中,定期抓取历史缴费纪录...

Android学习笔记02

DataBinding简易的单项及双向绑定 使用DataBinding之前要先在DataBingin...