Web安全实践(6)web应用剖析之信息提炼

 

                                                                      作者:玄魂

前置知识

本系列导航http://www.cnblogs.com/xuanhun/archive/2008/10/25/1319523.html

安全技术区http://space.cnblogs.com/group/group_detail.aspx?gid=100566 

前言

   web安全实践系列主要是对《黑客大曝光——web应用安全机密与解决方案(第二版)》的内容做的实践研究和部分编程实现。所以如果您能完全理解那本书可以跳过本文章。


 


正文

自动化工具帮我们得到了关于目标站点的一个完整的地图,如果你下载了整个站点,我么可以利用它的搜索功能进一步得到一些细节信息。当然我们要面对爬行工具的缺陷,很多工作还是离不开手工的。对于细节信息我们大概从以下几个方面去考虑。

6.1 动态页面和静态生成页面

静态页面是不能用来测试工具和提交任何请求的,我们要关注它的注释或者其他信息,也许会有意外的发现。动态页面是和服务器交互的页面,也是我们入侵服务器的通道。把所有页面划分成这两类很简单,只需根据扩展名来区分就可以了。

6.2目录结构和目录名,文件名

网站架构是非常有规律的,我们可以通过目录结构和目录名大概推测出各个目录与文件的功能。

特权目录如 /admin/ /adm/等

备份或日志文件目录 如/back/ /log/ 等

文件包含目录如/inc/ /include/ /js/ /global/ /local/等

国际化目录如/en/ /eng/等。

当然我们可以推测一些可能存在的隐含目录,然后向这些目录发送请求,根据提示信息判断。

6.3 文件扩展名

细分文件扩展名的目的是进一步分析没种扩展名的背后的技术使用,执行细节,通过搜索引擎可以获得最近的关于该文件的漏洞及攻击方法。

常见文件扩展名及我在网上找到的相关示例网址。

cfm文件ColdFusion如:http://www.joespub.com/web_joes/index.cfm

aspx文件 asp.net: http://www.neworiental.org/Portal0/Default.aspx

nsf文件 Lotus Domino如:http://166.111.4.136:8080/yjsy/main.nsf/SecondClassParaShow?openform&ClassCode=C04

asp文件 asp如:www.w3schools.com/asp/default.asp

do 文件 BroadVision如:http://login.xiaonei.com/Login.do

pl文件 Perl如:www.chinaembassy.org.pl

cgi 文件 CGI如:www.bioinfo.tsinghua.edu.cn/~zhengjsh/cgi-bin/getCode.cgi

py文件 Python如:www.orcaware.com/svn/wiki/Svnmerge.py

php文件 PHP如:www.paper.edu.cn/index.php

shtml文件 SSI如:http://finance.cctv.com/index.shtml

jsp文件 Jsp如:www.tsinghua.edu.cn/qhdwzy/zsxx.jsp

 

6.4 表单

表单是web应用程序的骨干。我们要尽最大的可能找出所有页面的表单信息,特别是隐藏表单。我们可以利用自动化工具的搜索功能或者手工的方式找寻表单信息。

表单的提交方法。是get还是post。Get更容易在浏览器里操作,但这不以为着post就一定比get安全。

行为。表单调用了什么脚本,使用的语言等等。

最大长度。输入字段是否做了长度限制。如果做了长度限制你是否考虑绕过长度限制的方法。

隐藏。对于隐藏字段我们要特别注意它们的用途。比如这样的代码

<input type="hidden" name=username>

<input type="hidden" name=password>

<input type="hidden" name=shkOvertime value=720>

 

6.5 查询字符串和参数

 

查询字符串大多数情况下位于问号标记的后面。例如www.smg.cn/Index_Columns/Index_Channels.aspx?id=25

分析查询字符串和参数是一件很复杂的事情。

参数的含义是什么。

接收参数的页面或者程序是什么。

对参数的处理及验证是否严格。

是否包含数据库等敏感信息。

用户标识符如www.tudou.com/home/user_programs.php?userID=4030105

会话标识如:www.avssymposium.org/Session.asp?sessionID=143

数据库查询如:http://flash.tom.com/user_msg.php?username=itscartoon

 

6.6 常见cookie

很多应用程序是用cookie来传递信息和标识状态的。如:

Referer: http://www.xiaonei.com/

Cookie: __utma=204579609.447084729.1223101387.1224932689.1225885810.51; __utmz=204579609.1224572867.45.4.utmccn=(referral)|utmcsr=blog.xiaonei.com|utmcct=/GetEntry.do|utmcmd=referral;

6.7 google hack

intext:
这个就是把网页中的正文内容中的某个字符做为搜索条件.例如在google里输入:intext:动网.将返回所有在网页正文部分包含"动网"的网页.allintext:使用方法和intext类似.如:

intitle:
和上面那个intext差不多,搜索网页标题中是否有我们所要找的字符.例如搜索:intitle:安全天使.将返回所有网页标题中包含"安全天使"的网页.同理allintitle:也同intitle类似.

cache:
搜索google里关于某些内容的缓存,有时候也许能找到一些好东西哦.

define:
搜索某个词语的定义,搜索:define:hacker,将返回关于hacker的定义.

filetype:
这个我要重点推荐一下,无论是撒网式攻击还是我们后面要说的对特定目标进行信息收集都需要用到这个.搜索指定类型的文件.例如输入:filetype:doc.将返回所有以doc结尾的文件URL.当然如果你找.bak、.mdb或.inc也是可以的,获得的信息也许会更丰富:)

info:
查找指定站点的一些基本信息.

inurl:
搜索我们指定的字符是否存在于URL中.例如输入:inurl:admin,将返回N个类似于这样的连接:http://www.xxx.com/xxx/admin,用来找管理员登陆的URL不错.allinurl也同inurl类似,可指定多个字符.

link:
例如搜索:inurl:www.4ngel.net可以返回所有和www.4ngel.net做了链接的URL.

site:
这个也很有用,例如:site:www.4ngel.net.将返回所有和4ngel.net这个站有关的URL.

related:如related:www.sina.com。返回与新浪相关的页面。

 

    对了还有一些操作符也是很有用的:

+ 把google可能忽略的字列如查询范围
- 把某个字忽略
~ 同意词
. 单一的通配符
* 通配符,可代表多个字母
""精确查询

 

posted @ 2008-11-05 20:07  玄魂  阅读(2371)  评论(4编辑  收藏  举报