什麼是html注入

青灯夜游
發布: 2023-01-06 11:17:51
原創
6179 人瀏覽過

HTML注入是一種漏洞,一種網路攻擊方式,當網頁無法清理使用者提供的輸入或驗證輸出時,攻擊者就可以偽造自己的有效負載,並透過易受攻擊的欄位將惡意HTML程式碼注入應用程序,從而修改網頁內容,甚至取得一些敏感資料。

什麼是html注入

本教學操作環境:windows7系統、HTML5版、Dell G3電腦。

什麼是HTML注入?

HTML注入(Hypertext Markup Language Injection)中文意思是“超文本標記性語言注入”,眾所周知HTML含有各種標籤,如果Web應用程式對使用者輸入的資料沒進行徹底的處理的話,那麼一些非法用戶提交的數據可能含有HTML其他標籤,而這些數據又恰好被伺服器當作正常的HTML標籤顯示,那麼最終的結果是非法標籤被解析(可以應用於釣魚、社會工程學等) ,對其他用戶造成很大影響。

攻擊者可以偽造自己的有效負載,並透過易受攻擊的欄位將惡意HTML程式碼注入應用程序,從而修改網頁內容,甚至取得一些敏感資料。

HTML注入與XSS的區別

XSS(Cross-site Scripting)中文翻譯是“跨站腳本攻擊”,XSS本質上是HTML注入攻擊,但又不同於HTML注入,XSS利用腳本標記運行JavaScript等腳本程序,可以透過JavaScript取得機密資料和一些欄位危險操作,而HTML注入只是使用HTML標籤修改頁面內容。

HTML Injection - Reflected (GET)

反射型HTML注入(GET方式)

First name填入html,Last name填入test,發現html字母變成紅色,表示我們寫入的html程式碼成功執行了,此網站存在html注入。

什麼是html注入

HTML Injection - Reflected (POST)

反射型HTML注入(POST方式)

#附註:GET方式提交資料後瀏覽器網址列會把提交的資料顯示出來,POST則不會顯示。

與上面GET方式一樣
Firstname填入

html2

,Last name填入test,發現html2字母變成綠色,說明我們寫入的html程式碼成功執行了,此網站存在html注入。
什麼是html注入

HTML Injection - Reflected (Current URL)

反射式HTML注入(Current URL)

#首先,我們分析下原始碼
核心程式碼

 <div>

    <h1>HTML Injection - Reflected (URL)</h1>

    <?php  echo "<p align=\"left\">Your current URL: <i>" . $url . "</i>";?>

</div>
登入後複製

#這段程式碼中有一段PHP程式碼,執行html語句,輸出一段“Your current URL:”字符,並調用$url變量,將輸出的內容跟在後面。

防護程式碼

$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= &#39;&#39;接受的参数来自请求头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>
登入後複製

閱讀防禦程式碼可以了解到根據設定的難度不通,呼叫的防禦程式碼也不同。

(1)LOW

將等級設為Low時,執行下面的語句

$url = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
登入後複製

這裡的$_SERVER [「HTTP_HOST」]表示取得目前網域名稱
這裡的$_SERVER[「REQUEST_URI」]」是取得網域名稱後面的完整的位址路徑

透過burp抓包修改host參數,可以發現頁面上發生了變化


什麼是html注入
什麼是html注入

(2)medium

將等級設為medium時,執行下面的語句

$url = "<script>document.write(document.URL)</script>";
登入後複製

這裡的document物件代表整個HTML文檔,可用來存取頁面中的所有元素;

document.write()是動態向頁面寫入內容
document.URL是設定URL屬性從而在同一視窗開啟另一頁面

(3)high

將等級當設定為high時,執行下面的語句

$url = "http://" . $_SERVER["HTTP_HOST"] . xss_check_3($_SERVER["REQUEST_URI"]);
登入後複製

這裡呼叫了xss_check_3函數對host後面的部分進行了過濾處理,使得無法進行注入。

#HTML Injection - Stored (Blog)

儲存型HTML注入

附註:反射型頁面刷新後就不存在了,而儲存型是寫入了伺服器資料庫,刷新後照樣存在。

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

在文字域輸入

HTML

即可成功解析p標籤,說明存在HTML注入。
什麼是html注入

推薦教學:《html影片教學

以上是什麼是html注入的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板