CRLF注入攻擊的原理和其防範措施

2021-07-04 11:27:19 字數 1955 閱讀 2012

crlf注入攻擊並沒有像其它型別的攻擊那樣著名。但是,當對有安全漏洞的應用程式實施crlf注入攻擊時,這種攻擊對於攻擊者同樣有效,並且對使用者造成極大的破壞。讓我們看看這些應用程式攻擊是如何實施的和你能夠採取什麼措施保護你的機構。

crlf的含義是「carriage return/line feed」,意思就是回車。這是兩個ascii字元,分別排在第十三和第十位。cr和lf是在計算機終端還是電傳印表機的時候遺留下來的東西。電傳打字機 就像普通打字機一樣工作。在每一行的末端,cr命令讓列印頭回到左邊。lf命令讓紙前進一行。雖然使用捲紙的終端時代已經過去了,但是,cr和lf命令依 然存在,許多應用程式和網路協議仍使用這些命令作為分隔符。

crlf的意思就是回車(cr, ascii 13, \r) 換行(lf, ascii 10, \n)。

這兩個acsii字元不會在螢幕有任何輸出,但在windows中廣泛使用來標識一行的結束。而在linux/unix系統中只有換行符。

cr和lf組合在一起即crlf命令,它表示鍵盤上的"enter"鍵。

攻擊者在搜尋安全漏洞的時候沒有忽略很少使用的crlf。攻擊者可以通過在一段資料中加入crlf命令來改變接受這個資料的應用程式處理這個資料的方式,從而執行cfrl注入攻擊。

crlf攻擊最基本的例子包括向記錄檔案中增加偽造的記錄。也就是說,有安全漏洞的應用程式把乙個使用者輸入的內容寫到系統記錄檔案中。攻擊者可以提供如下輸入內容:

testing123mysql database error: table corruption

當系統管理員在早上檢視他的紀錄時,他可能會用很多時間排除乙個根本就不存在的故障。狡猾的攻擊者在攻擊系統的另一部分時,可以使用這種特洛伊木馬分散管理員的注意力。

想像一下,乙個應用程式收到使用者輸入的乙個檔名,然後對那個檔案執行乙個指令,如「ls -a .」。如果這個應用程式存在crlf安全漏洞,攻擊者就可以輸入這樣的內容:

file.txtrm -rf /

這個有安全漏洞的應用程式就會執行這個命令「ls -a file.txt」,然後再執行這個命令「rm -rf /」。如果這個應用程式是乙個根程式,這可能就是它執行的最後乙個命令,因為在根分割槽的全部檔案都被刪除了。

考慮使用一種crfl注入攻擊暴露使用一種基於網路的匿名電子郵件系統的某個人的電子郵件位址。那個電子郵件系統的工作方式可能是這樣的:電子郵件的發 送者用他們的電子郵件位址、資訊主題和資訊本身填寫乙個**。當這個**遞交到網路伺服器上的時候,網路伺服器把這個**轉換為乙個smtp電子郵件,並 且傳送給收件人。傳送者永遠不會看到收件人的電子郵件位址。這個位址只有伺服器知道。

如果這個應用程式存在crlf攻擊安全漏洞,電子郵件的發件人可以通過建立下面這樣的一行主題來破壞收件人的匿名性:

subject: peekaboo, i see youbcc: [email protected]

當有安全漏洞的應用程式得到這個資料的時候,它向這個郵件的檔案頭增加乙個不需要的行,建立乙個傳送到發件人郵件位址的這封郵件的盲送副本。在這個副本中,「to:」位址是看不到的,因此把收件人的郵件位址暴露給傳送者。

使用良好的程式設計技術能夠避免包括crlf攻擊在內的注入攻擊。要使你的應用程式不受crfl注入攻擊,需要你保持與防禦sql注入攻擊等其它型別的注入 攻擊一樣的警惕性:永遠不要相信輸入的內容!在你控制範圍以外的任何**的輸入內容都必須要進行檢查,在你的應用程式對資料執行操作之前,任何不符合預期 的資料型別的字元都要刪除。例如,如果你期待著乙個電子郵件主題行,這個資料中的所有的字元都應該是字母、數字和標點符號。如果你的應用程式期待著乙個文 件名,這個資料中只能包含合法地在檔名中使用的字元。如果程式設計師在這兩個例子的情況下簡單地過濾掉cr和lf字元,這個攻擊就失敗了。

使用者輸入是「壞字元」的乙個**。但是,你不要忘記檢查你從來沒有編寫過的其它程式輸入的內容。在許多情況下,攻擊者可以把乙個注入攻擊從乙個有漏洞的 應用程式轉移到乙個基本的例行程式中。程式設計師不會檢查基本的例行程式中的資料,因為那裡的資料不是直接來自於使用者。你要把任何你不能跟蹤到可信賴的**的 資料都當作被感染的資料。這樣,你就安全了。

**:

CRLF注入攻擊原理和防範措施

crlf注入攻擊並沒有像其它型別的攻擊那樣著名。但是,當對有安全漏洞的應用程式實施crlf注入攻擊時,這種攻擊對於攻擊者同樣有效,並且對使用者造成極大的破壞。讓我們看看這些應用程式攻擊是如何實施的和你能夠採取什麼措施保護你的機構。crlf的含義是 carriage return line feed ...

SQL注入的實現原理和防範

sql注入是從正常的www埠訪問,而且表面看起來跟一般的web頁面訪問沒什麼區別,所以目前市面的防火牆都不會對sql注入發出警報,如果管理員沒檢視iis日誌的習慣,可能被入侵很長時間都不會發覺。sql注入的手法相當靈活,在注入的時候需要根據具體情況進行分析,構造巧妙的sql語句,從而成功獲取想要的資...

CSRF 攻擊的原理和防範措施

使用者c訪問正常 a時進行登入,瀏覽器儲存a的cookie 而攻擊 b在訪問 a的時候,瀏覽器會自動帶上 a的cookie 所以 a在接收到請求之後可判斷當前使用者是登入狀態,所以根據使用者的許可權做具體的操作邏輯,造成 攻擊成功 在指定表單或者請求頭的裡面新增乙個隨機值做為引數 在響應的cooki...