青創(chuàng)文章系統(tǒng)安全性分析
更新時間:2007年01月16日 00:00:00 作者:
最近受到了點打擊,精神恍惚,所以被請到精神病院兼職做研究工作去了,研究什么?嘿嘿,當然是被人家研究!每天都被研究很是不爽,而且好久沒寫B(tài)log了,所以今天我也得來研究點東東才是。
研究對象偶找的是青創(chuàng)網(wǎng)絡(luò)文章系統(tǒng)(QcNews),這是一套 ASP + Access 的文章系統(tǒng),它的最新版是去年2月出的1.5.2.23.7.0,呵呵,看來作者好久沒有更新了。
一不小心發(fā)現(xiàn)了幾個洞洞,估計有人早就發(fā)現(xiàn)了的,哇,大哥啊這樣你就不對了嘛,發(fā)現(xiàn)了漏洞不公布出來還要自己玩,那多不好,偶幫你發(fā)布了哈。
估計本文發(fā)布的時候,漏洞補丁已經(jīng)出來了,使用這套系統(tǒng)的朋友快去打補丁吧。
另:在官方下的exe里面默認安裝模式帶了一個瀏覽器插件,不爽。
1、 任意會員登陸/資料修改漏洞
系統(tǒng)只是通過cookies的username值判斷用戶的,看代碼:
if Request.Cookies("qcdn")("user_name")="" then
呵呵,但是cookies我們是可以偽造的,所以呢現(xiàn)在我們能夠以任意前臺帳號登陸了。同理,在前臺用戶修改資料那里也是根據(jù)cookies的username判斷的,我們也可以隨便修改任何人的資料的哦。
2、 SQL注入漏洞
第一個地方是用戶評論那里,也就是 remarkList.asp 這個文件。 Unid 沒有過濾危險字符就直接帶入了 SQL 語句,直接可以用工具注射。當條件為真就會有評論,為假就沒有評論,所以你得找一個有評論的文章注射。
第二個地方有點隱蔽,是在每篇文章的“推薦好友”那里( SendMail.asp 文件)。這里不可以直接注射,但是它的 Unid 會放到頁面的隱藏域,當你填上好友郵箱提交的時候 Unid 就會被帶入 SQL 語句,同樣沒有過濾危險字符。條件為真就會彈出“郵件發(fā)送失敗”(因為我沒有裝JMail的),假的條件頁面就會報錯。
這個SQL注射漏洞將導(dǎo)致后臺用戶名及其 MD5 加密密碼泄漏,如果密碼不是很復(fù)雜,那么入侵者將很快暴破。
3、 后臺普通帳戶修改任意后臺帳戶密碼漏洞
我們先看看 admin_EditPass.asp 的關(guān)鍵代碼:
if request("method") = 1 then
Unid = Request.Form("Unid")
if Trim(Request.Form("username")) = "" then
Errmsg = "<li>請輸入用戶名。"
FoundErr = true
else
username = Qcdn.checkStr(Trim(Request.Form("username")))
end if
if Trim(Request.Form("pass1")) = "" or Trim(Request.Form("pass2")) = "" then
Errmsg = Errmsg + "<li>請輸入密碼及確認密碼。"
FoundErr = true
elseif Trim(Request.Form("pass1"))<>Trim(Request.Form("pass2")) then
Errmsg = Errmsg + "<li>輸入的密碼和確認密碼不符。"
FoundErr = true
else
password = Qcdn.checkStr(Trim(Request.Form("pass1")))
password = md5(password,16)
end if
if FoundErr then
Call Qcdn.Err_List(Errmsg,1)
Response.end
end if
sql = "Update article_admin set username = '"& username &"',[password] = '"& password &"' where id = " & Unid
conn.execute(sql)
Response.write("<script>alert(""修改成功"");location.href=""admin_EditPass.asp"";</script>")
Response.end
end if
注意 SQL 語句“"Update article_admin set username = '"& username &"',[password] = '"& password &"' where id = " & Unid”,Unid、username、password都是通過表單提交的,而且都沒有驗證,所以我們只要知道后臺用戶的 id ,然后更改密碼修改隱藏域中的unid,就可以修改他的密碼了。
4、 后臺帳戶刪除網(wǎng)站任意文件漏洞
在后臺有個“上傳文件管理”功能,可以刪除上傳的文件。觀察其 URL ,形式是:http://localhost/QcNews/admin_picmang.asp?Action=Del&FileName=2003121162475.jpg
FileName就是要刪除的文件名了,文件在 Upfiles 文件夾。試試構(gòu)造 FileName跳出這個目錄。作者也考慮到了這個問題,所以有這樣一段判斷代碼:
if left(trim(arrFileName(i)),3)<>"../" and left(trim(arrFileName(i)),1)<>"/" then
雖然過濾了跳出目錄的一種情況,不過我們可以構(gòu)造類似http://localhost/QcNews/admin_picmang.asp?Action=Del&FileName=lake2/../../index.asp的 URL 來刪除任意文件。
5、 后臺普通帳戶直接獲取管理員權(quán)限漏洞
這套系統(tǒng)的后臺有3種不同權(quán)限的帳戶:管理員、錄入員、審核員。管理員有所有的權(quán)限,錄入員只能發(fā)帖子,審核員審核帖子。但是作者最大的疏忽卻是:錄入員和審核員具有管理員一樣的權(quán)限。
雖然普通帳戶看不到其他管理功能的鏈接,但是我們直接在瀏覽器里面輸入實現(xiàn)相應(yīng)功能的文件地址就能像管理員一樣管理了。比如說備份數(shù)據(jù)庫,我以錄入員登陸系統(tǒng),然后直接在瀏覽器里輸入 http://localhost/QcNews/admin_backupdata.asp ,呵呵,怎么樣,可以備份數(shù)據(jù)庫了哦。其他的功能亦然。
6、 后臺數(shù)據(jù)庫備份漏洞
嗯,從 SQL 注射到后臺,現(xiàn)在我們可以利用數(shù)據(jù)庫備份得到 webshell 了。
還是老規(guī)矩,改 asp 為 gif ,然后上傳、備份。但是上傳圖片那里系統(tǒng)會首先檢查文件是不是圖片格式,單純的改 asp 為 gif 是不行的了。怎么辦?
你一定還記得那個把 asp 代碼 copy 到一個圖片文件末尾的圖片 ASP 法吧,呵呵,就是傳這樣的圖片然后備份之。
由于偶在被人家研究空閑時間有限,勉強就找了這么幾個 bug ,不過足夠?qū)κ褂么缶W(wǎng)站造成威脅了,當然我寫此文章的目的不是教大家去黑站,而是希望我們的網(wǎng)絡(luò)更安全一些……
閣下如有什么要給我交流的,來精神病院聊聊吧,撥打電話120 找胡主席^_^
研究對象偶找的是青創(chuàng)網(wǎng)絡(luò)文章系統(tǒng)(QcNews),這是一套 ASP + Access 的文章系統(tǒng),它的最新版是去年2月出的1.5.2.23.7.0,呵呵,看來作者好久沒有更新了。
一不小心發(fā)現(xiàn)了幾個洞洞,估計有人早就發(fā)現(xiàn)了的,哇,大哥啊這樣你就不對了嘛,發(fā)現(xiàn)了漏洞不公布出來還要自己玩,那多不好,偶幫你發(fā)布了哈。
估計本文發(fā)布的時候,漏洞補丁已經(jīng)出來了,使用這套系統(tǒng)的朋友快去打補丁吧。
另:在官方下的exe里面默認安裝模式帶了一個瀏覽器插件,不爽。
1、 任意會員登陸/資料修改漏洞
系統(tǒng)只是通過cookies的username值判斷用戶的,看代碼:
if Request.Cookies("qcdn")("user_name")="" then
呵呵,但是cookies我們是可以偽造的,所以呢現(xiàn)在我們能夠以任意前臺帳號登陸了。同理,在前臺用戶修改資料那里也是根據(jù)cookies的username判斷的,我們也可以隨便修改任何人的資料的哦。
2、 SQL注入漏洞
第一個地方是用戶評論那里,也就是 remarkList.asp 這個文件。 Unid 沒有過濾危險字符就直接帶入了 SQL 語句,直接可以用工具注射。當條件為真就會有評論,為假就沒有評論,所以你得找一個有評論的文章注射。
第二個地方有點隱蔽,是在每篇文章的“推薦好友”那里( SendMail.asp 文件)。這里不可以直接注射,但是它的 Unid 會放到頁面的隱藏域,當你填上好友郵箱提交的時候 Unid 就會被帶入 SQL 語句,同樣沒有過濾危險字符。條件為真就會彈出“郵件發(fā)送失敗”(因為我沒有裝JMail的),假的條件頁面就會報錯。
這個SQL注射漏洞將導(dǎo)致后臺用戶名及其 MD5 加密密碼泄漏,如果密碼不是很復(fù)雜,那么入侵者將很快暴破。
3、 后臺普通帳戶修改任意后臺帳戶密碼漏洞
我們先看看 admin_EditPass.asp 的關(guān)鍵代碼:
if request("method") = 1 then
Unid = Request.Form("Unid")
if Trim(Request.Form("username")) = "" then
Errmsg = "<li>請輸入用戶名。"
FoundErr = true
else
username = Qcdn.checkStr(Trim(Request.Form("username")))
end if
if Trim(Request.Form("pass1")) = "" or Trim(Request.Form("pass2")) = "" then
Errmsg = Errmsg + "<li>請輸入密碼及確認密碼。"
FoundErr = true
elseif Trim(Request.Form("pass1"))<>Trim(Request.Form("pass2")) then
Errmsg = Errmsg + "<li>輸入的密碼和確認密碼不符。"
FoundErr = true
else
password = Qcdn.checkStr(Trim(Request.Form("pass1")))
password = md5(password,16)
end if
if FoundErr then
Call Qcdn.Err_List(Errmsg,1)
Response.end
end if
sql = "Update article_admin set username = '"& username &"',[password] = '"& password &"' where id = " & Unid
conn.execute(sql)
Response.write("<script>alert(""修改成功"");location.href=""admin_EditPass.asp"";</script>")
Response.end
end if
注意 SQL 語句“"Update article_admin set username = '"& username &"',[password] = '"& password &"' where id = " & Unid”,Unid、username、password都是通過表單提交的,而且都沒有驗證,所以我們只要知道后臺用戶的 id ,然后更改密碼修改隱藏域中的unid,就可以修改他的密碼了。
4、 后臺帳戶刪除網(wǎng)站任意文件漏洞
在后臺有個“上傳文件管理”功能,可以刪除上傳的文件。觀察其 URL ,形式是:http://localhost/QcNews/admin_picmang.asp?Action=Del&FileName=2003121162475.jpg
FileName就是要刪除的文件名了,文件在 Upfiles 文件夾。試試構(gòu)造 FileName跳出這個目錄。作者也考慮到了這個問題,所以有這樣一段判斷代碼:
if left(trim(arrFileName(i)),3)<>"../" and left(trim(arrFileName(i)),1)<>"/" then
雖然過濾了跳出目錄的一種情況,不過我們可以構(gòu)造類似http://localhost/QcNews/admin_picmang.asp?Action=Del&FileName=lake2/../../index.asp的 URL 來刪除任意文件。
5、 后臺普通帳戶直接獲取管理員權(quán)限漏洞
這套系統(tǒng)的后臺有3種不同權(quán)限的帳戶:管理員、錄入員、審核員。管理員有所有的權(quán)限,錄入員只能發(fā)帖子,審核員審核帖子。但是作者最大的疏忽卻是:錄入員和審核員具有管理員一樣的權(quán)限。
雖然普通帳戶看不到其他管理功能的鏈接,但是我們直接在瀏覽器里面輸入實現(xiàn)相應(yīng)功能的文件地址就能像管理員一樣管理了。比如說備份數(shù)據(jù)庫,我以錄入員登陸系統(tǒng),然后直接在瀏覽器里輸入 http://localhost/QcNews/admin_backupdata.asp ,呵呵,怎么樣,可以備份數(shù)據(jù)庫了哦。其他的功能亦然。
6、 后臺數(shù)據(jù)庫備份漏洞
嗯,從 SQL 注射到后臺,現(xiàn)在我們可以利用數(shù)據(jù)庫備份得到 webshell 了。
還是老規(guī)矩,改 asp 為 gif ,然后上傳、備份。但是上傳圖片那里系統(tǒng)會首先檢查文件是不是圖片格式,單純的改 asp 為 gif 是不行的了。怎么辦?
你一定還記得那個把 asp 代碼 copy 到一個圖片文件末尾的圖片 ASP 法吧,呵呵,就是傳這樣的圖片然后備份之。
由于偶在被人家研究空閑時間有限,勉強就找了這么幾個 bug ,不過足夠?qū)κ褂么缶W(wǎng)站造成威脅了,當然我寫此文章的目的不是教大家去黑站,而是希望我們的網(wǎng)絡(luò)更安全一些……
閣下如有什么要給我交流的,來精神病院聊聊吧,撥打電話120 找胡主席^_^
相關(guān)文章
DVBBS7.0Sp2前臺提權(quán)漏洞利用程序[Kendy版]源碼
DVBBS7.0Sp2前臺提權(quán)漏洞利用程序[Kendy版]源碼...2007-01-01