2015-04-03 73 views
2

說我想惡意地調用已經定義的函數myfunc()。xss繞過尖括號和雙引號轉義

如何繞過雙引號和尖括號轉義來實現xss攻擊?

<h2>Profile of INPUTNAME</h2><p>INPUT2</p><a href="INPUTURL">Homepage</a> 

(上盒領域是用戶輸入) 我怎麼能叫MYFUNC()不增加它周圍的腳本標記?

回答

1

你可以試試這些注射

INPUTNAME=<img src=X onerror=myfunc> 
INPUTURL="><img src=X onerror=myfunc> 

將嘗試調用MYFUNC javascript函數,因爲它將無法加載名爲X

+1

我已經試過了,但雙引號和尖括號被編碼,因此不能生成有效的html語句。 – ccczhang 2015-04-03 04:56:57

+0

嗯,那麼它將會更加困難,但會嘗試使用空字節,例如%00 ...如果您將驗證或編碼委託給本地調用(如C),它將會工作。如果INPUTURL沒有被引用,我們可以嘗試許多其他的東西,但由於它被引用,我們不能注入JS調用。 – 2015-04-03 05:06:47

2

(UN)的圖像幸運似乎XSS不會在這種情況下是可能的。

如果尖括號和雙引號字符被轉義,這足以阻止HTML正文中的XSS和雙引號實體值上下文。

從技術上講,對於HTML正文XSS Experimental Minimal Encoding Rules&字符也應該被編碼,但我不能在這裏看到一種方法來將它用於HTML正文或​​實體值中的攻擊者的優勢。

唯一的例外是如果該字符集被指定爲UTF-7 (or as the attacker you could change it to such) then you could use the following attack

INPUTNAME = +ADw-script+AD4-myfunc()+ADw-/script+AD4- 

這將被渲染爲

<h2>Profile of <script>myfunc()</script></h2><p>INPUT2</p><a href="http://example.com">Homepage</a> 
+0

UTF-7是否適用於現代瀏覽器?在''標籤中設置它似乎沒有任何作用。 – 2015-06-18 03:39:18

+0

是的,Internet Explorer仍然支持它(不是Chrome或FF)。您可能需要將內容類型設置爲HTTP標頭而不是元標籤。 – SilverlightFox 2015-06-18 12:10:07

+0

如果你躲避'&',攻擊者可能用unicode編碼有效載荷? – 2016-05-26 04:11:27