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