整理并总结了《黑客攻防技术宝典 web实战篇》第一章的知识,不得不说这是一本越读越有味道的书,看似啰嗦的语言,仔细读来却不得不佩服作者和译者用词的准确性,严谨性。
枚举(简单的爬虫枚举)
1、手动浏览,并且点击(登录、简单漏洞、查网站指纹,脚本类型,不能爬的url、自定义404)
2、爬虫抓取手动浏览未发现的url(注意避免危险url或导致中断会话的url)(自定义404)
3、手动请求有效和无效资源,并确定程序处理无效资源的方式
4、通过爬虫生成的站点地图找隐藏内容(能提交数据的地方,伪静态)
暴力猜解(结合已知路径建立针对性字典进行枚举)
5、通过burp等对常见目录字典进行遍历,结合已知路径进行遍历,并且根据应用程序的错误处理方式探测正确的url
6、收集各个字典的响应,并判断服务器存在哪些资源
7、递归步骤五
通过已知内容推测(探测备份文件,注释里的等内容)
8、将已知url中的路径,词汇,后缀名列出
9、确定开发者的命名习惯(冗长,简洁,缩写,模糊)
10、寻找以时间日期命名的url,并推测
11、查看所有客户端代码(html,js,java applet,activex,flash),重点注意其中的注释内容
12、探索已知的资源的备份(加.txt、bak、.src、.inc、.old、.git),临时文件(.DS_Store、~1、.tmp
)和编译前的源文件(.java、.cs)【探测时可以根据之前的探测结果进行精确探测】
13、结合推测内容和后缀名进行递归探测
14、如果确定了命名方案,则针对命名方案进行更精确的暴力探测
15、递归以上所有步骤(根据实际服务器条件,时间限制,代理池大小进行合理的取舍)
搜索引擎黑客的正确姿势(从搜索引擎寻找攻击信息)
16、使用几种不同的搜索引擎(包括zoomeye之类的)
17、高级搜索(site:本站 link:别的网站link中包含本站的 related:与本站相似的页面【可能包含大量无关内容】)
18、搜索,新 闻,群组,贴吧等非默认的搜素页面
19、使用谷歌时,浏览到最后页面,选择将省略结果纳入搜索范围重新搜索,以获取被浏览器默认省略的“非常相似”的页面
20、查看网页快照,获取一些已经无法访问的页面,注意其中的开发语言,程序功能,cms等信息
21、在属于相同组织的其他域名查询
22、列出目标程序开发者,管理员的id及联系方式,通过搜索引擎搜索
url字典扫描器的正确使用(枚举未暴露给正常用户的路径)
23、nikto,wikto,御剑
24、为扫描器指定非标准目录(nikto-root /xxx/)
25、指定自定义404页面(-404)
26、nikto在扫描页面时,使用ip代替域名的情况下,nikto会认为使用域名的为不同的域,为了防止托管程序(1.1.1.1 www.test.org/a.asp)
27、对于限制访问频率的加代理池
28、必要时建立test账号,分析网络通信(<a>),模拟浏览器访问只有登录用户才能访问的内容(有篡改数据风险)
枚举应用程序功能性路径(枚举路径中把功能作为参数的情况)
29、确定url参数中提交的功能名称 /admin.jsp?action(功能)=login
30、判断url中的内容-访问机制,寻找url中的servlet和方法名称,访问不存在的servlet(小服务程序)和方法名寻找响应特点,首先枚举servlet,然后枚举servlet中的方法名
31、给出一张基于功能路径的map,说明其中的逻辑和依赖关系
发现隐藏参数(发现正常请求中未暴露出来的功能)
32、使用常用调试参数名称(调试,测试,隐藏,来源)和常用值(真,是,开通,1等)列表,向一个已知应用程序页面和功能提出大量请求,对于post请求,要从url和请求主体两处提交,可以在适当的时候考虑http头和cookie等处
33、监控收到的所有响应,确定参数增加给返回值造成的影响
34、根据时间考虑,从不同页面查找隐藏参数,时间不足的话选择调试等功能最有可能出现的地方,如登录,搜索,文件上传和下载
分析应用程序(入口,服务端技术)
35、确定用户所有输入点,包括url,查询字符串参数,post数据,cookie,http头
36、分析应用程序使用的查询字符串格式,了解名:值参数是怎样封装到非标准url中的
37、确定应用程序处理过程中引入的用户可控的带外通道
38、注意服务器旗标(http头中的server),对于多组件的情况下,不同组件可能存在不同服务器上,请求返回的旗标也会不同
39、检查http头和html源代码注释中包含的其他软件标识符
40、利用httprecon(并非利用旗标作为判断依据的)工具识别web服务器
41、获取web服务器和组件的详细版本后去寻找可供利用的漏洞
42、分析url列表,确定看似重要的后缀名,目录(servlet:javaservlet、pls:oracle application server pl/sql网关、cfdocs/dfide:cold fusion、silverstreame:sliverstream web服务器、webobjects/{function}.woa:apple web objects、rails:ruby on rails)或其他提供服务器使用的技术的有关线索内容
43、分析应用程序发布的全部会话令牌的名称(jsessionid:java、aspsessionid:iis、asp.net_sessionid:miscrosoft asp.net、cfid/cftoken:cold fusion、phpsessid:php),确定其使用的技术
44、使用常用技术列表或谷歌推测服务器所使用的技术、或者查找其他明显使用相同技术的web站点和应用程序
45、在谷歌搜索可能属于第三方软件组件的任何不常见的cookie、脚本、http消息头名称、如发现使用相同组件的应用程序对其进行分析、确定该组件支持的其他任何功能参数,并且确定目标程序是否支持这些功能参数、针对品牌定制,这些网站的外观可能大不相同,但其核心功能(包括脚本和参数名称)往往不会变化,如有可能,下载这些组件,熟悉并寻找分析其漏洞
推测应用程序的行为(行为关系)
46、应用程序可能采用相同的数据处理方式,或者调用同一模块对数据进行处理、所以确定应用程序中任何包括与其它区域内部结构与功能相关的线索的位置(发掘过滤方式(将用户输入回显的地方),发掘模糊处理方案(编解码,利用别的功能对cookie尝试解码))
47、不同的功能模块对于错误的处理可能不同,关注有debug错误回显的地方
寻找与众不同的功能(后来扩展的功能)
48、记录标准gui、参数名、导航机制与程序中其他功能不同的任何功能
49、记录可能在后续添加的功能(调试功能、captcha控件、使用情况跟踪和第三方代码)
50、对这些区域进行检查,可能突破应用程序的标准防御功能
解析受攻击面
51、攻击面【客户端确认服务端未再次检查、数据库交互、文件上传下载(路径遍历、存储型xss、代码执行)、回显输入(反射xss)、动态重定向(重定向与消息头注入)、社交(用户名枚举、存储型xss)、登录(用户名枚举、弱密码、蛮力)、多阶段登录(登录逻辑缺陷)、会话状态(可推测的令牌、令牌处理不安全)、访问控制(水平、垂直权限提升)、用户伪装功能(权限提升)、明文通信(会话劫持、证书及其他敏感信息泄露)、站外链接(referer消息头中查询字符串参数泄露)、外部系统接口(处理会话或访问控制的快捷方式)、错误消息(信息泄露)、密码找回(用户遍历、逻辑错误、注册规则探测)】
52、了解应用程序执行的核心功能和使用的主要安全机制
53、确定通常与常见漏洞有关的应用程序功能和行为的特点
54、在公共漏洞数据库(如www.osvdb.org)中检查任何第三方代码、以确定任何已知的问题
55、制定攻击计划、有限考虑最可能包含漏洞的行为、以及最严重的漏洞、