kevin blog应该是大家比较喜欢的简约blog了吧,最近从流转JJ那拿了一套,今晚闲着无聊,就想看看它有什么漏洞。 看了一会,看倒comment.asp的代码貌似有点问题。代码如下: ....省略.... user=strchk(Request.Form("gname")) msg=strchk(Request.Form("gmsg")) mail=strchk(Request.Form("gmail")) home=strchk(Request.Form("ghome")) if mail="" then mail="kevinlove1986@gmail.com" if home="" then home="kevin.hididi.net" sql="Insert Into Comment(c_user,c_time,c_mail,c_home,c_blogid,c_content) values(’" & user & "’,’" & now() & "’,’" & mail & "’,’" & home & "’,’" & id & "’,’" & msg & "’)" ....省略.... 咋一看觉得没什么问题,该过滤的都用strchk()函数过滤了。现在我们来看看strchk函数的代码: ....省略.... Function Strchk(Byval fStr) fStr=Replace(fStr,"’",""") fStr=Replace(fStr,"<","<") fStr=replace(fStr,">",">") fStr=replace(fStr,">",">") ’fStr=replace(fStr,vbnewline,"") Strchk=fStr End Function ....省略....
貌似把跨站的特殊字符都过滤了,但仔细看一看,没有过滤“"”。好的,我们现在来测试下,在评论页的“主页”项写入“ onmouseover=java:alert("leaves")”,当移动到主页的时候跨站框出来了。我们来猛一点的,在“主页”里输入“ onmouseover=java:alert("leaves") title="”再在“内容”里“ggsssdf"asff”点“提交”看看,怎么样,跨半屏了吧。 无聊也写了个补丁,呵呵 |