網易微博兩個儲存型XSS

2021-12-29 22:14:04 字數 2527 閱讀 8830

第乙個:

1、在首頁發微博,截獲包然後修改。

content=test&isretweet=0&replyoriginal=0&replyit=0&flag=0&imageurl=&voteurl=bbb"><>  

修改了voteurl引數為bbb"><>,然後提交。

2、回到首頁,已經發布了一條微博。但是在burp中有乙個下面這樣的請求:

(這個位址是我後來抓取的,不過已經能夠說明問題了)

內容為jquery16109319937340915203_1348642196756("bbb"><>");

這是乙個jsonp的請求,但是問題來了,這個資料沒有進行任何處理。並且這段**肯定是要載入到首頁作為js**執行的,我們構造閉合callback的**,後面再插入我們自己的js**肯定能夠在首頁執行的。

3、然後在傳送一條微博,voteurl引數改為");alert(document.cookie);//,再次訪問首頁,發現沒有彈框,也沒有和之前類似的請求了。不過我們之前忽略乙個問題就是,content這個引數為微博的內容,但是我們發的微博卻包含乙個網易微博的短鏈結位址 ,滑鼠移到上面,奇蹟出現,彈出了我們插入的js**。

4、voteurl這個引數從字面上理解應該是投票位址,初步分析是網易微博沒有對該引數校驗就直接轉換為短鏈結位址。從這個位址返回的內容也能夠判斷出,傳入到callback的引數就是我們voteurl的值。

5、執行了js**,但是並不知道為什麼執行?先在firebug中查詢getoriginal,在

中有找到:

define("utils/datasource",

function(a, b, c) ,

這個只是定義,在home.js中再查詢longurl,有如下**:

define("task/shorturl",

function(a, b, c) ,

function(a) ,

"jsonp")}})

}))});

在上面的**中我們大致可以知道問題產生的原因:

a) 修改引數voteurl發微博

b) voteurl會轉換成乙個短鏈結位址,短鏈結對應的長鏈結位址為voteurl的值

c) 微博中包含這個短鏈結位址,當滑鼠移動到短鏈結位址會觸發mouseenter事件

d) 響應mouseenter事件後會先取短鏈結後面的7個字元,把這7個字元作為q引數的值,然後通過ajax去請求資源。在這一步中執行我們的js**。

e) 最後把短鏈結所對應真是的長鏈結位址放到微博中a標籤的title屬性。

修復方案:

1、對voteurl引數進行判斷

2、通過jsonp呼叫的時候先對voteurl的值進行js轉義。

上乙個漏洞雖然是發微博處,還是需要乙個小的互動才能夠觸發漏洞(不過絕大多數人都會有這個互動的)。

在這個網易微博的漏洞中不需要互動,看到微博就會觸發xss漏洞。

1、首先說下漏洞是出現在建立投票處

2、在建立投票的地方可以上傳,容易出現xss的地方,我們上傳乙個,同時把投票的其他項也補充好,提交的時候截斷請求,會向服務端傳送如下資料

在實際測試中我在每個引數後面都加上類似">這樣的字元,建立投票,然後發表微博

3、訪問剛才發表的微博,然後在原始碼中搜尋 這樣的字元,很不幸真的有,出現在img標籤後面,由於是在首頁訪問,大致判斷是smallcoverurl這個引數沒有過濾好。

4、從新建立乙個投票然後提交,如下:

5、再次訪問新發表的微博,順利執行我們的alert(1)。

下圖:或者訪問:

修復方案:

1、對coverurl和smallcoverurl引數進行編碼處理,雖然我沒有測試coverurl這個引數,但是我覺得應該也存在問題。

兩個分頁儲存過程

drop proc dbo up getrecordbypage gocreate procedure dbo up getrecordbypage tblname varchar 255 表名 fldname varchar 255 主鍵欄位名 strcontent nvarchar 255 查詢...

新網雲郵第三個儲存型XSS

雲郵是新網互聯自主研發的第二代企業郵箱系統 在兼具第一代企業郵箱以 網域名稱郵箱 為核心特徵及系列功能的同時,融入了統一通訊概念和技術,整合郵件 簡訊 傳真 語音 即時通訊等多種通訊方式,支援pc 手機等多種終端裝置的使用,使得企業郵箱服務進入乙個新的時代。詳細說明 過濾不嚴 漏洞證明 郵件正文提交...

泛型應用的兩個訣竅

在泛型應用中得特別小心,否則會出現一些莫名奇妙的錯誤資訊,例如 public inte ce box 在如下使用該介面時 public void dobox box box 該方法看上去可以執行,但實際上不行,編譯器會提示 大概意思 capture 453 of not being compatib...