當在應用程序中探查命令注入及其他缺陷時,嘗試在受控制的數據插入相關字符后,戒指在每個字符前面插入一個反斜線,測試前面描述的邏輯缺陷。為防御跨點腳本的攻擊,許多應用程序使用的反斜線對出現在用戶輸入中的引號進行轉義。我們曾在各種WEB應用程序中遇到這種邏輯,包括網絡入侵檢測產品使用的Web管理界面。下面創新互聯為大家介紹在WEB應用程序中避免轉義的幾個要點。
1.功能
應用程序的設計者決定執行某種功能,該功能需要以自變量的形式向操作系統命令提交用戶控制的輸入。
重慶網站制作公司應用程序的開發者知道這種操作包含著內在的風險并決定凈化用戶輸入出現的任何潛在惡意字符,從而防御這種風險,如下面的字符都需要使用反斜線(\)進行轉義:
; | & < > '空格和換行符
以這種方式進行轉義后,shell命令解釋器就把它們當做提交給被調用命令的自變量的一部分,而非shell元字符。后者可用于注入其他命令或自變量、重定向輸出等。
2.假設
成都建站公司的開發者確信,它們設計的方法可有效防御命令注入攻擊。他們考慮了每一個可能被攻擊者利用的字符,并確保對它們進行了適當的轉義處理,因此而它們不會造成風險。
3.攻擊方法
開發者忘記了對轉義字符本身進行轉義。通常,攻擊者在利用尖端命令注入漏洞時并不直接使用反斜線,因此開發者認為它并不非惡意字符,然而,正是由于沒有對它進行轉義,攻擊者就可以完全破壞應用程序的凈化機制。
假設攻擊者向易受攻擊者的功能提交以下輸入:
foo\\;ls
如前所述,應用程序對其進行適當的轉義處理,因此攻擊者的輸入變成:
foo\\;ls
當這個數據作為自變量提交操作系統命令時,shell解釋把第一個反斜線作為轉義字符,而把第二個反斜線當做字面量反斜線處理;反斜線不是一個轉義字符,而是自變量的一部分。然后它遇到分號字符,該字符明顯沒有進行轉義。解釋把分號作為一個命令分隔符,因此繼續執行攻擊者注入命令。
分享名稱:邏輯缺陷之避免轉義
轉載來于:http://m.newbst.com/news37/158987.html
成都網站建設公司_創新互聯,為您提供手機網站建設、域名注冊、網站策劃、網站設計、建站公司、品牌網站設計
廣告
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源:
創新互聯