您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“HTML注入怎么實現(xiàn)”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
什么是HTML?
HTML稱為超文本標(biāo)記語言,是一種標(biāo)識性的語言。它包括一系列標(biāo)簽.通過這些標(biāo)簽可以將網(wǎng)絡(luò)上的文檔格式統(tǒng)一,使分散的Internet資源連接為一個邏輯整體。HTML文本是由HTML命令組成的描述性文本,HTML命令可以說明文字,圖形、動畫、聲音、表格、鏈接等。HTML用于設(shè)計包含“超文本”的網(wǎng)站,以便將“文本包含在文本中”作為超鏈接,并包含包裹數(shù)據(jù)項以在瀏覽器中顯示的元素組合。
那么這些元素是什么?
“元素是HTML頁面的所有內(nèi)容,即,它包含開始和結(jié)束標(biāo)記以及介于兩者之間的文本內(nèi)容?!?/p>
1. HTML標(biāo)簽
HTML標(biāo)簽標(biāo)記了內(nèi)容片段,例如“標(biāo)題”,“段落”,“表單”等。標(biāo)記符中的標(biāo)記元素用尖括號括起來,帶斜杠的元素表示該標(biāo)記說明結(jié)束;大多數(shù)標(biāo)記符必須成對使用,以表示作用的起始和結(jié)束。瀏覽器不會顯示這些HTML標(biāo)記,而是利用它們來捕獲網(wǎng)頁的內(nèi)容。
2. HTML屬性
超文本標(biāo)記語言定義了多種數(shù)據(jù)類型的元素內(nèi)容,如腳本數(shù)據(jù)和樣式表的數(shù)據(jù),和眾多類型的屬性值,包括ID、名稱、URI、數(shù)字、長度單位、語言、媒體描述符、顏色、字符編碼、日期和時間等。所有這些數(shù)據(jù)類型都是專業(yè)的字符數(shù)據(jù)。
在這里,“ href”是“屬性名稱”,“ http:// hackingarticles”是“屬性值”。
現(xiàn)在我們已經(jīng)了解了基本的HTML術(shù)語,讓我們查看“ HTML元素流程圖”,然后將進一步嘗試將它們?nèi)繉崿F(xiàn)以創(chuàng)建一個簡單的網(wǎng)頁。
3. 基本HTML頁面:
互聯(lián)網(wǎng)上的每個網(wǎng)頁都是HTML文件。這些文件只不過是擴展名為“.html”的簡單純文本文件,通過web瀏覽器保存和執(zhí)行。
因此,讓我們嘗試在記事本中創(chuàng)建一個簡單的網(wǎng)頁并將其另存為hack.html:
讓我們在瀏覽器中執(zhí)行這個“ hack.html”文件,看看會發(fā)生什么。
我們已經(jīng)成功設(shè)計了我們的第一個網(wǎng)頁。但是這些標(biāo)簽如何為我們工作,讓我們看看它們:
標(biāo)記符< html>:說明該文件是用超文本標(biāo)記語言來描述的,它是文件的開頭,而則表示該文件的結(jié)尾,它們是超文本標(biāo)記語言文件的開始標(biāo)記和結(jié)尾標(biāo)記。
;,網(wǎng)頁中顯示的實際內(nèi)容均包含在這2個正文標(biāo)記符之間。正文標(biāo)記符又稱為實體標(biāo)記。
標(biāo)簽是空標(biāo)簽,可插入一個簡單的換行符。
標(biāo)簽用于設(shè)置網(wǎng)頁中的標(biāo)題文字,被設(shè)置的文字將以黑體或粗體的方式顯示在網(wǎng)頁中。
是段落的開始標(biāo)志,
是段落的結(jié)束標(biāo)志
標(biāo)簽定義一個錨(anchor)。這有助于我們建立“超鏈接”。錨有兩種用法創(chuàng)建一個指向其他文檔的鏈接(通過href屬性);創(chuàng)建一個文檔內(nèi)部的書簽(通過name屬性)
我想你現(xiàn)在已經(jīng)清楚了“什么是HTML及其主要用途”和“我們?nèi)绾螌崿F(xiàn)這一切”。因此,讓我們嘗試找出主要漏洞,并了解攻擊者如何將任意HTML代碼注入易受攻擊的網(wǎng)頁,以修改托管內(nèi)容。
HTML注入簡介
HTML注入是最簡單和最常見的漏洞之一,當(dāng)網(wǎng)頁無法清理用戶提供的輸入或驗證輸出時,這樣,攻擊者就可以偽造自己的有效負(fù)載,并通過易受攻擊的字段將惡意HTML代碼注入應(yīng)用程序,從而修改網(wǎng)頁內(nèi)容,甚至獲取一些敏感數(shù)據(jù)。
讓我們來看看這個場景,并了解這種HTML注入攻擊是如何執(zhí)行的:
假設(shè)有一個web應(yīng)用程序,該應(yīng)用程序存在HTML注入漏洞,并且它沒有驗證任何特定的輸入。因此,攻擊者利用這一點,將惡意的“HTML登錄表單”注入“免費電影票”的騙局中,從而誘使受害者提交其敏感的憑證。
當(dāng)受害者瀏覽該特定網(wǎng)頁時,找到了這些“免費電影票”的選項,當(dāng)他單擊它時,他會看到該應(yīng)用程序的登錄屏幕,但這些只是攻擊者精心制作的“ HTML表單”。因此,一旦他輸入了他的憑證,攻擊者就會捕獲所有憑證,從而導(dǎo)致受害者泄露他的數(shù)據(jù)。
HTML注入的影響
當(dāng)網(wǎng)頁中的輸入字段未正確清理時,因此有時此HTML注入漏洞可能會導(dǎo)致我們進行跨站點腳本(XSS)或服務(wù)器端請求偽造(SSRF)攻擊。因此,該漏洞的嚴(yán)重性級別為“中等”,CVSS評分為5.3分,具體如下:
CWE-80:網(wǎng)頁中與腳本相關(guān)的HTML標(biāo)記的不正確中和。
CWE-79:網(wǎng)頁生成期間輸入的不正確中和。
HTML注入、XSS
在這種攻擊過程中,我們有機會免除執(zhí)行HTML注入攻擊,而我們卻遇到了XSS攻擊,因為HTML注入幾乎類似于跨站點腳本。但是如果我們仔細觀察這兩者之間的關(guān)系,我們會發(fā)現(xiàn)在XSS攻擊期間,攻擊者有機會注入并執(zhí)行Javascript代碼,而在HTML注入中,攻擊者一定會使用某些HTML標(biāo)記來破壞網(wǎng)頁。
現(xiàn)在,讓我們深入研究不同的HTML注入攻擊,并查看異常方式如何破壞網(wǎng)頁并捕獲受害者的憑據(jù)。
Stored HTML
通過這個漏洞,注入的惡意腳本被永久性地存儲在web應(yīng)用服務(wù)器中,當(dāng)用戶訪問被注入的網(wǎng)頁時,應(yīng)用服務(wù)器會進一步將其回傳給用戶。但是,當(dāng)客戶機單擊作為網(wǎng)站的正式部分出現(xiàn)的有效負(fù)載時,注入的HTML代碼將由瀏覽器執(zhí)行。
Stored HTML的最常見示例是博客中的“評論選項”,它允許任何用戶以管理員或其他用戶的評論形式輸入其反饋。
現(xiàn)在,讓我們嘗試?yán)么舜鎯Φ腍TML漏洞并獲取一些憑據(jù)。
利用Stored HTML
我在我的瀏覽器中打開了目標(biāo)IP,并以bee:bug的身份登錄到BWAPP中,此外,我還將“Choose Your bug”選項設(shè)置為“HTML注入-存儲(Blog)”,并啟動了hack按鈕。
現(xiàn)在,我們將被重定向到web頁面,該頁面存在HTML注入漏洞,該漏洞允許用戶在blog中提交其條目,如屏幕截圖所示。
首先,我們將通過“bee”生成一個普通的用戶條目作為“Hacking Articles”,以確認(rèn)輸入數(shù)據(jù)已成功地存儲在web服務(wù)器的數(shù)據(jù)庫中,從而在“entry field”中可見。
現(xiàn)在,讓我們嘗試注入我們的惡意負(fù)載,它將在這個目標(biāo)網(wǎng)頁上創(chuàng)建一個假用戶登錄表單,從而將捕獲的請求轉(zhuǎn)發(fā)到我們的IP。
在給定的文本區(qū)域內(nèi)輸入以下HTML代碼,以便設(shè)置HTML攻擊。
從下面的圖片你可以看到,當(dāng)我點擊“提交”按鈕,一個新的登錄表單已經(jīng)顯示在網(wǎng)頁上。因此,這個登錄表單現(xiàn)在被放入應(yīng)用程序的web服務(wù)器中,每當(dāng)受害者訪問這個惡意登錄頁面時,它都會呈現(xiàn)這個表單,在他看來,這個表單是很官方的。
現(xiàn)在讓我們在4444端口啟用netcat偵聽器,以便捕獲受害者的請求。
這需要耐心等待,直到受害者啟動這個頁面進入他的瀏覽器,并輸入了他的憑證。
從上面的圖像中,您可以看到用戶“ Raj”打開了網(wǎng)頁,并嘗試以raj:123的身份登錄內(nèi)部。
因此,讓我們回到偵聽器并檢查是否在響應(yīng)中捕獲了憑據(jù)。
從下圖可以看到,我們已經(jīng)成功獲取了憑據(jù)。
Reflected HTML
當(dāng)web應(yīng)用程序?qū)τ脩舻妮斎肓⒓醋龀鲰憫?yīng)而不驗證用戶輸入的內(nèi)容時,就會出現(xiàn)反射的HTML(也稱為“非持久性”),這可能導(dǎo)致攻擊者在單個HTML響應(yīng)中注入瀏覽器可執(zhí)行代碼。由于惡意腳本不會存儲在web服務(wù)器中,因此攻擊者需要通過網(wǎng)絡(luò)釣魚發(fā)送惡意鏈接來誘捕用戶。
此漏洞很容易在網(wǎng)站的搜索引擎中找到:在這里,攻擊者在搜索文本框中編寫一些任意的HTML代碼,如果網(wǎng)站有漏洞,結(jié)果頁面將返回作為對這些HTML實體的響應(yīng)。
反映HTML基本上分為三種類型:
Reflected HTML GET
Reflected HTML POST
Reflected HTML Current URL
在利用Reflected HTML之前,讓我們回想一下——使用GET方法,我們從特定的源請求數(shù)據(jù),而POST方法用于將數(shù)據(jù)發(fā)送到服務(wù)器以創(chuàng)建/更新資源。
Reflected HTML GET
在這里,我們創(chuàng)建了一個網(wǎng)頁,這樣用戶就可以用他的“名字”提交“反饋”。
因此,當(dāng)用戶“Raj Chandel”以“Good”提交他的反饋時,會有一條消息提示說“感謝Raj Chandel,感謝您寶貴的時間。”
因此,這個即時響應(yīng)和URL中的“name/value”對顯示,這個頁面可能容易受到HTML注入的攻擊,并且數(shù)據(jù)是通過GET方法請求的。
因此,現(xiàn)在讓我們嘗試向此“表單”中注入一些HTML代碼,以便對其進行確認(rèn)。在“名稱”字段中鍵入以下腳本,如下所示:
并將“反饋”設(shè)置為“良好”
從下面的圖片中可以看到用戶的名字“Raj Chandel”已經(jīng)被修改為響應(yīng)消息中的標(biāo)題。
想知道為什么會這樣,讓我們看看下面的代碼片段。
為了便于在屏幕上反映消息,開發(fā)人員沒有設(shè)置任何輸入驗證,也就是說,他只是通過“$\u GET”變量包含輸入名稱來“回顯”“感謝消息”。
“有時開發(fā)人員會在輸入字段中設(shè)置一些驗證,從而將我們的HTML代碼重新引用到屏幕上,而不會呈現(xiàn)。”
從下圖中可以看到,當(dāng)我試圖在name字段中執(zhí)行HTML代碼時,它將其作為純文本放回原處,如下所示:
那么漏洞是不是已經(jīng)修補好了?
讓我們用我們的助手“burpsuite”捕獲它發(fā)出的請求來檢查這一切,并將捕獲的請求直接發(fā)送到“Repeater”選項卡。
在“Repeater”選項卡中,當(dāng)我單擊“Go”按鈕檢查生成的響應(yīng)時,我發(fā)現(xiàn)我的HTML實體在這里被HTML解碼為:
因此,我處理了完整的HTML代碼“< a href=http://hackingarticles.in“ > < h3 > Raj < /h3 >< /a >”并將其全部粘貼到解碼器選項卡中。在右邊的托盤上,我點擊了“編碼為”并選擇了URL一。
獲得編碼輸出后,我們將再次在URL的“編碼為”中對其進行設(shè)置,以使其獲得雙URL編碼格式。
現(xiàn)在讓我們嘗試一下,復(fù)制完整的雙重編碼的URL,然后將其粘貼到Request選項的Repeater選項卡中的“ name =”字段中。
單擊“執(zhí)行”按鈕以檢查其生成的響應(yīng)。
從下圖可以看到,我們已經(jīng)成功地操縱了響應(yīng)。
現(xiàn)在,只需在“ 代理”選項卡中進行類似的修改,然后單擊“轉(zhuǎn)發(fā)”按鈕即可。從下圖可以看到,我們也通過其驗證字段破壞了此網(wǎng)頁。
讓我們檢查一下代碼片段,看看開發(fā)人員在哪里進行了輸入驗證:
從下面的圖片可以看到,這里的開發(fā)人員為變量數(shù)據(jù)做了一個“hack”函數(shù),甚至他將“
從下面的圖片中,您可以看到開發(fā)人員在name字段實現(xiàn)了函數(shù)hack。
Reflected HTML POST
與“GET webpage”類似,“Name”和“Feedback”字段也存在漏洞,因為POST方法已經(jīng)實現(xiàn),因此表單數(shù)據(jù)不會顯示在URL中。
讓我們再次嘗試破壞此網(wǎng)頁,但這次我們將添加一個圖像而不是靜態(tài)文本
從下圖中,您可以看到“Ignite technologies徽標(biāo)”已被放置在屏幕上方,因此攻擊者甚至可以在此處插入視頻、音頻或GIF等其他媒體格式。
Reflected HTML Current URL
如果網(wǎng)頁上沒有輸入字段,web應(yīng)用程序是否會容易受到HTML注入的攻擊?
是的,不需要像評論框或搜索框這樣的輸入文件,有些應(yīng)用程序會在其網(wǎng)頁上顯示您的URL,它們可能會受到HTML注入的攻擊,因為在這種情況下,URL充當(dāng)它的輸入字段。
從上面的圖像中,您可以看到當(dāng)前URL在網(wǎng)頁上顯示為“ http://192.168.0.16/hack/html_URL.php ”。因此,讓我們抓住機會,看看我們可以得到什么。
調(diào)整您的“burpsuite”并捕獲正在進行的HTTP請求
現(xiàn)在讓我們使用以下命令處理此請求:
單擊前進按鈕以在瀏覽器上檢查結(jié)果。
從下面的圖片中,您可以看到我們已經(jīng)成功地破壞了網(wǎng)站,只需將我們所需的HTML代碼注入到web應(yīng)用程序的URL中。
讓我們看一下它的代碼,看看開發(fā)人員如何在屏幕上獲取當(dāng)前URL。
在這里,開發(fā)人員使用PHP全局變量作為$ _SERVER來捕獲當(dāng)前頁面URL。此外,他用“ HTTP_HOST”修改了主機名,并用“ REQUEST_URI”修改了URL的請求資源位置,并將其全部放在$ url變量中。
在HTML部分,他只需使用$url變量設(shè)置echo,而不需要任何特定的驗證,以便用url顯示消息。
緩解措施
開發(fā)人員應(yīng)該設(shè)置他的HTML腳本,從用戶輸入中過濾元字符
開發(fā)人員應(yīng)該實現(xiàn)一些功能來驗證用戶輸入,使其不包含任何可能導(dǎo)致虛擬損壞的特定標(biāo)記。
“HTML注入怎么實現(xiàn)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。