當前位置:
首頁 > 新聞 > 簡析60度CMS的Cookies欺騙漏洞

簡析60度CMS的Cookies欺騙漏洞

前言


本篇文章只是為了和大家分享漏洞的挖掘經驗和思路,同時讓大家認識到 Cookies 欺騙漏洞的危害和嚴重性。

漏洞發現時間:2017.8.16,因產商無回應,漏洞至今仍未修復


環境搭建


工具



小旋風ASP伺服器


http://www.jb51.net/softs/35167.html#download


60度CMS


http://down.chinaz.com/soft/23548.htm


搭建


安裝好小旋風ASP伺服器後,把60度CMS的所有文件複製到小旋風ASP伺服器的site8001目錄下,然後訪問http://localhost:8001即可。


源碼分析


我們先看一下後台登錄頁面(login.asp)的源代碼

action=replace(trim(request("Action")),""","""")
if action="logout" then

session("cmsid") = ""

session("cmsname") = ""

response.Cookies("cmsname") = ""

response.Cookies("cmsid") = ""

得知登錄頁面的兩個Cookies值分別為cmsname和cmsid


接著往下看

if code <> session("code") then
 showmsg "驗證碼錯誤!","login.asp"

end if

set rs = conn.execute("select * from 60du_Admin where AdminName = ""&ReplaceBadChar(username)&"" and Password = ""&md5(password,32)&""")

if rs.eof then

 showmsg "用戶名或密碼錯誤!","login.asp"

elseif rs("IsActive")=1 then

 showmsg "你的用戶名已被鎖定,你不能登陸!請聯繫管理員。","login.asp"

else
session("cmsid") = rs("id")
 session("cmsname") = rs("AdminName")

 response.Cookies("cmsname") = rs("AdminName")

 response.Cookies("cmsid") = rs("id")

 ip=Request.ServerVariables("REMOTE_ADDR")

 Call conn.execute("update 60du_Admin set LoginTime=""&Now()&"",LoginIP=""&ip&"" where AdminName=""&username&""",0)

 Call InsertLog(1, 0, UserName, ip, "登錄成功", ComeUrl, "")

 showmsg 0,"index.asp"

可以看到,網頁會把輸入的管理員帳號和管理員ID分別賦值給cmsname和cmsid這兩個cookies值


如果密碼正確就會跳轉到後台首頁


並添加上述的兩個cookies值


這時我們再來看一下後台首頁(index.asp)的源代碼


發現頭部引用了check.asp文件


找到並打開看看


發現這是檢查用戶登錄狀態的文件,源代碼如下

<!--#include file="../inc/md5.asp"--><%
"判斷用戶是否登陸

if session("cmsname")="" and instr(CStr(Request.ServerVariables("SCRIPT_NAME")),site_install&AdminPath&"/login.asp")=0 then

if ReplaceBadChar(Trim(request.Cookies("cmsname")))="" then

 response.Redirect(site_install&AdminPath&"/login.asp")

elseif Session("admin_id") =null then

    Response.Write("<script>alert("登陸超時!");parent.location = ""&site_install&AdminPath&"/login.asp";</script>")

else

 ReplaceBadChar(Trim(session("cmsname")))=ReplaceBadChar(Trim(request.Cookies("cmsname")))

 ReplaceBadChar(Trim(session("cmsid")))=ReplaceBadChar(Trim(request.Cookies("cmsid")))

end if

end if

%>

可以看到,網頁雖然有驗證用戶登錄狀態,但只僅僅驗證了Cookies的內容

只要兩個Cookies的內容都對得上,就能訪問後台首頁


於是,造成了一個典型的Cookies欺騙漏洞



60度CMS的默認管理員為admin,默認管理員ID為1


所以只要根據這兩個信息創建Cookies,我們就可以通過偽造Cookies來實現越權訪問後台


漏洞利用


訪問後台登錄頁面


使用firebug添加兩個Cookies及其內容


分別是:cmsname=admin;cmsid=1

注意這裡的日期一定要修改(比如說修改為2018年),否則Cookies無法添加


接著訪問後台首頁(index.asp),發現已經繞過驗證,成功訪問了後台主頁,實現了Cookies欺騙。


挖掘經驗


挖掘Cookies欺騙漏洞時,可以查看登錄頁面和主頁面的源代碼,找到有關驗證用戶身份的源代碼,查看是否存在欺騙的可能。


總結


現在大家應該都已經了解,Cookies欺騙漏洞的危害非常大,所以Cookies欺騙漏洞是一定要防範的。


既然 Cookies 是不安全的,而我們又必須把用戶登錄信息存儲下來,那麼應該存儲在什麼地方呢? 我們注意到,在 ASP 中,除了 Cookies 外,還有 Session 可以儲存信息。Session 是儲存在伺服器上的,不是客戶端隨隨便便就能夠更改的,所以具有極高的安全性。這樣,大家就可以把所有 Cookies 的代碼均換作 Session 了。


*本文作者:J1anCan,轉載請註明來自 FreeBuf.COM


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

美國網件ReadyNAS監控系統非認證遠程命令執行漏洞分析
再曝實錘,更多證據顯示俄羅斯或干預了去年的美國大選
如何用ESP8266做個釣魚測試WIFI
亂曬登機牌很可能導致你的賬戶信息被盜用
PC傻瓜式安裝黑蘋果並打造成全能逆向工作站

TAG:FreeBuf |