存档

文章标签 ‘安全’

可怕的高科技犯罪:东欧ATM取款机惊现木马!

2009年6月6日 admin 没有评论

安全专家们发现,从2007年起,就有人将盗取用户账号的木马植入了东欧部分ATM取款机中。这款木马软件能在植入的ATM机上记录取款者银行卡磁条上记录的数据和个人密码!而且软件更新的速度很快,还可以在多种品牌的ATM取款机上使用。

根据安全公司Trustwave技术人员的说法,这种木马软件能自动记录用户磁卡上的数据和个人密码,并使用ATM机的收条打印功能将这些信息打印出来。从2007年晚些时候开始,这款木马的版本已经更新了至少16次之多,显然木马开发者们正在努力改进这款木马工具。

“他们的更新速度很快!”Trustwave的技术高管Nicholas Percoco说,“他们总在推出最新的木马版本。”

技术人员对最近几种版本的木马分析后的结果显示,这些木马安装到ATM机中后,会开始监视ATM机的内部数据,检查是否有用户的银行卡信息。如果数据中包含用户的银行卡信息,那么就把这些信息连同用户输入的密码一起记录下来。

需要取出数据时,攻击者可以向ATM机中插入控制卡,控制ATM机显示出10个命令选项,攻击者可以按下ATM的数字键来选择需要执行的命令,这些命令包 括打印搜集到的数据,将ATM机的log文件重置为安装木马前的状态,卸载木马软件等等。攻击者甚至还可以控制ATM机把所有内含的钱全部吐出。

另外,这款木马程序还具备将用户数据导入控制卡的功能,不过这项功能似乎并不能正常工作。这种控制卡还分为两种等级,管理等级的控制卡应该是专门提供给组织中的管理人物使用,而低级卡则由一般的小喽罗使用。

今年三月份,Sophos曾发现一批专门针对Diebold生产的ATM机的木马软件,根据这个线索,Trustwave的技术人员顺藤摸瓜对这种木马进行了深入的分析。而据Diebold表示,他们已经锁定了几名可能与此有染的嫌犯。

不过,这种木马软件只有有权打开ATM机内部的人员才可以进行安装,因此很可能是“内鬼”所为。而且根据Trustwave技术人员的说法,这种木马并不 仅仅面向Diebold生产的ATM机,而且还可以在其它品牌的ATM机上使用,不过他们拒绝透露有关品牌的具体名称,只称这些ATM机使用的是 Windows XP操作系统。

更多详细信息,可以点击这个链接了解。

CNBeta编译
原文:
theregister

分类: 安全新闻 标签: ,

Ph4nt0m Webzine 0×03 发布

2009年5月9日 admin 2 条评论

攻陷无线路由密码

2009年4月19日 admin 3 条评论

原文作者:小巫婆

这个事情是很早以前的了,过了有几个礼拜了把。

当时宿舍安了宽带,周同学拿来一个无线路由,这样整个宿舍都能无线上网了。(我没笔记本拉。)

可是,安装不久,网速一直在减慢。周同学又重新摆弄了一下,可是过了一段时间,又变慢了。 这时我发现是周同学的密码设置的太弱了(密码弱口令的普遍性),于是提示他更换密码。

本人对于无线网接触的极少(关键是没钱买本),于是,利用周末小小的学习了一下无线路由的密码破解。总体感觉,只要不是弱密码的话,想要拿到无线网的密码还不是那么容易的。因为在最后,还是得用生成的字典来跑密码。

先用笔记本电脑扫描一下无线网的信号,如果信号没有加密的话,我们就可以非常高兴的链接到该网络拉~

点击查看图片

当然对于我来说用一个无线网络信号管理工具就可以选择一个又没有加密,信号又非常好的无线网来进入拉~

点击查看图片

连接到无线网之后我们可以用CMD执行config /all命令查看本地的IP、网关等相关信息。这里,我的IP是192.168.1.102,网关是192.168.1.1。

点击查看图片

通过命令知道了网关地址就相当于我们知道网络路由器的管理地址了,然后访问192.168.1.1这个IP,果然,我们看到了路由器登录界面。

点击查看图片

接下来我们就可以通过路由密码破解软件来暴力破解密码。我使用的是webcracker 4.0(他的暴力破解需要字典)。如果手头没有现成的密码字典的话我们也可以通过专门的字典生成工具来制作相应的文件。(比如生成6位纯数字啦,数字字母混合啦等等)

用我们暴力破解得到的用户名和密码我们就可以顺利的进入网络的无线路由器当中,进而对里面的网络设置参数与上网帐户信息进行窃取了。

点击查看图片

分类: 入侵渗透 标签: ,

浅谈“点名”游戏的危害

2009年1月16日 admin 没有评论

作者:SpookZanG
转载请留名,谢谢。

最近(其实很早以前就有玩的),看到校内上一些哥们在玩点名游戏,游戏的规则就是被点名的人要回答点名的人提出的一些问题。

这要是在普通人眼里无非就是看一个乐和。

而这要是到了研究社会工程学的人(Social Engineer)的眼里,那可就是致命的东西(貌似这样写有点吓人了)。

