國慶的前一天,突然有乙個漏洞單接到我這裡來,當時心裡很著急,第一實習生小白,對於我們這種支付部門有漏洞不是很可怕,以前沒見過,覺得有點嚇人。第二,為什麼是國慶的前一天呢,不能發版本。看了下,就是熟悉又不太熟悉的 dom xss 漏洞。熟悉是因為以前書裡經常見,不熟悉是因為以前沒有實踐過。
現象及解決辦法安全部門的同事說,它更改了 uin, 然後就可以輸出 使用者uin, 也就是俗稱的 alert 出來。
xss 漏洞" rel="gallery0">
xss 漏洞
大概是這樣乙個步驟
document.cookie = "uin=
然後重新整理了我的網頁,由於我獲取cookie的方法不嚴謹,這個時候就alert出來了。
解決方法當然是換掉我不嚴謹的獲取cookie的方法,正確獲取 cookie 的方法應該如下:
function getcookie(b) ;
var a;
return filterxss((a=document.cookie.match(regexp("(^|;\\s*)"+b+"=([^;]*)(;|$)")))?unescape(a[2]):null)
}**原因那麼我的 cookie 是怎麼獲取的呢?
var ret = document.cookie.match(new regexp("(?:^|;\\s)" + name + "=(.*?)(?:;\\s|$)"));
return ret ? ret[1] : "";
為啥我的就不嚴謹了呢?
日常我們的cookie 是這樣一種格式:
所以上面**通過 = 和 ; 獲得對應的 cookie , 似乎沒有錯,但是如果一遇到惡意攻擊,沒有對不合法字元進行任意轉義就輸出到頁面上,就會造成 web 前端的安全大隱患。所以看到最上面我們的好方法裡面,是有對不合法字元進行轉義的。所以我們這樣處理後,就會變成下面這樣乙個結果:
轉義後延伸記得我剛來面試的時候,當時 qq 問了我獲取 cookie 的方法,那時之前做專案寫過獲取 cookie 的方法,還是特別傻的方法,**大概是這樣的:
function getcookie(c_name)
}return ""
}沒錯,就是正則也沒用,直接去找 = 和 ;之間的串是否與要查詢的相同。這個方法在 w3cshool 上作為了標準方法,現在看來是誤導人了。 當時 qq 問我有沒有更好的方法,我說正則,但是正則還不能很快的寫出來。那麼這種方法除了效率不那麼高以外,有沒有上面提到的安全隱患呢?**做個實驗:
document.cookie = "a=123 b=other; b=678";
這個的意思是 cookie a 的值為 123 b=other, b的值為 678, 但是我們通過上面的 getcookie 方法 做實驗時:
getcookie("b"); //輸出 othergetcookie("a"); //輸出 123 b=other
b的值很明顯不正確了。這樣就混淆了正確的 cookie。 所以這種方法也不是正確的方法,運用我們最上面提到的解決方法 可以很好的解決這個問題。
webmin RCE漏洞利用及分析
webmin是目前功能最強大的基於web的unix系統管理工具。管理員通過瀏覽器訪問webmin的各種管理功能並完成相應的管理動作。利用條件 webmin 1.910 原因 官網 sourceforge 中存在漏洞,github 中無漏洞,為後門植入,不得不佩服這些老外真會玩,看了一堆大神分析,自己...
MS08 052 WMF漏洞分析及漏洞測試
by cutek 一 背景知識 由檔案格式入手,來分析ms08 052漏洞,並構造了乙個可以使沒有補丁的程式崩潰的,1 wmf檔案結構 檔案頭 檔案記錄 檔案記錄 檔案記錄 windows中檔案頭結構如下 typedef struct pwmfrect16 typedef struct wmfpla...
MS08 052 WMF漏洞分析及漏洞測試
一 背景知識 由檔案格式入手,來分析ms08 052漏洞,並構造了乙個可以使沒有補丁的程式崩潰的,1 wmf檔案結構 檔案頭 檔案記錄 檔案記錄 檔案記錄 windows中檔案頭結構如下 typedef struct pwmfrect16 typedef struct wmfplaceablefil...