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