我们随便打开一个博客类网站,我以新浪为例。(因为他能搜索BLOG的内容)

我们搜索:“我被点名了 我最喜欢的宠物是?”

其中,“我最喜欢的宠物”可以换成别的,比如:我最喜欢的电影,我最喜欢的小说,我的座右铭等等。(各位可以发挥)

为什么这么搜:因为很多人喜欢把密码的找回问题设置成为这些。

我们以这个小MM的BLOG为例。(所有有关这个MM的个人信息全部隐去)

点击查看图片

她就在玩点名游戏,其中不乏有很多的敏感信息。

我们在登录的地方选择“忘记密码”,然后我们尝试重置他的密码。

我们选择“密码查询  问题和答案 索取密码”

发现他地问题是:我最喜欢的动物是什么?

点击查看图片

我们来看看那些点名的问题中有没有我们要的……

找到一个:你最想要的宠物是什么?
答案是:小狐狸

点击查看图片

提交,显示成功!

点击查看图片

所以,我最后想说,珍惜自己的个人信息,千万不要别人问什么就“真实”的填入自己的信息。

好自为之

网游盗号产业内幕

2008年11月1日 admin 没有评论

这个行业主要这么几个层次:
1.流量商–这类人等于说是这行业的营业员 促销员..没有他你就等于没有“顾客”….
他们从个个网站站长手里收来流量 其中也有黑来的网站.然后转到自己的服务器里 自己的服务器挂好网马.有漏洞的话 点击那些网站 就会自动运行一个程序 “下载者”.下载者的功能是 直接干掉你的杀软.有的有熊猫烧香的能力去感染..ARP..自动按规矩按时间去下载规定的木马.上次我做了个实验.中了一个 直接下载了34个木马病毒..个类网游的木马都有.. 这类人 我详细算了一下 他们收流量的价格是 1万IP=90元… 就算是100元.他们给那些买木马挂信的人来挂 就拿100万流量来跑…网马中率为百分之20(已经很低了). 那么会有20万个人中镖..这20万人..算有百分之10的人玩网络游戏 那么大概会有2万个游戏ID.. 个个游戏的价位不一样的..平均了一下 按最低价 一个ID 算1元.那么他的收入是一天2万元..收100万流量的钱才1千快… 在除掉服务器的费用下家宣传收量的费用 除 除 除 算掉1万. 那么他一天赚1万!…我已经算的够低了…! 往往是这个的好几倍!
2.木马作者–这类人 市场上形成品牌的有 按顺序来 “快乐老家” “八一软件” “大小姐”“刺客”“大少爷”“天下无马”“巴拿马”“伯乐” “站神”“比翼马”“皇马”“温柔马”等..
这些作者写了有20多款游戏的木马每款木马生成器卖3000元 小马1000元.(小马是一个地址一个木马.而生成器是可以生成出很多的小马.这些木马是网站ASP收信的 俗称 “箱子”)…现在都形成品牌了..因为流量商挂马要名牌作者的马 都有马的验证器…而那些验证器上 可以给垄断马(你垄断了以后作者不会在卖给别人)的人做广告 垄断一款马的价格是 一月2万…就拿伯乐来说 他不下15款游戏被垄断了.这一月就30万.还有他卖其他没垄断的马.
…. 具我了解“天下无马”这个作者 做了一年..赚了最少不下300多万.然后洗手不干了.
3.做游戏的–(什么游戏的都用 只要你能掌握一门游戏)买马 垄断马..大规模的找流量商去挂…挂完以后 现在大多数都是以工作室为主..自己挂来自己洗(扒号卖装备卖游戏币)完了以后卖RMB..
有的做卖信的..比如 1快从流量商那挂来的信2快卖出去..卖给那些洗信的人..这些人很多..因为都是利润..拿梦幻西游这个游戏来说吧…他们1.3元挂来的信3元卖给 洗信的人…这些信(盗来的帐号密码)只要是个很普通点的号 算个中等的 装备钱卖了 值500万梦幻游戏币绰绰有余 大号就先不说了..而500万游戏币 就是50元RMB…而且非常好卖…运气好了遇到一个大号 随便值2 3百不成问题….
一般的 我认识的一个做大话3的..以前一天最高进信 2万多..他只卖信赚差价 都是供不应求的..
4.受害者–游戏玩家 …现在的网络游戏 纯粹是金钱游戏了.不投入RMB你是玩不好的…而这些人号是怎么丢的呢??? 无意期间 baidu个问题….进了一些不是知名的大网站 或者黄网…………
这就是这个行业…创造了很多百万..也拯救了不少沉迷在网络游戏里的学生 青少年…
而我呢? 哈哈 在这行业里也两年了..我不是以上环节的.我算的上是黑吃黑吧…
中马后然后上游戏 抓箱子的地址 然后根据某种漏洞去黑他们的箱子(他们的箱子是种WEB空间收信的ASP)..抓到地址后 黑他的箱子管理密码然后把这些箱子 便宜的去出售给会洗这些游戏的人.叫他们抢先去洗..下家也很赚 而我 对于我现在的经济能力也算很赚…最高记录一个月赚了1万6…但是由于上学时间有限因素..没有把他当回事..没有把他当很能赚钱创业的去对待.. 现在这个时常已经形成了品牌了做的那些人 越做越富…而现在黑箱子的那个漏洞 也不管用了..
哎 真后悔以前小..没当回事没去做款游戏..做了的话 我现在绝对一年收入不下百万..

