发新话题
打印

[转载]L-blog的cookie欺骗漏洞分析

[转载]L-blog的cookie欺骗漏洞分析

文章作者:kilng@msn.com
信息来源:http://www.neeao.com/lbs/blogview.asp?logID=162

ps:偶很早就知道这个漏洞了!嘿嘿!用老兵的cookie浏览器使用爽呆了!然后使用老兵的最新上传工具!  

网站挂了,没事干,看网上说L-blog被黑了,想想自己的blog有一部分用的是L-blog代码,知道L-blog的upfile.asp文件一直有问题,所以问题应该就是出在这个文件。既然没事做,就来看看漏洞是什么吧。

一.查找漏洞

既然是上传有问题,就先看看上传的文件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.createObject("ADODB.RecordSet")

SQL="select mem_Name,mem_Password,mem_Status FROM blog_Member where mem_Name=&#39;"&memName&"&#39; AND mem_Password=&#39;"&memPassword&"&#39; AND mem_Status=&#39;"&memStatus&"&#39;"

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都删了嘛。好们直接打开个日志,看看有没有上传的选项。

哈,上传出现了!接下来干什么?还用我说!!!抓包上传木马。


由于是UTF-8格式,所以显示的是乱码,其实重新运行个ie打开这页就没事了,不过对我们没什么影响。

一.防范方法

方法当然是有很多啦,我在这就先说个简单的,把commond.asp里面的这句

IF memName<>Empty AND Session("GuestIP")<>Guest_IP Then

改成

IF (memName<>Empty OR memStatus<>Empty) AND Session("GuestIP")<>Guest_IP Then

这样就可以了。

注:看网上的消息,L-blog的漏洞肯定不只这么一个,看来网上没有绝对安全的东西。有错误还请大家提点!

漏洞利用工具:
http://eviloctal.hackway.net/forum/read.php?tid=6629
qq310926是我唯一用号,除此之外有其他号码号自称邪八冰血封情,则非本人。

TOP

发新话题