搜索引擎始终是黑客最好的朋友。至少一个主要的互联网搜索引擎在过去至少索引过一次你的目标Web应用,这是件很好的事情。在本书编写的时候最流行和有效的搜索引擎包括Google、Bing、Yahoo、Ask、AOL和许多其他搜索引擎(你可以在本章结尾的“参考与延伸阅读”小节中找到链接)。
我们最喜欢的是Google。下面是我们在采用基于搜索引擎的方法对Web应用进行剖析时利用的一些基本技术(下面的例子根据Google的语法):
·使用“site:www.victim.com”(包括引号)搜索特定的网站,查找包含site:www.victim.com的URL。
·使用related:www.victim.com搜索与特定网站相关的页面,返回与www.victim.com相关的更有针对性的结果。
·检查从Google存档中取出网页内容的“缓冲”结果。这样,你可以查看网站中的特定页面,而不用离开舒适的www.google.com。这就像一个超级代理!
·调查被称作相似页面的搜索结果链接。这些工作和前面的“related”关键字相似。
·检查包含新闻组帖子的搜索结果,查看是否有与网站相关的帖子。这可能包含用户对登录困难的抱怨,或者管理员提出的软件组件方面的帮助要求。
·确保只使用域名site:victim.com进行搜索,这能返回“mail.victim.com”或“beta.victim.com”这样的搜索结果。
·使用文件类型操作符,如“filetype:swf”查找特定的文件类型,这将过滤结果,使其只包括含有对应的搜索关键字的Flash SWF文件。
利用搜索剖析网站的另一个确实有效的方法是,在检查网站的同时注意应用与URL交互的方式。尝试发掘URL独特的部分,例如,可能是一个文件名或者扩展名,甚至是参数工作的方式。还尝试识别某些固定的内容,然后进行Google搜索,看看是否有文档或者可能运行它的其他网站。例如,在最近的一次应用评估中,我们到处点击并且研究URL的设置方式。主页的URL类似于这种形式:
http://site/wconnect/ace/home.htm
主页上指向“online courses(在线课程)”的一个链接如下:
https://site/wconnect/wc.dll?acecode%7ESubGroup%7EONL%7EOnline%2BCourses
追随这个链接,我们进一步深入网站中,注意到如下URL:
https://site/wconnect/wc.dll?acecode~GroupCatalog~GROUP~ONLFIN~Financial+Planning+Online~ONL
https://site/wconnect/wc.dll?acecode~GroupCatalog~GROUP~ONLFIN~Financial+Planning+Online~ON L~&ORDER=LOCATION
注意,不管我们转向哪里,参数都被传递给wc.dll。所以我们必须找到更多关于这个文件的内容。为此,我们在Google上搜索/wconnect/wc.dll。结果返回一个其他运行这个文件的网站列表。在一些快速的调查之后,我们确定这个文件属于West-Wind开发的应用“Web Connection”。为了进一步研究,我们来到West-Wind网站的支持页面,找到了管理指南。在阅读文档时,我们注意到http://site/wconnect/admin.asp上有一个基于Web的管理页面,于是返回到该网站并且试图访问这个页面。但是我们对管理页面的请求得到一个“IP地址被拒绝”的错误信息,因为我们试图从一个未授权的IP地址访问受限区域。似乎管理员很好地使用了访问控制列表(ACL)。我们发现这是一个死胡同,因为无法了解IP地址欺骗的方法。但是,我们生来就是要迎接挑战的,我们再次回到文档。这次我们注意到只需要输入http://site.com/wconnect/wc.dll?_maintain_ShowStatu就可以访问应用的一个状态页面。这个页面如图2-5所示。
通过这个请求,我们能够成功地访问应用的状态页面。当我们仔细观察状态页面时,注意到有趣的事情:有一个“回到管理页面”链接。这是很有价值的,因为我们并未从管理页面来到这个页面!点击这个链接,将我们送回到admin.asp的页面,这个页面的访问遭到拒绝(不出意料)。但是我们知道这是值得调查的地方。我们感觉接近于渗透这个网站了,因为我们在没有访问管理页面的情况下访问了一个管理功能。再次回到文档之后,我们了解到管理页面只是wc.dll所实现的函数调用的一个跳转页面。因此,如果我们知道管理函数调用,只要通过wc.dll文件直接调用,而无须访问admin.asp页面。这一突破使得所有的工作和剖析研究都有了价值!
图2-5 wc.dll动态页面生成组件输出的_maintain~ShowStatus参数
我们回到文档识别所有可能提供系统的更深入访问的函数调用,寻找任何可能对工作有帮助的有趣之处。在手册中,我们发现了wconnect.ini文件参数的描述,应用从这个文件中读取设置。文档提到一个可定义的参数,运行一个.exe文件。下面是文档中的说明:
“StartEXE:启动一个用于基于文件消息的EXE,这个EXE在DLL ini文件中的ExeFile指定。这个EXE在系统上下文中启动,所以从服务中启动时将会运行于不可见的状态。”
这正是我们要找的。现在我们需要修改这个参数的值,这样就可以启动我们所定义的.exe文件。幸运的是,我们在文档中找到了一个API,名为“wwMain~EditConfig”。文档提到,这个API调用允许远程编辑Web Connection配置文件。文档还描述了一个很有用的显示远程编辑的服务器配置文件的页面:
http://site.com/wconnect/wc.dll?wwMain~EditConfig
嘿!这正是我们需要的!我们将这个URL插入到浏览器中,弹出我们所需要的编辑和更新.ini文件的页面。接着我们找到了ExeFile参数并且将值改为c:\winnt\system32\cmd.exe/c"dir/S c:\>d:\inetpub\wwwroot\dir.txt",如图2-6所示。
这给了我们系统中所有文件的完整目录列表并且转储到Web根目录中的一个文本文件。我们更新了.ini文件。现在,唯一剩下的工作就是弄明白如何让应用服务器重新读入配置文件,执行我们的命令。
回顾文档,我们找到了所需要的:http://site.com/wc.dll?_maintain~StartExe。这能使应用重启并且运行我们的命令。运行结束后,我们就能够从http://site.com/dir.txt访问到新创建的文件。
所有这一切都从简单的Google查询开始!在你考虑网站的结构和逻辑时记住这一点。我们将在本章稍后的2.3节“一般对策”中讨论对这个方法的可能对策。
图2-6 操纵ExeFile参数在受害系统上运行任何命令。我的天,用Google能找到什么
开源的情报
除了Google之外,还有其他搜索引擎聚焦于对查找特定信息有价值的特殊内容。不管你想要查找关于某个人的信息或者查询公共记录,都可能有适合你的要求的特殊搜索引擎。Melissa Data这样的服务能够帮助你免费地收集与目标Web应用相关的人员信息。即使是目标相关的人力资源的邮件地址或者电话号码都有可能与剖析目标应用时的技术资源信息同样有价值,甚至超出。Maltego是一个自动化收集这类信息的许多工作的工具,它定义为开源的情报收集工具,帮助形象化人们、组织、网站、互联网基础架构和许多其他链接之间的关系。图2-7显示了Maltego对一个网站的剖析。
图2-7 开源智能工具Maltego剖析一个网站
Maltego能辅助信息收集,并能查找组织中各个部件之间的关联。即使只有像域名和IP地址这样简单的信息,它也能查询公共记录来发现联系。这个工具所能进行的查询的完整列表可以在http://ctas.paterva.com/view/Category:Transforms找到。
社交网络是另一个成长中的情报来源。某种攻击可能涉及加入LinkedIn(www.linkedin.com)并且假冒某个特定公司雇员的恶意用户。他可以连接到其他雇员并且获取他们的信息,之后将这些信息用于进一步的攻击。为了抵御这种攻击,社交网络的用户必须意识到分享敏感信息的地方和人。许多企业已经开始通过内部培训活动,在某些情况下对雇员与工作项目相关的敏感信息的Twitter feed和Facebook简档进行监控,来提升这种风险意识。2010年3月,以色列军方在一位士兵在Facebook网页上泄露了行动细节之后取消了计划内的一次攻击。由于担心敌人已经阅读了与攻击特定时间和地点相关的信息,军方认为继续这一计划内的行动风险过高。没有适当的员工培训和政策,这种信息泄露可能在任何组织发生。
Robots.txt
在开始介绍互联网引擎的使用之前,先说明一个可能极大改进剖析效率的搜索相关问题。Robots.txt文件包含了搜索引擎(如Google)应该搜索或者忽略的目录列表。这个文件可以从Google上或者从网站上读取:
[root@meddle]# getit.sh www.victim.com /robots.txt User-agent: * Disallow: /Admin/ Disallow: /admin/ Disallow: /common/ Disallow: /cgi-bin/ Disallow: /scripts/ Disallow: /Scripts/ Disallow: /i/ Disallow: /images/ Disallow: /Search Disallow: /search Disallow: /links Disallow: /perl Disallow: /ipchome Disallow: /newshome Disallow: /privacyhome Disallow: /legalhome Disallow: /accounthome Disallow: /productshome Disallow: /solutionshome Disallow: /tmpgeos/
这样的文件是个金矿!Disallow标记指示协作的爬行工具忽略这个目录。工具和搜索引擎很少这么做。重要的是robots.txt文件提供了目录结构很好的快照——而且可能是一些指出之后可以利用的错误配置的清晰线索。
注意 怀疑网站不再使用robots.txt文件?在Google上尝试这一搜索(“parent directory”必须加上引号):"parent directory"robots.txt。