分类: 安全新闻 标签:

关于双字节漏洞的检测

2008年9月12日 admin 没有评论

from:http://blog.xdxf.net/show-383-1.html

by 职业欠钱

昨天花了点时间去看宽字符的问题,才发现之前的理解一直有误。

%df’ 被PHP转义(开启GPC、用addslashes函数,或者icov等),单引号被加上反斜杠\

变成了 %df\’

其中\的十六进制是 %5C ,很好,现在 %df\’ = %df%5c%27

其实这也没什么,可是问题来了, 如何对待这3个字符?

取决于后台处理程序的默认编码(包括GBK在内的所有宽字符编码,具体可以看neeao大牛blog上的fuzz结果,貌似有4个编码都会有问题?本文出于方便的角度只说GBK为)。

MYSQL用GBK的编码时,会认为 %df%5c 是一个宽字符,也就是“縗”

现在 %df\’ = %df%5c%27=縗’

总结一下:

%df’ –》 %df\’ = %df%5c’ = 縗’

%df 并不是唯一的一个字符,应该是% 81-%FE 之间任意的一个都可以。

单引号在注入里绝对是个好东西,尤其是,很多程序员过分依赖于GPC或者addslashes的转义。理论上说,只要数据库连接代码设置了GBK或者是默认编码是GBK,现在程序里到处都是注入漏洞。(事实上,这种变换在XSS等领域也发挥了巨大的作用,在PHP和Linux后台程序结合的时候,还可能造成命令注入)

可以参考的测试方法(替代原来的 and 1=1 ):

