- UID
- 9269
注册时间2006-3-11
阅读权限10
最后登录1970-1-1
周游历练
该用户从未签到
|
既然是上传有问题,就先看看上传的文件attachment.asp。
先看这句
IF memStatus="SupAdmin" OR memStatus="Admin" Then
IF Request.QueryString("action")="upload" Then
Response.Write("
")
往下省略
上传只考虑到了memStatus,没有考虑到用户的权限。
大概了解是cookie的问题了,看看commond.asp对用户cookie的验证。
Dim memName,memPassword,memStatus
memName=CheckStr(Request.Cookies(CookieName)("memName"))
memPassword=CheckStr(Request.Cookies(CookieName)("memPassword"))
memStatus=CheckStr(Request.Cookies(CookieName)("memStatus"))
用户的信息全由cookie提取,没什么问题。
问题出在下面这句
IF memName<>Empty AND Session("GuestIP")<>Guest_IP Then
Dim CheckCookie
Set CheckCookie=Server.create("ADODB.RecordSet")
SQL="select mem_Name,mem_Password,mem_Status FROM blog_Member where mem_Name=’"&memName&"’ AND mem_Password=’"&memPassword&"’ AND mem_Status=’"&memStatus&"’"
CheckCookie.Open SQL,Conn,1,1
SQLQueryNums=SQLQueryNums+1
IF CheckCookie.EOF AND CheckCookie.BOF Then
Response.Cookies(CookieName)("memName")=""
memName=""
Response.Cookies(CookieName)("memPassword")=""
memPassword=""
Response.Cookies(CookieName)("memStatus")=""
memStatus=""
End IF
CheckCookie.Close
Set CheckCookie=Nothing
End IF
如果用户cookie的memName不为空,就从数据库里验证用户名和密码,不正确就清空cookie,粗略看是没什么问题的。可是仔细想想的话,如果memName为空,而memStatus不为空呢,上传部分只验证memStatus,没有验证memName,我们如果把memStatus的值改成SupAdmin或Admin,不就可以上传了?哈!!L-blog竟然犯了这么个低级的错误。L-blog的漏洞由此诞生。
一.利用方法
首先当然要先找个L-blog的网站啦,我这找了个:
http://www.flyeasy.org/blog/default.asp
先注册个用户,我这里是用户名123451密码111111.
到http://www.flyeasy.org/blog/logging.asp 登陆,保存期限至少要选个1天,要不我们不就没法改cookie了嘛,登陆好后,用iecv去改cookie,就保留memStatus并把他的值改成SupAdmin或Admin。
修改完成后进入主页后会显示我们没有登陆,因为我们把memName和memPassword都删了嘛。好们直接打开个日志,看看有没有上传的选项。 |
|