渗透测试方法论
渗透测试 是实施安全评估(即审计)的具体手段
方法论 是制定、实施信息安全审计方案时,需要遵循的规则、惯例和过程
人们在评估网络、应用、系统或者三者组合的安全状况时,不断摸索各种务实的理念和成熟的做法,并总结了一套理论,即渗透测试方法论
种类
•黑盒测试
•白盒测试
•脆弱性评估与渗透测试
安全测试方法论
科学的方法认识安全弱点
开放式 Web 应用程序安全项目(www.owasp.org.cn),GitHub上也有
-
测试指南
-
开发人员指南
-
代码审查指南(OWASP Top 10 2017十大最严重的Web应用程序安全风险)
十大应用安全风险
A1:2017-注入
将不受信任的数据作为命令或查询的一部分发送到解析器时,会产生诸如SQL注入、NoSQL注入、OS 注入和LDAP注入的注入缺陷。攻击者的恶意数据可以诱使解析器在没有适当授权的情况下执行非预 期命令或访问数据。
A2:2017-失效的身份认证
通常,通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或会话令牌, 或者利用其它开发缺陷来暂时性或永久性冒充其他用户的身份。像ARP、DNS欺骗等
A3:2017-敏感数据 泄露
许多Web应用程序和API都无法正确保护敏感数据,例如:财务数据、医疗数据和PII数据。攻击者可 以通过窃取或修改未加密的数据来实施信用卡诈骗、身份盗窃或其他犯罪行为。未加密的敏感数据 容易受到破坏,因此,我们需要对敏感数据加密,这些数据包括:传输过程中的数据、存储的数据 以及浏览器的交互数据。后台数据库泄露、源码泄露。
A4:2017-XML 外部 实体(XXE)
许多较早的或配置错误的XML处理器评估了XML文件中的外部实体引用。攻击者可以利用外部实体窃 取使用URI文件处理器的内部文件和共享文件、监听内部扫描端口、执行远程代码和实施拒绝服务攻 击。外部写入XML文件,XML标签支持自定义漏洞
A5:2017-失效的访 问控制
未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数 据,例如:访问其他用户的帐户、查看敏感文件、修改其他用户的数据、更改访问权限等。限制失效,权限过大
A6:2017-安全配置 错误
安全配置错误是最常见的安全问题,这通常是由于不安全的默认配置、不完整的临时配置、开源云 存储、错误的 HTTP 标头配置以及包含敏感信息的详细错误信息所造成的。因此,我们不仅需要对所 有的操作系统、框架、库和应用程序进行安全配置,而且必须及时修补和升级它们。弱口令就属于安全配置错误
A7:2017跨站脚本(XSS)
当应用程序的新网页中包含不受信任的、未经恰当验证或转义的数据时,或者使用可以创建 HTML或 JavaScript 的浏览器 API 更新现有的网页时,就会出现 XSS 缺陷。XSS 让攻击者能够在受害者的浏览器 中执行脚本,并劫持用户会话、破坏网站或将用户重定向到恶意站点。
A8:2017-不安全的 反序列化
不安全的反序列化会导致远程代码执行。即使反序列化缺陷不会导致远程代码执行,攻击者也可以 利用它们来执行攻击,包括:重播攻击、注入攻击和特权升级攻击。Java语言中较多
A9:2017-使用含有 已知漏洞的组件
组件(例如:库、框架和其他软件模块)拥有和应用程序相同的权限。如果应用程序中含有已知漏 洞的组件被攻击者利用,可能会造成严重的数据丢失或服务器接管。同时,使用含有已知漏洞的组 件的应用程序和API可能会破坏应用程序防御、造成各种攻击并产生严重影响。
A10:2017不足的日志记录和 监控
不足的日志记录和监控,以及事件响应缺失或无效的集成,使攻击者能够进一步攻击系统、保持持 续性或转向更多系统,以及篡改、提取或销毁数据。大多数缺陷研究显示,缺陷被检测出的时间超 过200天,且通常通过外部检测方检测,而不是通过内部流程或监控检测。
-
通用缺陷列表(CWE) 某一类安全漏洞所对应的编号
-
通用漏洞与披露(CVE) 某一个安全漏洞所对应的编号
-
其他方法论
OpenVAS的安装
OpenVAS 是开源的网络漏洞扫描器,自从Nessus 收费之后,分出来的项目
Livedemo:在线的测试网站 VirtualApplication:虚拟机ISO镜像 Source Edition
web安全架构分析
通用渗透测试框架
范围界定:确定测试对象、测试方法,需要满足的条件,需要多久完成测试,达到什么目标等等
信息搜集:渠道不限,如互联网各网站等,收集的信息主要包括DNS服务器、路由关系、whois、数据库、电子邮件地址、电话号码、个人信息以及用户账户
目标识别:识别目标的网络状态,操作系统、网络架构。局域网网络拓扑图等
服务枚举:主机开放的端口服务
漏洞映射:根据已经发现的开放端口和服务程序,查找、分析目标系统中存在的漏洞,漏洞扫描
社会工程学:网络没有直接的入口,则需要社工欺骗等相关手段
漏洞利用:审计员可以把客户端漏洞利用程序和社会工程学结合,进而控制目标系统,此阶段分为攻击前、攻击、攻击后的相关行动
权限提升:提权,从普通用户提权到管理员用户
文档报告:审计人员记录、报告、验证已经识别的漏洞,并给出修复方案
黑客攻击的一般过程
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
特点:
1.支持浏览器/服务器模式
2.简单快速:浏览器向服务器提出请求时,只需要传送请求方法和路径。
3.灵活:http运行传输任意类型的数据对象
•html 纯文本
•jpg 图片
•mp3 音频
4.http协议是无状态的协议
URL
统一资源定位符(网址),用来告诉Web 容器,浏览器所请求的资源(文件)的路径
port 80
Login 用户名
Password 密码
Fragment 锚点
URL 只允许出现的字符是有限制的,URL 中path 开始允许直接出现A-Z[0-9]
半角减号(-)、下划线句点(。)、波浪号(~)。其他字符均会被百分号编码(包括空格)
# | %23 | |
---|---|---|
[ ] | %20 |
报文分析工具
1、F12
2、wireshark
3、fiddler
4、Burp suite
请求报文Request
HTTP 请求由请求行、请求头、请求正文三个部分组成
-
请求行:方法,资源路径,协议、版本 方法:GET 资源路径:/xxx/xxx.html 版本协议:HTTP/1.1
-
请求头 从请求报文的第二行开始到第一个空行为止之间的内容,其中包含得多字段
Host:主要用于指定被请求资源的Internet主机和端口号 User-Agent:可以理解为浏览器指纹 Referer:包含一个URL,此请求由那个之前URL跳转来的 Cookie:访问用户的身份信息,身份证 Accept-Charset:字符集 Content-Type:用于向接受方指示实体的介质类型 Content-Length:用于指明实体正文的长度,字节存储的十进制数字来表示 Last-Modified:用于指示资源的最后修改时间和日期
3.请求正文
请求方法
响应报文Response
响应报文由 状态行、响应头、响应正文三部分组成
-
状态行:协议、版本,状态代码、描述短语 协议、版本:HTTP/1.1 状态描述:200
-
状态代码
-
100~199 信息性状态码
200~299 成功状态码
300~399 重定向状态码
400~499 客户端错误状态码
500~599 服务器错误状态码
2.响应头
从请求报文的第二行开始到第一个空行为止之间的内容,其中包很多关于HTTP响应的重要字段
Sever 服务器指纹
Set-Cookie 想浏览器端设置Cookie
Last-Modified 服务器通过这个头信息告诉浏览器,资源的最后修改时间
Content-Length 请求正文的长度
Location 重定向目标页面
Refresh 服务器通过Refresh头告诉浏览器定时i刷新浏览器
3.响应正文 服务器返回资源的内容,即浏览器接收到的HTML 代码
信息收集
信息收集
实验资料-测试网站
-
testfile.net
-
vulnweb.com
DNS信息
域名解析查询信息
-
kali whois 查询
-
站长之家查询
-
反查
-
域传送漏洞
在收集dns信息时,主要关注域名注册商,管理员联系方式,电话和邮箱,子域名等信息
whois 查询
whois 是一个集成在kali虚拟机上的小小工具
whois 工具可以用来查询域名注册信息,命令如下,途中仅截取到部分信息,也可以通过站长之家进行whois查询
除了使用whois查询外,还可以进行反查
•邮箱反查
•注册人反查
•电话反查
域传送漏洞
任何客户端发送请求,都会同步数据库给它
通过域传送漏洞可以得到子域名信息,子域名对应的IP地址
子域名爆破
工具:子域名挖掘机
字典
结果
kali下的子域名爆破工具dnsrecon
通过DNS解析扎找到IP地址
ping命令
nslookup命令
dig工具
dnsenum工具
CDN加速的问题
CDN是内容分发网络
本意是进行节点缓存,使网站的访问速度加快。一般情况下是没办法得到目标网站的真实IP