2013-01-12 42 views
2

我在滲透測試微軟IIS運行/ 7.5 Web服務器的ASP.NET應用程序,我送它下面的GET請求參數:XSS:打破了不完全的編碼

&search=aaa%20%*+,-/;<=>^|"'bbb 

一的參數是搜索,我已經輸入了上面可以看到的值。該值在返回的響應印刷兩次如下:

第一個參數:

<input name="nn" type="text" value="aaa %* ,-/;&lt;=>^|&quot;&#39;bbb" class="cc" /> 
中的第一個條目

引用參數如下:

  • 「==>&quot;
  • '==>&#39;
  • < ==>&lt;

我想沒有辦法擺脫那裏,因爲價值是逃脫,我們不能輸入「字符正確。儘管如此,即使不可能爆發,所有參數都沒有正確逃脫。

第二個參數:

<strong>aaa %* ,-/;<=>^|"'bbb</strong> 

我們可以看到,所有的字符都爲他們的,但有一個問題。 <字符後面不能有任何[a-zA-Z0-9](也可能是其他字符)字符,因爲我們可能會被ASP.NET過濾器阻止。

如果我們輸入以下內容:

&searchQuery=aaa<#script>alert('Hi');<#/script>bbb 

我們得到以下的輸出:

<strong>aaa<#script>alert('Hi');<#/script>bbb</strong> 

我問,如果你看到任何方式擺脫的限制,並執行任意JavaScript代碼儘管如此?

感謝您

回答

0

HTML要求tag name立即跟隨start tag開分隔符<

開始標記必須具有以下格式:

  1. 的第一個字符開始標記必須是U + 003C LESS-SIGN SIGN字符(<)。
  2. 開始標籤的下幾個字符必須是元素的標籤名稱。

[...]

任何超出最多也就是一個瀏覽器的解釋怪癖。

但也有其他的標籤不是像標記聲明標籤元素標籤(<!…>),處理指示標記(<?…>)和由某些瀏覽器所識別,並允許某些黑客替代註釋標籤(<%…%>)。

看看常見的XSS備忘單,如OWASP’s XSS Filter Evasion Cheat SheetHTML5 Security Cheatsheet,或者一些HTML fuzzers,如Shazzer