%df%27 or 1=1/*

%df%27 or 1=2/*

不过,在实际环境里,我Google了好久,找到的几个门户网站注入点,都是没开启GPC,直接就能注的,被kj大牛鄙视以后,很尴尬的停止了这种重复性同质化体力劳动。

理解这个漏洞,不应该去看80sec的漏洞公告,或者上次那个什么总结。

我觉得安焦的文章说的更清楚:

http://www.xfocus.net/articles/200805/979.html

分类: 安全新闻 标签: ,

MySQL编码机制

2008年9月10日 admin 没有评论

大家都知道从 MySQL4.1 版本开始,支持多种编码,包括我们熟知的 latin1、gbk、utf8、big5 等等,还有一些我们闻所未闻的。

在使用 PHP 连接 MySQL 查询出来的数据有的时候居然会是乱码,关于乱码的解决首先我们要了解 MySQL 的编码机制。

拿 Discuz! 论坛为例,Discuz! 论坛在连接 MySQL 后会立即执行一个设定(见include/db_mysql.class.php ):

@mysql_query(“SET character_set_connection=$dbcharset, character_set_results=$dbcharset, character_set_client=binary”, $this->link);

此三处的字符设定很大程度上会解决乱码问题,那么这三个设定具体有什么作用呢?如果我们了解了 MySQL 的编码机制,就可以避免在安装插件及平时的操作过程中产生乱码,还可以自行对论坛的数据进行转码。

character_set_client 我们可以理解为 SQL 语句的编码,如果设置为 binary,MySQL 就当二进制来处理,character_set_connection 设定的值则告诉 MySQL 用来运行 SQL 语句的时候使用的编码,也就是说,程序发送给 MySQL 的 SQL 语句,会首先被 MySQL 从 character_set_client 指定的编码转换到 character_set_connection 指定的编码,如果 character_set_clien 指定的是 binary ,则 MySQL 就会把 SQL 语句按照 character_set_connection 指定的编码解释执行。

当执行 SQL 语句的过程中,比如向数据库中插入取出数据的时候,字段也有编码设置,如果字段的编码设置和 character_set_connection 指定的不同,则 MySQL 会把插入的数据转换成字段设定的编码。

当 SQL 执行完毕向客户端返回数据的时候,会把数据从字段指定的编码转换为 character_set_results 指定的编码,如果 character_set_results=NULL 则不做任何转换动作,(注意这里设置为 NULL 不等于没有设置,没有设置的时候 MySQL 会继承全局设置)。

了解了 MySQL 的编码机制,我们就可以利用这个机制进行数据的转码以及避免在程序使用过程中出现乱码了。

补充:

mysql_query(“character_set_client=gbk”); 这句告诉 MySQL 我接下来要用的 SQL 语句的编码是 GBK 的

mysql_query(“character_set_connection=gbk”); 这句 告诉 MySQL 要把 SQL 语句转换成 GBK 进行处理

mysql_query(“character_set_results=gbk”); 这句告诉 MYSQL 查询返回的结果要统一都转换成 GBK 编码的

from:http://faq.comsenz.com/viewnews-369

解决XP系统组策略锁死的难题

2008年9月10日 admin 没有评论

为保证Windows XP系统安全,很多朋友都在公共电脑上设置了组策略的“只运行许可的Windows应用程序”项,以此来防范外来程序对系统的破坏。而疏忽大意或为了防范他人修改组策略,一些朋友干脆连“gpedit.msc”文件也一并排除在允许运行程序之外,结果造成系统被锁死,导致无法运行所有程序,无奈之下只得重装系统。其实有因必有果,对此问题还是有解决方法的。

1.计划任务法

  打开“控制面板”→“任务计划”,启动向导建立一个名为MMC的任务计划,执行的程序是“C:WindowsSystem32mmc.exe”。完成后,在任务计划窗口右击新建的MMC选择“运行”,在打开的控制台程序窗口,单击菜单栏的“文件”→“打开”,定位到“C:WindowsSystem32gpedit.msc”程序,打开组策略编辑窗口,依次展开“本地计算机策略”→“用户配置”→“管理模板”→“系统”,双击右侧窗格的“只运行许可的Windows应用程序”,在弹出的窗口将其设置为“未配置”。单击“确定”退出并关闭组策略编辑窗口,当系统弹出“是否将更改保存到gpedit.msc”询问窗口时,单击“是”确定保存,即可解锁。

  2.安全模式法

  其实组策略的这个限制是通过加载注册表特定键值来实现的,而在安全模式下并不会加载这个限制。重启开机后按住F8键,在打开的多重启动菜单窗口,选择“带命令提示符的安全模式”。进入桌面后,在启动的命令提示符下输入“C:WindowsSystem32mmc.exe”,启动控制台,再按照如上操作即可解除限制,最后重启正常登录系统即可解锁。此外,组策略的很多限制在安全模式下都无法生效,如果碰到无法解除的限制,不妨进入下寻找解决办法。

  3.重命名程序法

  设置“只运行许可的windows应用程序”策略时,需要添加允许程序到列表中,如果记住了当初设置的许可运行程序名称,并且在允许列表添加的是.com、.bat、.exe之中任意一种类型文件,比如只允许“qq.exe”运行,那么就可以打开“C:WindowsSystem32”文件夹,将其中的mmc.exe程序重命名为qq.exe,再运行即可。同样如果希望保持限制,可将需要运行的程序改名为qq.exe运行,但其他人使用电脑时就只能运行QQ了。如果允许运行的程序列表中包含有regedit.exe,还可打开注册表,依次展开“HKEY_LOCAL_ MACHINESOFTWAREMicrosoft WindowsNTCurrentVersionWinlogon”分支,双击右侧窗口的Userinit子键。在打开的窗口中,将其值更改为“C:WindowsSystem32userinit.exe,mmc.exe”,来实现mmc.exe开机启动。这样修改并重启后,下次开机时即会自动运行控制台,来打开组策略编辑器进行解锁了。

  4.重命名程序法

  组策略的这个设置只能防止用户从 Windows 资源管理器启动程序,其实系统中的很多程序都是可以独立运行的。如开机就加载的桌面进程、系统服务、系统屏幕保护等,它都没有进行阻止,因此只要将mmc.exe替换为上述文件即可。以替换屏幕保护logon.scr为例,先打开“C:WindowsSystem32dllcache”文件夹,找到logon.scr文件将它复制到D:盘下,然后在“C:windowsSystem32dllcache”文件夹中删除这个屏保文件,来防止系统的文件保护功能阻止我们更改和删除系统文件,这时系统会弹出“系统文件已被更改为无法识别版本,请插入WinXP SP2光盘修复”的询问窗口,单击“取消”。接着打开“C:WindowsSystem32”文件夹,找到logon.scr文件将其删除,并将mmc.exe重命名为logon.scr。

  回到桌面,在空白处右击选择“属性”,在弹出窗口中,单击“屏幕保护程序”标签,接着在屏幕保护列表中选择“logon”,单击“预览”,此时虽然系统会提示找不到所选文件,但在后台却启动了控制台程序“mmc.exe”,对其设置解除限制即可。注意在完成操作后,最好将d:logon.scr文件复制回原文件夹。

  5.组合键启动法

  虽然系统所有程序都被锁死,但按下Ctrl+Alt+Del组合键却可以启动任务管理器。既然通过组合键可以启动taskmgr.exe程序。那么只要使用mmcexe替换taskmgr.exe,即可启动组策略进行解锁。同上,先进入“C:Windows System32dllcache”文件夹,找到taskmgr.exe程序将其重命名为taskmgr1.exe,再进入“C:WindowsSystem32”文件夹,找到并将taskmgr.exe文件重命名为taskmgr1.exe。现在将mmc.exe文件重命名为taskmgr.exe,这时再按下Ctrl+Alt+Del组合键后,便会发现启动了控制台程序。设置组策略后,将任务管理器恢复回原名称即可。

分类: 安全新闻 标签:

Windows登录类型知多少

2008年9月6日 admin 没有评论

如果你留意Windows系统的安全日志,在那些事件描述中你将会发现里面的“登录类型”并非全部相同,难道除了在键盘上进行交互式登录(登录类型1)之外还有其它类型吗?不错,Windows为了让你从日志中获得更多有价值的信息,它细分了很多种登录类型,以便让你区分登录者到底是从本地登录,还是从网络登录,以及其它更多的登录方式。因为了解了这些登录方式,将有助于你从事件日志中发现可疑的黑客行为,并能够判断其攻击方式。下面我们就来详细地看看Windows的登录类型。
  
  登录类型2:交互式登录(Interactive)
  
  这应该是你最先想到的登录方式吧,所谓交互式登录就是指用户在计算机的控制台上进行的登录,也就是在本地键盘上进行的登录,但不要忘记通过KVM登录仍然属于交互式登录,虽然它是基于网络的。
  
  登录类型3:网络(Network)
  
  当你从网络的上访问一台计算机时在大多数情况下Windows记为类型3,最常见的情况就是连接到共享文件夹或者共享打印机时。另外大多数情况下通过网络登录IIS时也被记为这种类型,但基本验证方式的IIS登录是个例外,它将被记为类型8,下面将讲述。
  
  登录类型4:批处理(Batch)
  
  当Windows运行一个计划任务时,“计划任务服务”将为这个任务首先创建一个新的登录会话以便它能在此计划任务所配置的用户账户下运行,当这种登录出现时,Windows在日志中记为类型4,对于其它类型的工作任务系统,依赖于它的设计,也可以在开始工作时产生类型4的登录事件,类型4登录通常表明某计划任务启动,但也可能是一个恶意用户通过计划任务来猜测用户密码,这种尝试将产生一个类型4的登录失败事件,但是这种失败登录也可能是由于计划任务的用户密码没能同步更改造成的,比如用户密码更改了,而忘记了在计划任务中进行更改。
  
  登录类型5:服务(Service)
  
  与计划任务类似,每种服务都被配置在某个特定的用户账户下运行,当一个服务开始时,Windows首先为这个特定的用户创建一个登录会话,这将被记为类型5,失败的类型5通常表明用户的密码已变而这里没得到更新,当然这也可能是由恶意用户的密码猜测引起的,但是这种可能性比较小,因为创建一个新的服务或编辑一个已存在的服务默认情况下都要求是管理员或serversoperators身份,而这种身份的恶意用户,已经有足够的能力来干他的坏事了,已经用不着费力来猜测服务密码了。
  
  登录类型7:解锁(Unlock)
  
  你可能希望当一个用户离开他的计算机时相应的工作站自动开始一个密码保护的屏保,当一个用户回来解锁时,Windows就把这种解锁操作认为是一个类型7的登录,失败的类型7登录表明有人输入了错误的密码或者有人在尝试解锁计算机。
  
  登录类型8:网络明文(NetworkCleartext)
  
  这种登录表明这是一个像类型3一样的网络登录,但是这种登录的密码在网络上是通过明文传输的,WindowsServer服务是不允许通过明文验证连接到共享文件夹或打印机的,据我所知只有当从一个使用Advapi的ASP脚本登录或者一个用户使用基本验证方式登录IIS才会是这种登录类型。“登录过程”栏都将列出Advapi.
  
  登录类型9:新凭证(NewCredentials)
  
  当你使用带/Netonly参数的RUNAS命令运行一个程序时,RUNAS以本地当前登录用户运行它,但如果这个程序需要连接到网络上的其它计算机时,这时就将以RUNAS命令中指定的用户进行连接,同时Windows将把这种登录记为类型9,如果RUNAS命令没带/Netonly参数,那么这个程序就将以指定的用户运行,但日志中的登录类型是2.
  
  登录类型10:远程交互(RemoteInteractive)
  
  当你通过终端服务、远程桌面或远程协助访问计算机时,Windows将记为类型10,以便与真正的控制台登录相区别,注意XP之前的版本不支持这种登录类型,比如Windows2000仍然会把终端服务登录记为类型2.
  
  登录类型11:缓存交互(CachedInteractive)
  
  Windows支持一种称为缓存登录的功能,这种功能对移动用户尤其有利,比如你在自己网络之外以域用户登录而无法登录域控制器时就将使用这种功能,默认情况下,Windows缓存了最近10次交互式域登录的凭证HASH,如果以后当你以一个域用户登录而又没有域控制器可用时,Windows将使用这些HASH来验证你的身份。
  
  上面讲了Windows的登录类型,但默认情况下Windows2000是没有记录安全日志的,你必须先启用组策略“计算机配置/Windows设置/安全设置/本地策略/审核策略”下的“审核登录事件”才能看到上面的记录信息。希望这些详细的记录信息有助于大家更好地掌握系统情况,维护网络安定。

分类: 安全新闻 标签:

暴库漏洞原理及规律

2008年8月30日 admin 没有评论

SQL注入流行很久了,我们找漏洞注入目的无非是想得到数据库内的东西,比如用户名密码等,更进一步的MSSQL数据库还可以借此获得权限。基于Access的基础来说,如果我们不用注入就可以得到整个数据库,不是更好吗?于是暴库成了一个比注入更简单的入侵手段。
有关暴库的方法,高手们常在入侵文章中提到,但多是一笔带过,有些就某一个方法谈的,也多是就方法进行探讨。最近有一篇《再谈%5c暴库的利用》的文章,算是对暴库进行了一些总结,因而在网是流传很广。但仍没有谈及原理,而且结论也只是就于经验,似是而非,于是决定来谈谈暴库的原理与规律。不到之处,大家多指教。

“%5c”暴库大法
这种方法被认为是暴库绝招,很是流行了一阵,但是和其它漏洞一样,随着知道的人多了,防备也加强了,没以前那么有效。这种方法简单点说就是在打开网页时,把网址址中的“/”换成“%5c”,然后提交,就可以暴出数据库的路径。
  实际上,并不是所有网址都有效,需要“asp?id=”这样的网页地址,或者说表示有调用数据库的行为的地址。如果你确认这个网页有调用数据库的,后面不是这样的也可以,比如Chklogin.asp等也可以(还有其它条件,后面再谈)。先举个黑防第四轮实验室中的例子:

http://XXXX/yddown%5cview.asp?id=3

把第二个“/”换成“%5c”:

http://XXXX/yddown%5cview.asp?id=3

提交后会得到如下返回结果:

Microsoft JET Database Engine 错误 ’80004005’  
’D:111adminrds_dbd32rfd213fg.mdb’不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。  
/yddown/conn.asp,行12  

这是黑防实验室的一个系统,暴库是小编们故意开放的,因为它的关口不是注入,而是进入后台后如何获得WebShell。可以看到我们直接获取了数据库地址,可以下载了。
现在很多人都知道这个方法了,我就不多举例了。但清楚暴库原理的人估计是不多的,有人成功,有人不成功,《再谈%5c暴库的利用》一文总结说,须变换第二个“/”为“%5c”才行。很有实用性,但这个结论只是一种经验,其实并不正确,让我们先看看它的原理。
“%5c”暴库法,它不是网页本身的漏洞,而是利用了IIS解码方式中的一个特性,如果IIS安全设置不周全,而网页设计者未考虑IIS错误,就会被人利用。为何要用“%5c”?它实际上是“”的十六进制代码,也就是“”的另一种表示法。在电脑中,它们是同一个东东,但提交“”和“%5c”却会产生不同的结果。在IE中,我们把下面第一个地址中的“/”换成“”提交:

http://XXXX/yddown/view.asp?id=3

http://XXXX/yddownview.asp?id=3

二者的访问结果是一样的。IE会自动把“”转变成“/”,从而访问到同一地址。但是,当我们把“/”换成十六进制写法“%5c”时,IE不会对此进行转换。地址中的“%5c”被原样提交了,抓包结果如下:

GET /yddown%5cview.asp?id=3 HTTP/1.1
当IIS收到并做出解析时,又会将%5c还原成“”。这样,IIS中网址的相对路径就变成/yddownview.asp,这一点很重要,问题正是从这里开始的。
在ASP网页中,凡调用数据库时,都会用到一个连接数据库的网页Conn.asp,它会创建一个数据库连接对象,定义要调用的数据库路径,一个典型的Conn.asp如下:

<!--dim conn
dim dbpath
set conn=server.createobject("adodb.connection")
DBPath = Server.MapPath("admin/rds_dbd32rfd213fg.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
-->

大家注意第4句:“DBPath = Server.MapPath(“admin/rds_dbd32rfd213fg.mdb”)”,Server.MapPath方法的作用是将网站中的相对路径转变成物理上的绝对路径,为何要这样?因为连接数据库时,须指明它的绝对路径才能读取和写入。那什么是相对路径、绝对路径?IIS为了不让访问者知道真实的实际路径,并且确保网站不因变换地址而影响使用,它采用了一种相对路径来表示目录与文件之间的关系。也就是网址目录只表示从根目录起的相对位置。比如网站:

http://XXXX/的根目录为:“D:111”,雨点下载目录则在根目录(D:111)内的“yddown”下,我们网站访问该站时,就是在访问D:111yddown目录,而http://XXXX/yddown/admin/只表明了Admin与Yddown这个目录的相对关系,把这个网站放在E盘,也一样不改变Admin位于Yddown目录下的关系。

当Server.MapPath方法将相对路径转为真实路径时,它实际是三部分路径加在一起得到真实路径的:网页目前执行时所在的相对路径,也就是从网站物理根目录起的相对路径,比如上面例子中Conn.asp处在从根目录起的“/yddown/”下;然后调用的数据库的相对路径是admin/rds_dbd32rfd213fg.mdb,这样就得到从根目录起的完整相对路径:“/yddown/admin/rds_dbd32rfd213fg.mdb”。这些都只是相对的路径,如何变为真实路径呢?
  设置过IIS的人都会知道,每一个网站,都必须指定它在硬盘上的物理目录,比如上例中,网站根目录所在的物理目录为:“D:111”,Server.MapPath方法正是通过把“网站根目录的物理地址+完整的相对路径”,从而得到真实的物理路径,数据库在硬盘上的物理路径是:D:111yddownadminrds_dbd32rfd213fg.mdb。IIS以“”表示真实路径的目录关系,而以“/”表示虚拟路径,这可能就是IE会自动把我们地址中的“”转为“/”的原因。
  明白这些,我们再来理解暴库就不难了,当我们提交:http://XXXX/yddown%5cview.asp?id=3时,View.asp调用Conn.asp后,得到的网页相对路径是这样的:“/yddown”,再加上“admin/rds_dbd32rfd213fg.mdb”,就得到“/yddown+admin/rds_dbd32rfd213fg.mdb”。在IIS中,“/”和“”代表着不同的意义,遇到了“”时,认为它已到了根目录所在的物理路径,不再往上解析(为何不再往上解析?后面还会分析),于是网站的完整相对路径变成了:“admin/rds_dbd32rfd213fg.mdb”,再加上根目录的物理路径,得到的真实路径变成:“D:111adminrds_dbd32rfd213fg.mdb”,而这个路径是不存在的,数据库连接当然会失败,于是IIS会报错,并给出错误原因:
Microsoft JET Database Engine 错误 ’80004005’
’D:111adminrds_dbd32rfd213fg.mdb’不是一个有效的路径。 确定路径名称拼写是
否正确,以及是否连接到文件存放的服务器。
/yddown/conn.asp,行12
这就是暴库方法的来历。
  《再谈%5c暴库的利用》一文中说,必须是网址中的第二级目录才可以成功,第一个不行。我们从理论上来分析一下,看到底有无规律。还以上面网址为例,如果将第一个“/”换成“%5c”,得到的网站相对路径变成“yddows/admin/rds_dbd32rfd213fg.mdb”,解析到“”时,认为已到物理目录,不再往前解析。而事实上,它确实也是根目录,所以得到的物理路径为:“D:111dydowadminrds_dbd32rfd213fg.mdb”,这个路径是正确的,所以不会出错,当然不会暴出数据库路径。
第二个“/”换成“%5c”的情况,我们上面已作分析,那是不是真的就是二级页面才可以暴出呢?事实上,只是因为二级页面较为常见,并不是真理。如果这个下载系统是某一个网站中的三级目录,那第三个“/”成功的可能性更大。也就是说,最右边第一个成功可能性大!

http://XXXX/channely/blog/showlog.asp?cat_id=31&log_id=246

这个网址变第二个“/”为“%5c”时,网站打开很慢,但没有出错。当我们把第三个“/”变成“%5c”后,提交:

http://XXXX/channely/blog%5cshowlog.asp?cat_id=31&log_id=246

数据库暴出来了:
Microsoft JET Database Engine 错误 ’80004005’
’H:channelylog_mdb%29dlog_mdb%29.asp’不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。
/channely/blog/conn.asp,行18
为何这样?这是因为网站用了虚拟目录,也就是说这个网站的子目录Channely并不在网站根目录内。设置过IIS的人会知道,可以将网站目录外的一个真实物理目录设置为网站的虚拟目录。也就是说,网站的相对对径并不总是从根目录算起,很可能在某个子目录就指向了物理目录。

上面的结果很显然,Channely已位于H:盘的根目录上,上面再没有目录。事实上,很可能网站在D:盘或E:盘,而通过IIS中设置Channely虚拟子目录指向网站根目录以外的“H:channely”。
这里,我们可以更清楚的看到,微软IIS为何没有到根目录,只要遇上“”就认为已到物理绝对路径,不再往上解析的原因,就是为了处理这种网站虚拟目录与根目录不在一起的情况。它优先查询每个目录是否指向了物理路径,如果指向了,则把它换成绝对路径,而它上面的相对地址不再解析转换。
从以上分析可知,我们只有在数据库相对地址和它的目录绝对地址之间使用“”(“%5c”)才能达到目的。上例中,如果在第二处使用,它只会影响到IIS寻找虚拟的Channely目录地址,而Conn.asp中解析出的数据库地“H:channelybloglog_mdb%29dlog_mdb%29.asp”仍是对的。
《再谈%5c暴库的利用》中还说了一种针对只有一级目录的解决方法:“其实一级目录我们也同样可以成功的,我们可以通过构造一个多级目录来达到暴库的目的。如:

http://xxxx/noexists/..%5clist.asp?id=1

这样大家就会有新的惊喜了,呵呵。”真的吗?从理论上分析,这种方法是不会成功的。因为遇到“%5c”时,页面不再解析,所以中间构造的目录不论是真是假,都是不起作用而被舍弃了,相对路径还是到了根目录,路径不会出错。为了证明,我特意找了一个例子:

http://xxxx/Article_Show.asp?ArticleID=481

这个网站我们先用Conn.asp方法暴出数据库(后面将讲解这个方法),说明服务器和网站设置是可以暴库的。提交:

http://xxxx/inc/conn.asp

可以看到是可以暴库的,我们再提交:

http://xxxx/abc/..%5cArticle_Show.asp?ArticleID=481

却暴不出库,仍得到正常页面(换成存在的路径结果也一样),但图片无法显示。这是因为相对路径变了,所以无法正确找到图片路径,但绝对路径解析时被“%5c”舍弃了,没有出错,当然暴不出库了。

Conn.asp暴库大法
这里的Conn.asp只是表示数据库调用文件,因为多数都是这个名字(有些网站改名,我们也视同Conn.asp)。其实,这种暴库法是最先出现的,以前很多牛人都对此进行过探讨,我记得黑防也在特别早的时候专门讨论了这个方法。只是在“%5c”暴库大法出现后,倒较少有人提及。其实个人认为,“%5c”暴大法随着服务器设置安全性的加强,用武之地会越来越少。而Conn.asp暴库大法发挥的余地更大,可以人为构造,臭要饭的当年著名的动网大挪移实现暴库,其实也属于此类。
在上面http://www.om88.com/的一例中,用“%5c”暴不出数据库路径,因为没有二级目录,但用第二种却可以暴出,它是动力系统的。我们再来看另外一个盗帅的例子:http://www.51see.org/
提交:

http://www.51see.org/db/user.asp

得到如下结果:。
“Microsoft JET Database Engine 错误 ’80004005’
’d:Hostingwwwrootuilady_comhtdocsdbdbdownloadwoaini12345.asp’不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。
/db/user.asp,行6 ”
有人可能会说,这么简单就暴库,好爽!是不是所有网站都可以这样啊?当然不是,已作了防护的站点肯定不行,没作防护的,要暴库也是有条件的。如果说第一种暴库法是利用了绝对路径出错,那么,这种暴库法就是利用了相对路径出错。
一般来说,只要Conn.asp不在根目录的系统,而调用文件在根目录,就会出现这种问题。当然这种说法也是经验性的,准确的说就是,Conn.asp与调用它的文件如果相对位置改变了,就会报错,暴出数据库路径。这样说可能有人不明白,不要紧,接着看你就会明白的。
我们从动力文章系统说起。
动力文章系统的Conn.asp位于系统下的INC目录下,而很多调用它的文件在系统根目录下,比如User_ChkLogin.asp等,这样当Conn.asp执行时,它是在系统根目录“D:wwwrootzyx688wwwroot”下执行的。因此,Conn.asp文件中,调用数据库时它考虑到执行时的目录路径,因而数据库的相对地址写成如下:
db=”database/fp360609.asp”
这样,当它在系统根目录下执行时,数据库的相对路径为根目录下的“database”目录,但当我们直接请求它时,它工作的当前目录是在根目录下的INC目录内,这时数据库的相对路径就变成了“inc/database/fp360609.asp”,这样它当然出错,得到的绝对路径中也多出了“inc”。为了让大家看得更清楚,我们举一个可以用两种方法暴库的网站,比较一下看有何不同。提交:

http://www.pofen.com/sc/down%5cshow.asp?id=437

得到:
“Microsoft JET Database Engine 错误 ’80004005’
’D:Webdatapofen.comscdbdownload.mdb’不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。
/sc/down/db/user.asp,行6 ”
再提交:

http://www.pofen.com/sc/down/db/user.asp

得到:
Microsoft JET Database Engine 错误 ’80004005’
’D:Webdatapofen.comscdowndbdbdownload.mdb’不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。
/sc/down/db/user.asp,行6
两种方法得到的绝对路径,一个比实际路径少了,一个则多了,这两个系统都是因为Conn.asp不在系统根目录下而引起的。那是不是Conn.asp放在根目录,与调用的文件在一个目录下就无事呢?如果在一起,当然没事,但牛人自有牛法子,可以通过构造方法来造成相对路径变化,一样能达到暴库的目的。比如,动网的大挪移手法,将Conn.asp移位,从而暴库。
当然,实际操作中,因为Conn.asp移走后,网站无法工作,所以没有成功,但这种思路还是给很多人启发。如果有一种方法可以复制而不是移动,或者说,移动的不是Conn.asp,而是调用Conn.asp的其它文件,比如Chklogin之类,理论上就可以成功。今天刚看到一个暴动易系统路径的最新方法,其原理就是构造错误而达到获得真实路径的目的。

防范暴库
说白了,暴库是因为IIS服务器会对每个执行错误给出详细说明,并停止执行,IIS的默认设置又是将错误信息返回给用户。因此,要避免暴库,就应改变IIS的默认设置,选取错误时只给一个出错的通知,不给详细信息。
其实,有些虚拟主机为了便于站长调试,一般不关掉信息返回,作为网站管理者,又无法对虚拟主机设置时,只能在网页中加强防范。就是在可能出错的页面加上这一句:“On Error Resume Next”。它的意思是出错后,恢复执行下面的语句,也就是不理会出错,当然就不会给出错误信息了。动易系统3.62版加上这句话后,现在就暴不出路径了,而天意商务网的Conn.asp也不在根目录,但因为加了这句,也暴不出数据库了。

分类: 胡说胡写 标签: