您现在的位置: Tracy‘Blog > 博客 > 黑人黑事 > 正文
总结两次非常规破解网络验证

    最近看了两个外挂性质的软件,都加了强壳,都是.net的,都是网络验证。
    软件开发者为了方便软件的管理,都习惯性用网络验证了,相对程序内部验证来说,网络验证能够实时的去添加各种检验机制,因为完全可以把验证过程放在服务端从而给破解者带来一定的困难。
    但同时,问题也随之而来,网络验证的弱点也随之加多,突破点可以在客户端、服务端、传输过程。而且,很多程序作者,处心积虑的想尽各种办法防止程序被爆破被写注册器,却因为对web安全、服务器配置懂得不多,而导致前功尽弃。安全的确是一个圆筒体系,入侵、破解过程中,黑客找的可都是最低的那块板子!
而这两个被破解的网络验证的程序,也多是从服务端搞定的。
    先来说说方法,再来谈谈看法吧。(为了保障作者权益,这里就不给详细信息了)

 

程序一:
    拿到程序直接抓包得到host,之后就去访问服务端网站,直接一个iis 6刚搭建好的欢迎页面。不想去扫和猜里面有哪些路径了,不过,也是可以去尝试扫一扫的。第一步就是去搜集信息,找了找旁站并记录下来、whois得到些信息记录、WHOIS的邮箱去社工库查查、再记录起来。
    然后,得到的信息就是,这是网上买的一空间,第一个思路就是想办法去弄旁站,然后提权或者跨目录访问得到服务端源程序,有可能的话,下载源程序在本地搭建,实现完美破解!
    下面说说拿其中一个旁站的事吧,觉得挺有意思、挺绕的,就记录了下:
    第一步就用工具扫了扫,得到后台,看到标示用的是老Ycms。
    然后下源码,尝试下载默认的数据库,额,发现文件名中有#之类的字符、服务器也做了设置,下载不了。
    然后随手直接用默认账户密码登录。成功进后台。

    然后,就想办法上传webshell。却发现各种限制~~~
    有数据库备份,立马拿来用用。先传假图片,再用数据库备份。

 

    发现当前数据库路径,不能直接更改,于是用burpsuit改包,尝试了n遍。每次访问备份的asp,发现,那就是整个数据库文件~~~

    看了下源码:


    发现其实程序没有用到我们改包填写的数据库名,真坑。
    再发现有个附件上传,直接传asp,用白名单限制了。
    然后,截断字符上传。额。尼玛成功了。可返回的是:根据截断后的文件扩展名,随机生成新的文件。嘿嘿,没法了。

    当时的解决思路有两个。
    第一个是,先备份数据库,还原的时候,用有一句话的文件还原,然后再次备份,得到一句话。不过太麻烦了。
    在后台找到另外一个功能:

 

    可以改文件上传目录。
    服务器是iis 6.0
    想到路径解析漏洞。

    于是:改为uploadfile/1.asp
    再来传,无论如何都传不了。源码中没有新建目录的功能。

    于是,再回到数据库备份。备份的目的文件夹改为uploadfile/1.asp。点击备份,目录创建成功了。
    再用上传,传一个小马到uploadfile/1.asp
    ………………
    成功得到webshell,可无奈的是,空间限制做的很死,提权是不可能的,跨目录我也没去尝试,估计路径难得猜到。

    之后,因为在拿站之前,做了些搜集信息的工作。抱着试一试的态度,用社工找到的用户名和密码登了下ftp。尼玛~~~~上去了~~~

    之后,down下服务端程序,本想改改php直接实现破解的,可发现对方是zend loader加密的,还是php5.3,解不了。于是,直接全部放到本地,实现破解。


程序二:
    这个的思路也差不蛮多。服务端是可可网络验证系统。作者还是挺舍得本的,800一套的源码呢~
    首先抓包,得到地址,然后找旁站,一一排除难拿的(这个过程很痛苦~/lh)。终于找到两个5.7  sp1的 dedecms,有一个没常更新,于是很顺利拿下webshell,提权又痛苦了,对方是Linux服务器。
    于是想到权限设置问题,同一级目录下的权限应该相同的,因为其他网站也是需要授权访问的。跨目录存在的一个很大的挑战就是,不知道路径!!!我是这么做的:
    首先一句话连接上去。ls /home/xxx/domains/xxx.web05.yyy.com/public_html/这是能成功返回的,也就是有权访问。
    再ls /home/xxx/domains/xxx.web05.yyy.com/ 不行
    再ls /home/xxx/domains/不行
    再ls /home/xxx/不行
    再ls /home/尼玛,居然可以遍历~~~于是我们可以得到很多的xxx(用户名)。
    得到xxx后,我们知道xxx.web05.yyy.com是可以访问的,于是,一个个去尝试吧~~~~(需要足够的耐心)
    之后,我们就可以得到正确的xxx了。假如是zzz,也就是我们可以ls /home/zzz/domains/zzz.web05.yyy.com/public_html/
    有回显后,就应该开心了。
    因为接下来就是
    tar -cvf zzz.tar /home/zzz/domains/zzz.web05.yyy.com/public_html/
    直接打包,然后下载下来。

    下载完了后,看config文件,得到mysql的信息,直接连接上去,dump数据库。貌似可可网络验证也是zend过的~~~

    之后~~~打完收工了~

    方法说完了,再来说说看法吧。

    其实,个人觉得,曾经碰到过一个软件的验证设计做的挺好的。
    他是这么做的,客户端有两次验证,第一次访问软件管理服务器得到注册信息,比如还有多久使用时限之类的。
    而后正常使用的时候(它需要联网),传输出去的数据发送到另外一台服务器(功能服务器),而这些数据中包含有注册信息和本地的硬件信息,也就是说,这程序在无时无刻的进行权限检测!在正常功能里加入验证,这思路还是很不错。比如一些检测账号正确性的程序其实完全可以把客户端仅仅当做一个账号信息获取的功能,所有的账号信息判断 全部由服务器完成,服务器再回传检测结果!而在这客户端传递账号信息到服务端的数据包中加入了验证信息,服务端先判断是否授权!

    好了,不多说了,仅仅是一个思路。可不能只是底层安全强或者web安全强,以后将会越来越趋向综合实力的!

    你的程序安全、你的网站不一定安全;你的网站安全、你的服务器不一定安全。
    Hacker、Cracker永远都是善于找安全体系的短板的!


——Tracy_梓朋

2014年8月7日18:41:21

发表评论(0)
姓名 *
电子邮件
QQ
评论内容 *
验证码 *图片看不清?点击重新得到验证码请输入图片后链接字符‘a’