溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

html注入是什么意思

發(fā)布時間:2021-06-21 11:41:15 來源:億速云 閱讀:238 作者:chen 欄目:web開發(fā)

本篇內(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注入?

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ù)。

HTML注入與XSS的區(qū)別

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 Injection - Reflected (GET)

反射型HTML注入(GET方式)

First name填入< p style=“color:red”>html< /p>,Last name填入test,發(fā)現(xiàn)html字母變成紅色,說明我們寫入的html代碼成功執(zhí)行了,此網(wǎng)站存在html注入。

html注入是什么意思

HTML Injection - Reflected (POST)

反射型HTML注入(POST方式)

注:GET方式提交數(shù)據(jù)后瀏覽器地址欄會把提交的數(shù)據(jù)顯示出來,POST則不會顯示。

與上面GET方式一樣
Firstname填入

html2

,Last name填入test,發(fā)現(xiàn)html2字母變成綠色,說明我們寫入的html代碼成功執(zhí)行了,此網(wǎng)站存在html注入。
html注入是什么意思

HTML Injection - Reflected (Current URL)

反射型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)用的防御代碼也不同。

(1)LOW

將等級設(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ā)生了變化


html注入是什么意思
html注入是什么意思

(2)medium

將等級設(shè)置為medium時,執(zhí)行下面的語句

$url = "<script>document.write(document.URL)</script>";

這里的document對象代表整個HTML文檔,可用來訪問頁面中的所有元素;

document.write()是動態(tài)向頁面寫入內(nèi)容
document.URL是設(shè)置URL屬性從而在同一窗口打開另一頁面

(3)high

將等級設(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 Injection - Stored (Blog)

存儲型HTML注入

注:反射型頁面刷新后就不存在了,而存儲型是寫入了服務(wù)器數(shù)據(jù)庫,刷新后照樣存在。

因此,存儲型危害性大大大于反射型。

在文本域輸入<p style=”color:red”>HTML </p>即可成功解析p標(biāo)簽,說明存在HTML注入。
html注入是什么意思

“html注入是什么意思”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(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)容。

AI