简要描述:对变量gettburl提交的参数过滤不严,最终导致跨站漏洞的形成。
漏洞解析:在cmd.asp中,程序对gettburl提交的id参数做如下处理:
Call GetRealUrlofTrackBackUrl((Request.QueryString("id")))
其中GetRealUrlofTrackBackUrl是引用日志TrackBack地址的函数,他的函数处理如下:
'plugin node
For Each sAction_Plugin_TrackBackUrlGet_Begin in Action_Plugin_TrackBackUrlGet_Begin
If Not IsEmpty(sAction_Plugin_TrackBackUrlGet_Begin) Then Call Execute(sAction_Plugin_TrackBackUrlGet_Begin)
If bAction_Plugin_TrackBackUrlGet_Begin=True Then Exit Function
Next
在做如上判断后对gettburl的id参数进行输出,在输出时候对id这个参数过滤不严,导致了跨站漏洞的产生,黑客可以利用这个漏洞******管理员的cookies以及添加管理员等,甚至直接getshell。
修补方法:
在博客根目录找到cmd.asp文件,找到
Call System_Initialize()
然后在上面添加
function checksql_c(text)
if IsNumeric(text)=false then
response.Redirect("default.asp")
response.End()
end if
end function
找到
GetRealUrlofTrackBackUrl
将 Call GetRealUrlofTrackBackUrl(Request.QueryString("id")) ,改为Call GetRealUrlofTrackBackUrl(checksql_c(Request.QueryString("id")))
至此漏洞修补完毕