黑名單惹的禍啊
在回帖處,有個編輯器功能。
編輯器存在一個可以編輯源碼,當時第一反映就是。這裡肯定存在xss。
果不其然,但是,在開始的時候測試
<script>alert(1)</script>
以及
<img src=1 onerror=alert(1) />
的時候,發現都無法執行js代碼。
於是乎,便上http://html5sec.org/找些偏門的代碼測試。
當測試:<form id="test"></form><button form="test" formaction="javascript:alert(1)">X</button>
的時候,我驚訝的發現居然沒過濾。如圖,點擊之後觸發
當然,這個還需要點擊。畢竟回帖的人不是每個人都會點擊。那怎麼樣才能把xss的成功率擴大呢?
別著急。
在http://html5sec.org/裡,還是有不少可以使用的代碼。譬如:
<input onfocus=alert(1) autofocus> 打開頁面時候觸發(ie10,谷歌,火狐4.5有效)
除了上面這個,還有很多都是通殺浏覽器,不一一測試,僅僅拿這個證明危害。
這樣我們就可以廣撒網撈魚了。
漏洞證明:值得一提的是。<input onfocus=alert(1) autofocus> 雖然是以onfocus來執行js。但是別忘了我們還有eval。可以構造<input onfocus=eval("這裡是我們想執行的代碼") autofocus>
來完成攻擊。構造好的js如下:
當用戶訪問這篇帖子,就是受害者了。
不再一一去嘗試了。希望phpcms團隊也能重視該問題。
修復方案:
該編輯器是基於黑名單過濾的。如果實在要開啟編輯源碼功能,建議采用白名單過濾。不然最好還是關閉開放編輯源碼功能的權限,因為你們根本不知道跨站師會用哪些你們根本不知道的代碼。
這裡還有一枚反射型的xss,順便提一下吧:
http://118.244.225.145/index.php?m=ask&c=team&a=team_list&order=team_point&catid=&belong=team&name="><script>alert%281%29<%2Fscript>