-
CRLF
鎖定
- 中文名
- 回車換行
- 外文名
- Carriage-Return Line-Feed
- 鍵盤類似按鍵
- Enter鍵
CRLF簡介
CRLFCRLF的意思
就是回車(CR, ASCII 13, \r) 換行(LF, ASCII 10, \n)。
換行在有的ASCII碼錶也用newline(簡nl)來進行表示,這裏的lf是line feed的概念,意思是一樣的。
CRLFCRLF命令
它表示鍵盤上的"Enter"鍵(可以用來模擬回車鍵)。
CRLFCRLF注入
針對這個漏洞黑客能夠做什麼?
就算黑客發現網站存在CRLF注入,他們仍然受到應用結構和這個缺陷的嚴重程度的限制。
對有些站點它將非常嚴重,而有些站點它只是很小的bug。
HTTP Header CRLF Injection
HTTP header的定義就是基於這樣的"Key: Value"的結構,用CRLF命令表示一行的結尾。
"Location:"頭用來表示重定向的URL地址,"Set-Cookie:"頭用來設置cookies。
如果用户的輸入經過驗證,其中存在CRLF的字符就可以被用來達到欺騙的目的。
CRLF實際應用
CRLF注入攻擊並沒有像其它類型的攻擊那樣著名。但是,當對有安全漏洞的應用程序實施CRLF注入攻擊時,這種攻擊對於攻擊者同樣有效,並且對用户造成極大的破壞。讓我們看看這些應用程序攻擊是如何實施的和你能夠採取什麼措施保護你的機構。
CRLFCRLF的含義
是“carriage return/line feed”,意思就是回車。這是兩個ASCII字符,分別排在第十三和第十位。CR和LF是在計算機終端還是電傳打印機的時候遺留下來的東西。電傳打字機就像普通打字機一樣工作。在每一行的末端,CR命令讓打印頭回到左邊。LF命令讓紙前進一行。雖然使用捲紙的終端時代已經過去了,但是,CR和LF命令依然存在,許多應用程序和網絡協議仍使用這些命令作為分隔符。
攻擊者在搜索安全漏洞的時候沒有忽略很少使用的CRLF。攻擊者可以通過在一段數據中加入CRLF命令來改變接受這個數據的應用程序處理這個數據的方式,從而執行CRLF注入攻擊。
CRLFCRLF攻擊
最基本的例子包括向記錄文件中增加偽造的記錄。也就是説,有安全漏洞的應用程序把一個用户輸入的內容寫到系統記錄文件中。攻擊者可以提供如下輸入內容:
Testing123MYSQL DATABASE ERROR: TABLE CORRUPTION
想像一下,一個應用程序收到用户輸入的一個文件名,然後對那個文件執行一個指令,如“ls -a .”。如果這個應用程序存在CRLF安全漏洞,攻擊者就可以輸入這樣的內容:
這個有安全漏洞的應用程序就會執行這個命令“ls -a File.txt”,然後再執行這個命令“rm -rf /”。如果這個應用程序是一個根程序,這可能就是它執行的最後一個命令,因為在根分區的全部文件都被刪除了。
考慮使用一種CRLF注入攻擊暴露使用一種基於網絡的匿名電子郵件系統的某個人的電子郵件地址。那個電子郵件系統的工作方式可能是這樣的:電子郵件的發送者用他們的電子郵件地址、信息主題和信息本身填寫一個表格。當這個表格遞交到網絡服務器上的時候,網絡服務器把這個表格轉換為一個SMTP電子郵件,並且發送給收件人。發送者永遠不會看到收件人的電子郵件地址。這個地址只有服務器知道。
如果這個應用程序存在CRLF攻擊安全漏洞,電子郵件的發件人可以通過創建下面這樣的一行主題來破壞收件人的匿名性:
Subject: Peekaboo, I see youBcc:
當有安全漏洞的應用程序得到這個數據的時候,它向這個郵件的文件頭增加一個不需要的行,創建一個發送到發件人郵件地址的這封郵件的盲送副本。在這個副本中,“To:”地址是看不到的,因此把收件人的郵件地址暴露給發送者。