目录
*开放式 Web 应用程序安全项目(Open Web Aplication Security Project ,OWASP)
一、渗透测试方法论
渗透测试 是实施安全评估(即审计)的具体手段
方法论 是制定、实施信息安全审计方案时,需要遵循的规则、惯例和过程
人们在评估网络、应用、系统或者三者组合的安全状况时,不断摸索各种务实的理念和成熟的做法,并总结了一套理论,即渗透测试方法论
渗透测试种类
*黑盒测试
在进行黑盒测试时,安全审计员在不清楚被测单位的内部技术构造的情况下,从外部评估网络基础设施的安全性。
在绳渗透测试的各个阶段,黑盒测试借助真实世界的黑客技术,暴露出目标的安全问题,甚至可以揭露尚未被他人利用的安全弱点。
渗透测试人员应能理解安全弱点,将之分类并按照风险等级(高危、中危、低危、信息泄露)对其排序。通常来说,风险级别取决于相关弱点可能形成危害的大小。老练的渗透测试专家应能够确定可引发安全事故的所有攻击模式。
当测试人员完成黑盒测试的所有测试工作之后,他们会把与测试对象安全状况有关的必要信息进行整理,并使用业务的语言描述这些被识别出来的风险,继而将之汇总为书面报告。黑盒测试的市场报价通常高于白盒测试。
*白盒测试
白盒测试的审计员可以获取被测单位的各种内部资料甚至不公开的资料,所以渗透测试人员的视野更为开阔。
若以白盒测试的方法评估安全漏洞,测试人员可以以最小的工作量达到最高的评估精确度。
白盒测试从被测系统环境自身出发,全面消除内部安全问题。从而增加了从单位外部渗透系统的难度。黑盒测试起不到这样的作用。白盒测试所需要的步骤数目与黑盒测试不相上下。
另外,若能够将白盒测试与常规的研发生命周期相结合,就可以在入侵者发现甚至利用安全弱点之前,尽可能最早地消除全部安全隐患,这使得白盒测试的事件、成本,以及发现、解决安全弱点的技术门槛都全面低于黑盒测试。
*脆弱性评估与渗透测试
脆弱性评估通过分析企业资产面临安全威胁的情况和程度,评估内部和外部的安全控制的安全性。
这种技术上的信息系统评估,不仅揭露现有防范措施里存在的风险,而且要提出多重备选的补救策略,并将这些策略进行比较。
内部脆弱性评估可保证内部系统的安全性,而外部的脆弱性评估则是验证边界防护(perimeter defenses)的有效性。
无论内部脆弱性评估还是进行外部脆弱性评估,评估人员都会采用各种攻击模式来严格测试网络资产的安全性,从而验证信息系统处理安全威胁的能力,进而确定应对措施的有效性。
不同类别的脆弱性评估需要的测试流程、测试工具和自动化测试技术也不相同。这可通过一体化的安全弱点管控(vulnerability management)平台来实现。
现在的安全弱点管理平台带有可自动更新的漏洞数据库,能够测试不同类型的网络设备,而且不会影响配置管理和变更管理的完整性。
脆弱性评估和渗透测试两者最大的区别就是:渗透测试不仅要识别目标的弱点,它还设计在目标系统上进行漏洞利用、权限提升和访问维护。
换句话说,脆弱性评估虽然可以充分发现系统里的缺陷,但不会考虑去衡量这些缺陷对系统造成的危害。
另外,相比脆弱性评估,渗透测试更倾向于入侵,会刻意使用各种技术手段利用安全漏洞;所以渗透测试可能对生产环境带来实际的破坏性影响。而脆弱性评估以非入侵的方式,定性、定量得识别已知安全弱点。
二、安全测试方法论
科学的方法认识安全弱点
*开放式 Web 应用程序安全项目(Open Web Aplication Security Project ,OWASP)
-
测试指南
-
开发人员指南
-
代码审查指南(OWASP Top 10 2017十大最严重的Web应用程序安全风险)
OWASP top 10
Web十大安全漏洞
十大Web应用程序安全风险
1、注射剂。
当将不受信任的数据作为命令或查询的一部分发送到解释器时,会出现诸如SQL,NoSQL,OS和LDAP注入之类的注入漏洞。攻击者的敌对数据可能会诱使解释器执行未经预期的命令或未经适当授权而访问数据。
2、身份验证失败。
与身份验证和会话管理相关的应用程序功能通常会错误地实现,从而使攻击者可以破坏密码,密钥或会话令牌,或者利用其他实现缺陷来临时或永久地假定其他用户的身份。
3、敏感数据暴露。
许多Web应用程序和API无法正确保护敏感数据,例如金融,医疗保健和PII。攻击者可能会窃取或修改这些受保护程度不高的数据,以进行信用卡欺诈,身份盗用或其他犯罪。敏感数据可能会在没有额外保护的情况下受到损害,例如静态加密或传输中加密,并且与浏览器进行交换时需要采取特殊的预防措施。
4、XML外部实体(XXE)。
许多较旧的或配置不当的XML处理器都会评估XML文档中的外部实体引用。外部实体可以使用文件URI处理程序,内部文件共享,内部端口扫描,远程代码执行和拒绝服务攻击来公开内部文件。
5、访问控制损坏。
通常,对身份验证用户允许执行的操作的限制通常未得到正确执行。攻击者可以利用这些缺陷来访问未经授权的功能和/或数据,例如访问其他用户的帐户,查看敏感文件,修改其他用户的数据,更改访问权限等。
6、安全配置错误。
安全配置错误是最常见的问题。这通常是由于不安全的默认配置,不完整或临时的配置,开放的云存储,错误配置的HTTP标头以及包含敏感信息的详细错误消息所导致的。不仅必须安全地配置所有操作系统,框架,库和应用程序,而且还必须及时对其进行修补/升级。
7、跨站点脚本XSS。
每当应用程序在未经适当验证或转义的情况下在新网页中包含不受信任的数据,或者使用可以创建HTML或JavaScript的浏览器API用用户提供的数据更新现有网页时,都会发生XSS漏洞。XSS允许攻击者在受害者的浏览器中执行脚本,这些脚本可以劫持用户会话,破坏网站或将用户重定向到恶意网站。
8、不安全的反序列化。
不安全的反序列化通常会导致远程执行代码。即使反序列化缺陷不会导致远程执行代码,也可以将它们用于执行攻击,包括重播攻击,注入攻击和特权升级攻击。
9、使用已知漏洞的组件。
诸如库,框架和其他软件模块之类的组件以与应用程序相同的特权运行。如果利用了易受攻击的组件,则此类攻击可能会导致严重的数据丢失或服务器接管。使用具有已知漏洞的组件的应用程序和API可能破坏应用程序防御,并造成各种攻击和影响。
10、日志和监控不足。
日志和监视的不足,再加上事件响应的缺失或无效集成,使攻击者可以进一步攻击系统,保持持久性,转向更多系统以及篡改,提取或破坏数据。大多数违规研究表明,检测到违规的时间超过200天,通常由外部各方而不是内部流程或监视来检测。
*通用缺陷列表(CWE)
某一类安全漏洞所对应的编号
*通用漏洞与披露(CVE)
某一个安全漏洞所对应的编号
*其他方法论
开源安全测试方法论(OSSTMM)
信息系统安全评估框架 (ISSAF)
Web 应用安全联合威胁分类(WASC-TC)
四、Web架构安全分析
通用渗透测试框架
-
范围界定:确定测试对象、测试方法,需要满足的条件,需要多久完成测试,达到什么目标等等
-
信息搜集:渠道不限,如互联网各网站等,收集的信息主要包括DNS服务器、路由关系、whois、数据库、电子邮件地址、电话号码、个人信息以及用户账户
-
目标识别:识别目标的网络状态,操作系统、网络架构。局域网网络拓扑图等
-
服务枚举:主机开放的端口服务
-
漏洞映射:根据已经发现的开放端口和服务程序,查找、分
目标系统中存在的漏洞,漏洞扫描
-
社会工程学:网络没有直接的入口,则需要社工欺骗等相关手段
-
漏洞利用:审计员可以把客户端漏洞利用程序和社会工程学结合,进而控制目标系统,此阶段分为攻击前、攻击、攻击后的相关行动
-
权限提升:提权,从普通用户提权到管理员用户
-
文档报告:审计人员记录、报告、验证已经识别的漏洞,并给出修复方案
简化的渗透测试流程
①明确目标
确定范围|确定规则|确定需求
②信息收集
基础信息|系统信息|应用信息|人员信息|防护信息
③漏洞探测
系统漏洞|Web服务漏洞|Web应用漏洞|其他端口|通信安全
④漏洞验证
手工验证|工具验证|实验验证
⑤漏洞利用
定制EXP|防御绕过|进一步渗透|清理痕迹
⑥形成报告
整理结果|补充介绍|修复建议
黑客攻击的一般过程
Web架构简单学习
浏览器访问服务器过程简单分析
打开浏览器,输入要访问的URL网址----》解析先找本地缓存---》本地缓存没有 找host文件----》找DNS服务器----》IP、ARP确定MAC地址----》找到网关---》路由---》到达服务器主机---》访问80、443---》3次握手---》建立连接----》HTTP 数据包到达----》HTTP响应包返回
HTTP响应文件
-
如果请求的为.html静态网页文件,找到回复.html文件
-
如果发现请求的为.php文件,且和mysql数据库相连,则操作数据库,返回php运行结果
Web容器、中间件服务器
Web容器
也叫Web服务器,主要提供Web服务,也就是常说的HTTP服务
常见的Web容器有:Apache、IIS、Nginx等
中间件服务器
以上这种 ,只能单向的给用户展示信息,随着Web的发展,信息需要双向流动,产生了交互的需求,也就是动态网页的概念
所谓的动态网页概念利用flash、php、asp、Java等技术在网页中嵌入一些可运行的脚本,用户浏览器在解释也面时,遇到脚本就启动运行它
脚本的使用让Web服务模式可以像传统软件一样进行各种事务处理,如编辑文件、利息计算、提交表单等
这些脚本可以嵌入在页面中,如JS,也可以以文件的形式单独放在Web服务器目录里,如.asp、.php、jsp文件等
这些功能性的脚本越来越多,形成常用的工具包,单独管理,Web业务开发时,直接使用,这就是中间件服务器,它实际上是Web服务处理能力的扩展
数据库的出现
HTTP协议概述
HyperText Transfer Protocol 超文本传输协议,是浏览器与Web服务器之间的通信协议,是传递消息的规范和要求
属于5层协议
概述
-
1990年提出的,当前版本1.1
-
HTTP是用来将html文档从Web服务器传输到Web浏览器,是一个请求的响应的协议
-
HTTP 使用可靠的TCP连接,默认端口是80
特点
URL
统一资源定位符(网址)
此处密码省略,为了广大用户匿名访问
锚点:实现页面定位
URL编码
请求报文Request
HTTP 请求由请求行、请求头、请求正文三个部分组成
1.请求行:方法,资源路径,协议、版本 方法:GET 资源路径:/xxx/xxx.html 版本协议:HTTP/1.1
2.请求头: 从请求报文的第二行开始到第一个空行为止之间的内容,其中包含得多字段。
Host:主要用于指定被请求资源的Internet主机和端口号 User-Agent:可以理解为浏览器指纹 Referer:包含一个URL,此请求由那个之前URL跳转来的 Cookie:访问用户的身份信息,身份证 Accept-Charset:字符集 Content-Type:用于向接受方指示实体的介质类型 Content-Length:用于指明实体正文的长度,字节存储的十进制数字来表示 Last-Modified:用于指示资源的最后修改时间和日期
3.请求正文: 后面会学习
请求方法
POST包
响应报文Response
响应报文由 状态行、响应头、响应正文三部分组成
1.状态行:协议、版本,状态代码、描述短语 协议、版本:HTTP/1.1 状态描述:200
描述短语:OK
2.响应头 从请求报文的第二行开始到第一个空行为止之间的内容,其中包很多关于HTTP响应的重要字段。
3.响应正文 服务器返回资源的内容,即浏览器接收到的HTML 代码
五、信息收集
信息收集
实验资料-测试网站
-
testfile.net
-
vulnweb.com
DNS信息
域名解析查询信息
-
kali whois 查询
-
站长之家查询
-
反查
-
子域名查询
-
域传送漏洞
kali系统下查询公开信息
whois testfire.net
站长之家查询:域名Whois查询 - 站长之家
域传送漏洞
任何客户端发送请求,都会同步数据库给它
通过域传送漏洞可以得到 子域名信息、子域名对应的IP地址
子域名爆破
工具:子域名挖掘机
字典
结果
kali下的子域名爆破工具dnsrecon
通过DNS解析找到IP地址
ping 命令
非权威解答
ping testfire.net
65.61.137.117
ping baidu.com
39.156.69.79
ping [www.baidu.com](http://www.baidu.com/)
39.156.66.18
ping testfire.net
nslookup命令
nslookup
testfire.net
dig工具
dig +trace testfire.net
查看详细解析过程
dig @8.8.8.8 testfire.net
@指定一个服务器解析
dnsenum工具
站长之家
CDN加速问题
内容分发网络
本意是进行节点缓存,使网站的访问速度加快。一般情况下是没办法得到目标网站的真实IP
参考资料如下:
查询
IP 查询
同IP 网站查询
同一个IP 上的网站
1.1.1.1
A B
旁站(同一个服务器上的两个网站)
1.1.1.* C 段查询
IP whois 查询
IP2Location
65.61.137.117
查询IP 地址经纬度
https://www.maxmind.com/zh/home
得到IP地址的大致经纬度(40.9476, -73.8624)
通过GPS 查询物理位置
http://www.gpsspg.com/maps.htm
搜索引擎搜集信息
Google hacking
Google 机器人,爬行全世界所有网站的内容。Google hacker 就是利用搜索引擎语法,获取有关网站的信息。
site 指定网站
"" 包含关键字
inurl 在url 中出现的关键字
filetype
探索网站目录结构
"parent directory" site:testfire.net
site
—>指定网站
" "
—>包含关键字
网站没有设置主页,就会把所有的内容列出来
安全性薄弱
搜索容易存在sql 注入的页面
site:testfire.net inurl:login
搜索指定的文件类型
filetype pdf
搜索phpinfo()
intext:"PHP Version" exit:php
intest:"disabled" intext:"BuildDate"
intext:"Syatem" intext:"allow_url_fopen"
搜索phpstudy
搜索php 探针
intitle:"php中文网 探针2014"
钟馗之眼
ZoomEye - Cyberspace Search Engine
ZoomEye 支持公网设备指纹检索和Web 指纹检索。网站指纹包括应用名、版本、前端框架、后端框架、服务端语言、服务器操作系统、网站容器、内容管理系统和数据等。
搜索iis6.0 组件
app:"Microsoft IIS httpd" ver:"6.0"
搜索开启3389 端口的windows 主机
port:3389 OS:windows
shodan
网站信息收集
收集指纹信息
Web 服务器信息
火狐插件
Netcraft Extension
Wappalyzer