您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“html注入是什么意思”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
HTML注入是一種漏洞,一種網(wǎng)絡(luò)攻擊方式,當(dāng)網(wǎng)頁無法清理用戶提供的輸入或驗(yàn)證輸出時,攻擊者就可以偽造自己的有效負(fù)載,并通過易受攻擊的字段將惡意HTML代碼注入應(yīng)用程序,從而修改網(wǎng)頁內(nèi)容,甚至獲取一些敏感數(shù)據(jù)。
本教程操作環(huán)境:windows7系統(tǒng)、HTML5版、Dell G3電腦。
HTML注入(Hypertext Markup Language Injection)中文意思是“超文本標(biāo)記性語言注入”,眾所周知HTML含有各種標(biāo)簽,如果Web應(yīng)用程序?qū)τ脩糨斎氲臄?shù)據(jù)沒進(jìn)行徹底的處理的話,那么一些非法用戶提交的數(shù)據(jù)可能含有HTML其他標(biāo)簽,而這些數(shù)據(jù)又恰好被服務(wù)器當(dāng)作正常的HTML標(biāo)簽顯示,那么最終的結(jié)果是非法標(biāo)簽被解析(可以應(yīng)用于釣魚、社會工程學(xué)等),對其他用戶造成很大影響。
攻擊者可以偽造自己的有效負(fù)載,并通過易受攻擊的字段將惡意HTML代碼注入應(yīng)用程序,從而修改網(wǎng)頁內(nèi)容,甚至獲取一些敏感數(shù)據(jù)。
XSS(Cross-site Scripting)中文翻譯是“跨站腳本攻擊”,XSS本質(zhì)上是HTML注入攻擊,但又不同于HTML注入,XSS利用腳本標(biāo)記運(yùn)行JavaScript等腳本程序,可以通過JavaScript獲取機(jī)密數(shù)據(jù)和一些列危險操作,而HTML注入只是使用HTML標(biāo)簽修改頁面內(nèi)容。
反射型HTML注入(GET方式)
First name填入< p style=“color:red”>html< /p>,Last name填入test,發(fā)現(xiàn)html字母變成紅色,說明我們寫入的html代碼成功執(zhí)行了,此網(wǎng)站存在html注入。
反射型HTML注入(POST方式)
注:GET方式提交數(shù)據(jù)后瀏覽器地址欄會把提交的數(shù)據(jù)顯示出來,POST則不會顯示。
與上面GET方式一樣
Firstname填入
html2
,Last name填入test,發(fā)現(xiàn)html2字母變成綠色,說明我們寫入的html代碼成功執(zhí)行了,此網(wǎng)站存在html注入。
反射型HTML注入(Current URL)
首先,我們分析下源碼
核心代碼
<div id="main"> <h2>HTML Injection - Reflected (URL)</h2> <?php echo "<p align=\"left\">Your current URL: <i>" . $url . "</i></p>";?> </div>
這段代碼中有一段PHP代碼,執(zhí)行html語句,輸出一段“Your current URL:”字符,并調(diào)用$url變量,將輸出的內(nèi)容跟在后面。
防護(hù)代碼
$url= ""; switch($_COOKIE["security_level"]) { case "0" : // $url = "http://" . $_SERVER["HTTP_HOST"] . urldecode($_SERVER["REQUEST_URI"]); $url = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]; //$url= ''接受的參數(shù)來自請求頭HOST和URL break; case "1" : $url = "<script>document.write(document.URL)</script>"; break; case "2" : $url = "http://" . $_SERVER["HTTP_HOST"] . xss_check_3($_SERVER["REQUEST_URI"]); break; default : // $url = "http://" . $_SERVER["HTTP_HOST"] . urldecode($_SERVER["REQUEST_URI"]); $url = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]; break; } <select name="security_level"> <option value="0">low</option> <option value="1">medium</option> <option value="2">high</option> </select>
閱讀防御代碼可以了解到根據(jù)設(shè)置的難度不通,調(diào)用的防御代碼也不同。
將等級設(shè)置為Low時,執(zhí)行下面的語句
$url = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
這里的 $_SERVER[“HTTP_HOST”]表示獲取當(dāng)前域名
這里的 $_SERVER[“REQUEST_URI”]”是獲取域名后面的完整的地址路徑
通過burp抓包修改host參數(shù),可以發(fā)現(xiàn)頁面上發(fā)生了變化
將等級設(shè)置為medium時,執(zhí)行下面的語句
$url = "<script>document.write(document.URL)</script>";
這里的document對象代表整個HTML文檔,可用來訪問頁面中的所有元素;
document.write()是動態(tài)向頁面寫入內(nèi)容
document.URL是設(shè)置URL屬性從而在同一窗口打開另一頁面
將等級設(shè)置為high時,執(zhí)行下面的語句
$url = "http://" . $_SERVER["HTTP_HOST"] . xss_check_3($_SERVER["REQUEST_URI"]);
這里調(diào)用了xss_check_3函數(shù)對host后面的部分進(jìn)行了過濾處理,使得無法進(jìn)行注入。
存儲型HTML注入
注:反射型頁面刷新后就不存在了,而存儲型是寫入了服務(wù)器數(shù)據(jù)庫,刷新后照樣存在。
因此,存儲型危害性大大大于反射型。
在文本域輸入<p style=”color:red”>HTML </p>即可成功解析p標(biāo)簽,說明存在HTML注入。
“html注入是什么意思”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。