[这个贴子最后由汗在 2005/01/18 08:22pm 第 1 次编辑]
转自黑基:
描述:
通过向BLOGEDIT.ASP文件传送数据,可以轻意操作对方数据库.修改\删除不在话下.
测试方法:
http://www.guoblog.com/attachments/month_0501/tqjx_2005116154542.RAR
说明:此工具是用来测试自己网站是否有此漏洞.下载此文件后,解压缩到你本地任何目录.用IE打开TESTPOST.HTM文件,按要求输入您自己的网站地址和日志ID提交即可,注意:操作前要备份自己的数据库.
严重警告:不得利用此文件攻击他人网站.
补丁:
一、禁止站外提交数据
打开blogedit.asp文件。找到”“
在后面加入:
<%
dim server_v1,server_v2
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
if mid(server_v1,8,len(server_v2))<>server_v2 then
response.write "
你提交的路径有误,禁止从站点外部提交数据请不要乱该参数!
"
response.end
end if
%>
二、修改程序
由于大家使用的版本不同,修改程序可以参考我这里的,ACCESS版要做改动才可以使用。
打开BLOGEDIT。ASP文件,找到:
<%IF Request.Form("message")=Empty OR Request.Form("log_Title")=Empty Then
Response.Write("必须填写日志内容 请返回重新填写")
ElseIF Request.Form("blogdele")="1" Then
Conn.ExeCute("DELETE blog_Content WHERE log_ID="&Request.Form("log_ID"))
Conn.ExeCute("DELETE blog_Comment WHERE blog_ID="&Request.Form("log_ID"))
Conn.ExeCute("UPDATE blog_Member SET mem_PostLogs=mem_PostLogs-1 WHERE mem_Name="&Request.Form("log_Author")&"")
Conn.ExeCute("UPDATE blog_Info SET blog_LogNums=blog_LogNums-1")
SQLQueryNums=SQLQueryNums+4
Response.Write("
")
Else
dim Log_Title,log_Content,log_From,log_FromURL,log_ID,log_Intro,log_DisSM,log_DisUBB,log_DisIMG,log_AutoURL,log_Modify,log_IsShow,log_AutoKEY,log_IsTop,log_DisComment,log_Weather,log_mode,log_mf
log_Title=CheckStr(Request.Form("log_Title"))
if len(log_Title)>50 then
log_Title=left(log_Title,47) & "..."
end if
log_Content=CheckStr(Request.Form("message"))
log_Intro=SplitLines(HtmlEncode(log_Content),4)
log_From=CheckStr(Request.Form("log_From"))
log_FromURL=Request.Form("log_FromURL")
log_ID=Request.Form("log_ID")
log_DisSM=Request.Form("log_DisSM")
log_DisUBB=Request.Form("log_DisUBB")
log_DisIMG=Request.Form("log_DisIMG")
log_AutoURL=Request.Form("log_AutoURL")
log_AutoKEY=Request.Form("log_AutoKEY")
log_Weather=Request.Form("log_Weather")
log_IsTop=Request.Form("log_IsTop")
log_IsShow=Request.Form("log_IsShow")
log_DisComment=Request.Form("log_DisComment")
log_mode=request.form("log_mode")
log_mf=request.form("post_MagicFace")
if log_mf=empty then log_mf=NULL
IF log_DisSM=Empty Then log_DisSM=0
IF log_DisUBB=Empty Then log_DisUBB=0
IF log_DisIMG=Empty Then log_DisIMG=0
IF log_AutoURL=Empty Then log_AutoURL=0
IF log_AutoKEY=Empty Then log_AutoKEY=0
IF log_IsTop="" Then log_IsTop=0
IF log_IsShow="" Then log_IsShow=1
IF log_DisComment="" Then log_DisComment=0
log_Modify="[本日志由 "&memName&" 于 "&DateToStr(Now(),"Y-m-d H:I A")&" 编辑]"
Dim log_MoveToSQL
IF Request.Form("blogmoveto")<>"0" Then
log_MoveToSQL=",log_CateID="&Request.Form("blogmoveto")&""
End IF
response.write "UPDATE blog_Content Set log_Title="&log_Title&",log_Intro="&log_Intro&",log_Content="&log_Content&",log_From="&log_From&",log_FromURL="&log_FromURL&",log_DisSM="&log_DisSM&",log_DisUBB="&log_DisUBB&",log_DisIMG="&log_DisIMG&",log_AutoURL="&log_AutoURL&",log_AutoKEY="&log_AutoKEY&",log_Modify="&log_Modify&",log_IsShow="&log_IsShow&",log_DisComment="&log_DisComment&",log_Weather="&log_Weather&",log_IsTop="&log_IsTop&log_MoveToSQL&",log_mode="&log_mode&" WHERE log_ID="&log_ID&""
Conn.ExeCute("UPDATE blog_Content Set log_Title="&log_Title&",log_Intro="&log_Intro&",log_Content="&log_Content&",log_From="&log_From&",log_FromURL="&log_FromURL&",log_DisSM="&log_DisSM&",log_DisUBB="&log_DisUBB&",log_DisIMG="&log_DisIMG&",log_AutoURL="&log_AutoURL&",log_AutoKEY="&log_AutoKEY&",log_Modify="&log_Modify&",log_IsShow="&log_IsShow&",log_DisComment="&log_DisComment&",log_Weather="&log_Weather&",log_IsTop="&log_IsTop&log_MoveToSQL&",log_mode="&log_mode&",log_mf="&log_mf&" WHERE log_ID="&log_ID&"")
SQLQueryNums=SQLQueryNums+1
if log_mode="发布" then
Conn.ExeCute("UPDATE blog_Info SET blog_LogNums=blog_LogNums+1")
else
Conn.ExeCute("UPDATE blog_Member SET mem_PostLogs=mem_PostLogs-1 WHERE mem_Name="&Request.Form("log_Author")&"")
Conn.ExeCute("UPDATE blog_Info SET blog_LogNums=blog_LogNums-1")
end if
Response.Write("
")
End IF%>
替换为:
<%
Dim blog_EdRS,blog_ED
blog_ED=CheckStr(Request.Form("log_ID"))
Set blog_EdRS=Server.CreateObject("ADODB.Recordset")
SQL="SELECT L.*,C.cate_Name FROM blog_Content AS L,blog_Category AS C WHERE log_ID="&blog_ED&" AND C.cate_ID=L.log_cateID"
blog_EdRS.Open SQL,Conn,1,1
SQLQueryNums=SQLQueryNums+1
IF blog_EdRS.EOF AND blog_EdRS.BOF Then
response.write "你要修改日志的日志不存在 点击返回主页面"
elseIF Not((blog_EdRS("log_Author")=memName AND memStatus="Admin") OR memStatus="SupAdmin") Then
response.write "你没有权限修改日志 点击返回主页面"
else
IF Request.Form("message")=Empty OR Request.Form("log_Title")=Empty Then
Response.Write("必须填写日志内容 请返回重新填写")
ElseIF Request.Form("blogdele")="1" Then
Conn.ExeCute("DELETE blog_Content WHERE log_ID="&Request.Form("log_ID"))
Conn.ExeCute("DELETE blog_Comment WHERE blog_ID="&Request.Form("log_ID"))
Conn.ExeCute("UPDATE blog_Member SET mem_PostLogs=mem_PostLogs-1 WHERE mem_Name="&Request.Form("log_Author")&"")
Conn.ExeCute("UPDATE blog_Info SET blog_LogNums=blog_LogNums-1")
SQLQueryNums=SQLQueryNums+4
Response.Write("
")
Else
dim Log_Title,log_Content,log_From,log_FromURL,log_ID,log_Intro,log_DisSM,log_DisUBB,log_DisIMG,log_AutoURL,log_Modify,log_IsShow,log_AutoKEY,log_IsTop,log_DisComment,log_Weather,log_mode,log_mf
log_Title=CheckStr(Request.Form("log_Title"))
if len(log_Title)>50 then
log_Title=left(log_Title,47) & "..."
end if
log_Content=CheckStr(Request.Form("message"))
log_Intro=SplitLines(HtmlEncode(log_Content),4)
log_From=CheckStr(Request.Form("log_From"))
log_FromURL=Request.Form("log_FromURL")
log_ID=Request.Form("log_ID")
log_DisSM=Request.Form("log_DisSM")
log_DisUBB=Request.Form("log_DisUBB")
log_DisIMG=Request.Form("log_DisIMG")
log_AutoURL=Request.Form("log_AutoURL")
log_AutoKEY=Request.Form("log_AutoKEY")
log_Weather=Request.Form("log_Weather")
log_IsTop=Request.Form("log_IsTop")
log_IsShow=Request.Form("log_IsShow")
log_DisComment=Request.Form("log_DisComment")
log_mode=request.form("log_mode")
log_mf=request.form("post_MagicFace")
if log_mf=empty then log_mf=NULL
IF log_DisSM=Empty Then log_DisSM=0
IF log_DisUBB=Empty Then log_DisUBB=0
IF log_DisIMG=Empty Then log_DisIMG=0
IF log_AutoURL=Empty Then log_AutoURL=0
IF log_AutoKEY=Empty Then log_AutoKEY=0
IF log_IsTop="" Then log_IsTop=0
IF log_IsShow="" Then log_IsShow=1
IF log_DisComment="" Then log_DisComment=0
log_Modify="[本日志由 "&memName&" 于 "&DateToStr(Now(),"Y-m-d H:I A")&" 编辑]"
Dim log_MoveToSQL
IF Request.Form("blogmoveto")<>"0" Then
log_MoveToSQL=",log_CateID="&Request.Form("blogmoveto")&""
End IF
response.write "UPDATE blog_Content Set log_Title="&log_Title&",log_Intro="&log_Intro&",log_Content="&log_Content&",log_From="&log_From&",log_FromURL="&log_FromURL&",log_DisSM="&log_DisSM&",log_DisUBB="&log_DisUBB&",log_DisIMG="&log_DisIMG&",log_AutoURL="&log_AutoURL&",log_AutoKEY="&log_AutoKEY&",log_Modify="&log_Modify&",log_IsShow="&log_IsShow&",log_DisComment="&log_DisComment&",log_Weather="&log_Weather&",log_IsTop="&log_IsTop&log_MoveToSQL&",log_mode="&log_mode&" WHERE log_ID="&log_ID&""
Conn.ExeCute("UPDATE blog_Content Set log_Title="&log_Title&",log_Intro="&log_Intro&",log_Content="&log_Content&",log_From="&log_From&",log_FromURL="&log_FromURL&",log_DisSM="&log_DisSM&",log_DisUBB="&log_DisUBB&",log_DisIMG="&log_DisIMG&",log_AutoURL="&log_AutoURL&",log_AutoKEY="&log_AutoKEY&",log_Modify="&log_Modify&",log_IsShow="&log_IsShow&",log_DisComment="&log_DisComment&",log_Weather="&log_Weather&",log_IsTop="&log_IsTop&log_MoveToSQL&",log_mode="&log_mode&",log_mf="&log_mf&" WHERE log_ID="&log_ID&"")
SQLQueryNums=SQLQueryNums+1
if log_mode="发布" then
Conn.ExeCute("UPDATE blog_Info SET blog_LogNums=blog_LogNums+1")
else
Conn.ExeCute("UPDATE blog_Member SET mem_PostLogs=mem_PostLogs-1 WHERE mem_Name="&Request.Form("log_Author")&"")
Conn.ExeCute("UPDATE blog_Info SET blog_LogNums=blog_LogNums-1")
end if
Response.Write("
")
End IF
end if
%>
L-BLOG此类漏洞很多哦。呵呵,大家一定要打上补丁。
ACCESS版用户下载:
http://www.guoblog.com/attachments/month_0501/pmes_2005116115257.RAR
SQL版用户下载:
http://www.guoblog.com/attachments/month_0501/mjbp_2005116115220.RAR作者: bigblock 时间: 2005-1-18 16:00 标题: L-BLOG重大安全漏洞的描述及补丁