黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图

您现在的位置: 黑客风云 >> 黑客文章 >> 黑客进阶 >> 脚本入侵 >> 正文
·没有路由密码权限时的鸽08-23·上网安全 Vista自我防范10-11
·让濒临崩溃的Windows XP10-11·有备无患,快速自制救急10-11
·要你好看!Windows看图工10-11·空间赞助网提供不同类型10-11
·讨论net.exe和net1.exe的10-10·让3389远程桌面传输更通10-10
·巧妙入侵渗透赌博站10-10·Aspx空间扫权限工具10-10
·Windows2003最新提权工具10-10·易淘乐提供100M免费全能10-10
·系统开机密码忘了不着急10-09·中意网络提供免费100M免10-09
·与众不同 Windows XP开始10-08·让桌面图标翻跟斗 在XP上10-08
·上海宽元站长资助计划-提10-08·个性化Windows XP的任务10-07
·趣盘提供3G免费网络硬盘10-07·秀山热线提供200MB免费全10-07
·一次艰辛的提权过程10-06·成功入侵IT大卖场的渗透10-06
·mysqlhack- MYSQL利用工10-06·lanker一句话PHP后门客户10-06
·WIXI提供3G免费多媒体网10-06·新人网络提供100M/ftp免10-06
·如何利用QQ带来高流量10-05·UuShare提供免费网络文件10-05
[推荐]BBSXP2008存在后台注射漏洞
      ★★★★★

BBSXP2008存在后台注射漏洞

文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2008-2-19 11:56:37
漏洞预警中心小组应急事件响应公告

测试系统:
BBSXP2008 ACCESS版本 目前为最新版

安全综述:
BBSXP为一款简单的ASP+SQL与ACCESS开发的多风格论坛 目前最新版本为BBSXP2008
漏洞描述:
Manage.asp文件的ThreadID没有经过任何过滤便放入SQL语句中执行 导致注射漏洞发生

漏洞代码:
以下是引用片段:
<%
if CookieUserName=empty then error("您还未<a href=""javascript:BBSXP_Modal.Open('Login.asp',380,170);"">登录</a>论坛")

if Request_Method <> "POST" then error("<li>提交方式错误!</li><li>您本次使用的是"& Request_Method&"提交方式!</li>")

ForumID=RequestInt("ForumID")
ThreadID=Request("ThreadID") // 这里不知道程序员是不是晚上床上劳累过度
If IsNumeric(ThreadID) then
ThreadID=int(ThreadID) //这里虽然进行数字型判断 但是我们有办法直接跳出这里 继续执行下面的SQL语句
ForumID=Execute("Select ForumID From ["&TablePrefix&"Threads] where ThreadID="&ThreadID&"")(0)
End If
if BestRole<>1 then
Moderated=Execute("Select Moderated From ["&TablePrefix&"Forums] where ForumID="&ForumID&" ")(0)
%><!-- #include file="Utility/ForumPermissions.asp" --><%
end if
if BestRole=1 and ForumID<1 then
ForumIDSql=""
else
ForumIDSql=" and ForumID="&ForumID&""
end if
select case Request("menu")
case "Top"
if BestRole = 1 then
for each ho in Request("ThreadID")
ho=int(ho)
Execute("update ["&TablePrefix&"Threads] Set ThreadTop=2,StickyDate=DateAdd("&SqlChar&"yyyy"&SqlChar&", 3, "&SqlNowString&") where ThreadID="&ho&ForumIDSql&"")
next
succtitle="批量公告主题,主题ID:"&Request("ThreadID")&""
else
error("您的权限不够")
end if
case "UnTop"
if BestRole = 1 then
for each ho in Request("ThreadID")
ho=int(ho)
Execute("update ["&TablePrefix&"Threads] Set ThreadTop=0,StickyDate="&SqlNowString&" where ThreadID="&ho&ForumIDSql&"")
next
succtitle="批量取消公告,主题ID:"&Request("ThreadID")&""
else
error("您的权限不够")
end if
....这里省略部分代码
next
UpdateThreadStatic(ThreadID)
succtitle="批量删除帖子,帖子ID:"&Request.Form("PostID")&""

case "UnDelPost"
for each ho in Request.Form("PostID")
ho=int(ho)
Rs.open "select * from ["&TablePrefix&"Posts] where ThreadID="&ThreadID&" and PostID="&ho&"",Conn,1,3
if not Rs.eof then
Rs("Visible")=1
Rs.update
if Rs("ParentID")=0 then Execute("update ["&TablePrefix&"Threads] Set Visible=1 where ThreadID="&Rs("ThreadID")&"")
end if
Rs.close
next
UpdateThreadStatic(ThreadID)
succtitle="批量还原帖子,帖子ID:"&Request.Form("PostID")&""

'''''''''''''''''''''''''''''''''''帖子管理 End''''''''''''''''''''''''''''''''''
end select
if succtitle="" then error("无效指令")

Log(""&succtitle&"")
Message="<li>"&succtitle&"</li>"
succeed Message,""
%>

第231行到第235行代码如下
Rs.open "select * from ["&TablePrefix&"Posts] where ThreadID="&ThreadID&" and PostID="&ho&"",Conn,1,3
if not Rs.eof then
Rs("Visible")=2
Rs.update
if Rs("ParentID")=0 then Execute("update ["&TablePrefix&"Threads] Set Visible=2 where ThreadID="&Rs("ThreadID")&"")

可以看到ThreadID,没有经过任何过滤变放入查询 导致漏洞发生

测试方法:
可以看到文件头限制了只能进行post提交方式,所以直接在IE进行测试是不允许的。使用WS抓包用NC提交就可以了。
文章录入:cainiaowang    责任编辑:cainiaowang 
【字体:
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886