1.枚举内容和功能:主要用于枚举web内容和主要功能,分析运行程序的每一方面和防御机制以及使用的技术,从而可以分析其存在的主要受攻击面和,进而发现可分析的漏洞。
A:web抓取:主要是进行一些自动化web爬虫应用程序的抓取,通过web爬虫自动化工具生成站点地图。
web爬虫主要存在着一些缺点,简单列举如下所示:
1.这些工具一般无法正确处理一些导航机制,因此可能遗漏应用程序的某些功能。
2.多阶段功能往往会严格地执行输入确认检查,因此可能无法接受由自动工具提交的值,例如注册界面需要用户提交表单输入多样信息,web自动化爬虫可能会进行每个输入信息单独给出测试值,若是其中一个测试值无效,则由服务器返回无效错误信息,而web爬虫无法理解该错误信息,因此就无法识别该功能页面。
3.url中可能含有参数,而相同的url可能带有的参数值不同从而由服务器给出的返回也不同,如果该爬虫拒绝向该url提交个人请求,则有可能遗漏该url的多种功能。
4.一些url中可能插入实际上不用于确定功能和资源的可变数据,而随着参数的变化被爬虫辨别为不同的
5.由于客户端或者服务端各种原因导致各种会话中断从而结束会话,导致无法正常地爬取该页面。
B:用户指定的爬取
该做法的原理是用户手动进行功能页面的浏览,通过web代理服务器和爬虫的结合从而进行站点地图的生成,该方法可解决以上大部分的缺点。
C:以上知识对渗透测试的帮助:
配置爬虫的时候要排除一些可能中断会话的链接或者其他需要进行大量提交信息的链接,从而进行手动爬取和自动化爬取的结合,才能更好地确定站点地图,确定其安全机制和应用的技术,从而实现脆弱点分析。
2.发现隐藏的内容:
隐藏内容通常包括以下几种:
A.不能可见的主要内容直接访问的内容,例如上线后未删除的调试或者测试功能等。
B.不同权限的用户可能看到的内容不一样,造成一些内容对低权限内容隐藏等。
C.尚未从服务器删除的旧版本文件等。
D.敏感日记文件等。
通常有以下几种方法来发现隐藏文件等。
A.暴力请求,通过暴力请求来破解隐藏文件名(brup intruder等)
注意:服务器并不是简单直接地返回200或者404来作为返回状态码,有可能返回302(重定向),400(出现坏请求),401(未认证),403(无权访问),500(服务器希望请求中带有某些参数)等。
渗透测试建议:通过我们的用户结合的抓取,先生成站点地图,再由用户进行有效或者无效资源的访问,确定服务器的反应,然后进行brup intruder来定制无效的反应界面来进行忽略这些结果,从而提高隐藏资源发现的精确度。
B:通过公布的内容进行猜测,主要原理是研究已公开资源的命名习惯,从而对隐藏资源名字进行猜测,从而可能发现隐藏资源。
C:利用公共信息,主要是利用搜索引擎或者web档案(如webback machine等存储大量网站的历史镜像)等发现信息。
渗透测试技巧:一些简单的搜索技巧要学会,例如利用谷歌搜索站点资源可site:www.gzhu.edu.cn
site:www.gzhu.edu.cn login可搜索登录界面。link:~可返回相关的链接,related:~可返回相似界面,例如我搜索出广工,华工等界面。
D:利用web服务器,服务器上可能带有许多黑客感兴趣的信息,如旧版本资源等,可帮助渗透过程。
3.应用程序页面和功能路径
有些功能页面是根据客户端给出的参数不同而实现不同的功能点而不是简单地改变url,因此我们可以进行一个参数的枚举来进行站点地图的绘制。
4.发现隐藏的参数,有一些页面可能根据隐藏参数来改变其逻辑,因此需要进行测试是否存在隐藏参数,例如在url中加入debug=true可能可以改变其功能逻辑,关于这一点可进行暴力枚举。
2.分析应用程序:分析应用程序的功能,行为和艺术,才能保证应用程序的暴露面和可能的受攻击点,并从中探查可能应用的漏洞。
A;简单列举一下可以分析的地方:应用程序的核心功能、其他外围的信息,如站外链接等、核心安全机制及其验证机制、应用程序处理输入的不同位置,服务端和客户端应用的技术和组件等。
B:确定用户输入的进入点:
包括url中的参数,post中的参数,cookie,以及极少情况下由应用程序处理的http头部等信息
C:http指纹识别,这一步主要是应用一些简单的信息判断或者直接用软件进行判断等.
D:利用文件拓展名来进行判断应用程序使用的平台或者编程语言等。
有时候我们可以尝试键入一些不存在的资源名称,通过错误信息来判断服务器等,原理是不同的服务器软件默认的错误信息返回界面不一样。
E:一些子目录信息也可以暴露其平台等信息,以下这一些要熟悉。
F:会话令牌也可以暴露信息
H:如果其使用了第三方服务组件,可以判断其使用的版本,从而进行版本漏洞利用等。
拿研招网做一次实验来收集信息,如下:
可看到url中有参数,应该是选择是否进行加密的参数,cookie部分用的是jsessionid,可判断平台应该是java平台,从cookie中含有aliyun可看出应该是把服务器放在阿里运上面的,
可看出server写的是nginx,但是不一定是所谓的真的,有可能进行假冒。
真正的web server可能需要去进行nmap扫描或者其他软件也行
然后隐藏资源需要先生成sitemap,接着进行所谓的目录暴力遍历或者从现有文件推测命名习惯,然后确定其无效资源的反应方式,生成专门的字典,从而进行所谓的有针对的暴破尝试推出其隐藏资源。
确定好他的相关组件以后也可以进行所谓的版本漏洞查找,如果是低版本的话,可找相应的漏洞。
3.确定服务端功能
A:仔细分析请求,可观察url中的一些参数,例如文件后缀名带jsp,那是java开发的平台,参数有orderby,那可能有所谓的注入漏洞,包头部的一些信息同样值得去注意。
4.总结:
该部分给我感觉就是做一个初步的信息收集,这一章的信息收集主要分为三方面
1.站点地图绘制,主要是采用大部分自动化,少部分手动自动结合的方式。
1补:绘制站点地图不能只是做可见资源的,隐藏资源也应该做一个分析,具体方法如上所示了。
2.系统应用功能分析,主要是分析其组件,安全机制,功能点,该部分收集信息主要从url,post参数,包头来分析其服务器啊,参数啊,cookie生成机制等各方面信息,还可以依据经验来进行初步尝试等。
3.服务端功能分析,观察各方面确定其组件信息等