渗透测试
1. 定义:是实施安全评估(即审计)的具体手段。
2.方法论
是制定、实施信心安全审计方案时,需要遵循的规则、惯例和过程。
目前没有官方组织规定渗透测试的流程
3.渗透测试种类
*网络基础设施:网络、应用、系统和三者中的任意组合
(1)黑盒测试:在进行黑盒测试时,安全审计员在不清楚被测单位的内部技术构造的情况下,从外部评估网络基础设施的安全性。在渗透测试的各个阶段,黑盒测试借助真实世界的黑客技术,暴露出目标的安全问题,甚至可以揭露尚未被他人利用的安全弱点。
*安全风险等级排序:高危、中危、低危和信息泄露。
(2)白盒测试:
4.脆弱性评估与渗透测试
(1) 脆弱性评估:脆弱性评估通过分析企业资产面临安全威胁的情况和程度,评估内部和外部的安全控制的安全性。这种技上的信息系统评估,不仅揭露现有防范措施里存在的风险,而且要提出多重备选的补救策略,并将这些策略进行比较。内部的脆弱性评估可以保证内部系统的安全性,而外部的脆弱性评估则是验证边界防护的有效性。无论进行内部还是外部脆弱性评估,评估人员都会采用各种攻击模式还严格测试网络资产的安全性,从而验证信息系统处理安全威胁的能力,进而确定应对措施的有效性。
不同类型的脆弱性评估需要的测试流程、测试工具和自动化测试技术也不相同,这可以通过一体化平台来实现。现在的安全若点管理平台带有可自动更新的漏洞数据库,能够测试不同类型的网络设备,而且不会影响配置管理和变更管理的完整性。
(2)脆弱性评估与渗透测试的区别
安全测试方法论
1. 开放式web应用程序安全项目(OWASP)
官网:https://www.owasp.org.cn/
(1)测试指南
(2)开发人员指南
(3)代码审查指南
owasp top10(中文版),熟记
其中,a7,a8在Java中使用的较多
2.通用缺陷列表(Commen Weakness Enumeration,CWE)
CWE-79:XSS漏洞
CWE-89:SQL注入
3.通用漏洞与披露(Common Vulnerabilities and Exposures,CVE)
CVE2019-0708:远程桌面
CWE:某一类漏洞编号
CVE:某一个漏洞编号
MS17-010:微软发布的第十个安全公告
S2-053(struts2):apache开源开发java的框架,S2
*一般一个安全公告就是一个漏洞,但是MS17-010对应多个漏洞
*通过打补丁来修补漏洞 ,微软的补丁以KB开头
4.其他方法论
(1)开源安全测试方法论(OSSTMM)
(2)信息系统安全评估框架(ISSAF)
(3)web应用安全联合威胁分类(WASC-TC)
OpenVAS的安装(开放漏洞评估扫描仪)
OpenVAS是开源的望楼漏洞扫描器。自从Nessus收费之后分支出来的项目
官网 http://www.openvas.org
web端管理接口,4.9之后支持中文
三种类型:livedemo,virtual appliance,source edition
virtual appliance一个虚拟机
安装时需要用到虚拟机[gsm-ce=5.0.10.iso]
新建虚拟机(附下图:虚拟机要求)
除了virtualbox,也可以用VMware安装
继续后,打开自定义设置,设置完成后启动虚拟机
选择第一个
设置用户名和密码
完成后重启,重启前的“是否弹出CD”,选择yes
重启后进入到登陆界面,输入账号密码
选择yes
选择yes,创建web用户,一直往后走
渗透测试流程
1.渗透测试执行标准(PTES):这个标准有渗透测试7个阶段的标准组成,可以再任意环境中进行富有成果的渗透测试
(1) 官网左上角PTES technical guideline(技术指南):包括我们做某件事需要用到的环境和工具
(2)PTES主要特性和优势
*它是非常全面的渗透测试框架,涵盖了渗透测试的技术方面和其他重要方面,如范围蔓延(scope creep)、报告,以及渗透测试人员保护自身的方法。
*它介绍了多数测试任务的具体方法,可指导我们准确测试目标系统的安全状态。
*它汇聚了多名日行一“渗”的渗透测试专家的丰富经验。
*它包含了最常用以及很罕见的相关技术。
*浅显易懂。
2.通用测试框架
相关阶段:
(1)范围界定
需要考虑的因素
*测试对象是什么?
*应当采取哪种测试方法?
*有哪些在测试过程中需要满足的条件?
*哪些因素可能会限制测试执行的过程?
*完成测试所需的时间?
*本次测试应达成什么样的任务目标?
(2)信息搜集
在本阶段,渗透人员需要使用各种公开资源尽可能地获取测试目标地相关信息。
互联网上搜集信息地渠道主要有:
收集的信息越多,渗透测试成功的概率越高。
(3)目标识别
本阶段的主要任务是识别目标的网络状态、操作系统和网络架构。该阶段工作旨在完整地展现目标网络里各种联网设备或技术的完整关系,以帮助测试人员在接下来的工作中枚举目标网络的各种服务。(即知道目标网络里的联网设备以及这些设备如何进行通信)
(4)服务枚举
会根据前面各个阶段的成果,进一步找出目标系统中所有开放的端口。一旦找到了所有开放的端口,就可以通过这些端口来列出目标系统上运行的服务。主机上开放的端口都有相应的服务程序,对这些信息进行深度分析之后,可进一步发掘目标网络基础设施中可能存在的漏洞。
(5)漏洞映射(即漏洞扫描)
目的:查找已知和未知的漏洞
(6)社会工程学
(7)漏洞利用:是在发现漏洞后进行深度利用。这个流程可以分为三步:攻击前、攻击、攻击后的相关行动。
(8)权限提升:获取目标系统的控制权。
(9)访问维护:即埋藏后门。
(10)文档报告
无论是进行黑盒还是白盒测试,选择和使用测试步骤都是测试人员的责任。在测试开始前,测试人员需要根据目标系统的实际环境和已掌握的相关目标系统的情况,在指定最佳的测试策略。
3.简化渗透测试流程
(1)明确目标 确定范围 | 确定规则 | 确定需求
(2)信息收集 基础信息 | 系统信息 | 应用信息 | 人员信息 |防护信息
(3)漏洞探测 系统漏洞 | web服务漏洞 | web应用漏洞 | 其他端口 | 通信安全
(4)漏洞验证 手工验证 | 工具验证 | 实验验证
(5)漏洞利用 定制EXP(完整的漏洞利用程序) | 防御绕过 | 进一步渗透 | 清理痕迹
(6)形成报告 整理结果 | 补充介绍 | 修复建议
4.黑客攻击的一般过程
5.渗透测试指南
需要我们在实践中不断总结,形成自己的渗透测试指南
web架构安全分析
1.web工作机制
输入网址,先查找本地缓存,没有再查找host文件,通过ARP协议得到对方MAC地址,找到网关获取DNS、IP地址,通过网关、路由,到达对方主机,访问80 443,三次握手,清理连接,发送http数据包,http响应(如访问.html文件,直接发过去;如访问.php,对php进行解析再发;如.php文件连接了数据库,访问数据库,php得到运行结果,返回到客户端 )
2.网页、网站
我们可以通过浏览器上网看到的精美画面一般都是经过浏览器渲染过的html页面,其中包含了css等前端技术。
多个网页的集合就是网站。
3.web容器
(1)web容器也叫web服务器,主要提供web服务,也就是常说的http服务。
(2)常见的web容器有:Apache / IIS / Nginx等。
Apache(自带)支持.php
IIS(自带)支持.net。能支持.php
Nginx支持.php。且Nginx作为web容器有反向代理功能
Nginx被用到较多的地方:负载运航( Nginx性能高)
反代的目的:
4.静态网页
静态的网页都是一些.html文件,是纯文本文件。这些文件中包含html代码。
HTML(hypertext markup language,超文本标记语言),在浏览器中解释运行。
5.中间件服务器
weblogic(原本是Java的一个中间件,既能作为web容器,又能作为中间件,还能做负载运航)
Jboss(Java的中间件,也可以作为web容器)
6.数据库的出现
7.http协议概述
(1)http(hypertext transfer protocol,超文本传输协议)是浏览器与web服务器之间的通信协议,是传递消息的规范和要求。
(2)概述
*1990年提出,当前版本1.1
*http是用来将html文档从web服务器传输到web浏览器
*是一个请求与相应的协议。客户端发出请求,服务器端对请求给出回应。
*http使用可靠的TCP连接,默认端口80。
(3)特点
*支持浏览器/服务器模式
*简单快速:浏览器向服务器突出请求时,只需要传送请求方法和请求路径(资源的名字、路径和方法)。
*灵活:http运行传输任意类型的数据对象
.html 纯文本
.jpg 图片
.mp3 音频
以数据流的方式传递数据
*http协议是无状态的协议。
浏览器不能断点续传
8.URL
(1)统一资源定位符(网址),用来告诉web容器,浏览器所请求资源(文件)的路径。
fragment 锚点 实现页面内定位
(2)URL编码
*在进行编程时,会用[+]代替空格。
*URL编码原理:%+ASCII十六进制形式
*URL编码时,一般不要用中文
9.HTTP报文分析
(1)web应用的所有通信的消息都要遵守http协议的规范和要求。
(2)http请求的组成部分:请求行、请求头、请求正文三个部分
*请求行:方法,资源路径,协议/版本
*请求头:从请求报文第二行开始到第一个空行为止之间的内容。其中包含很多字段。
*请求正文:
get 是最常用的方法,通常用于请求服务器发送的某个资源
二者的区别post可以想服务器提交参数以及表单,包括文件流等
head 与get方法类似,但在服务器响应中只返回首部
put 与get从服务器读取文档相反,put方法会向服务器写入文档
trace 回显浏览器的请求
options 请求web服务器告知其支持的各种功能
delete 请求服务器删除请求URL所指定的资源
如果我们的服务器开启了put,options,delete中的任意一个,我们就认为该服务器很危险
(3)主要字段
10.REPONSE(响应报文)
响应报文有状态行、响应头、响应正文三部分组成
(1)状态行:协议/版本,状态代码,描述短语
(2)响应报头:第二行开始到第一个空行为止的所有内容,其中包含了关于http响应的重要字段
(3) 响应正文:服务器返回资源的内容,即前段HTML代码
*状态代码
*主要字段
11.同源策略
(1)同源策略的条件
*URL的主机一致
*schema(即协议)一致
*端口号一致
信息收集
1.DNS信息
主要收集域名注册商,管理员联系方式,电话和邮箱,子域名等信息。
*whois查询
也可以通过站长之家进行whois查询
whois也可用于反查(邮箱,注册人,电话)
例如,邮箱反查:我们通过一个域名查到一个邮箱,我们可以通过反查知道这个邮箱曾注册过哪些域名
*子域名查询
// 可以查询子域名的网站[https://searchdns.netcraft.com/]
// 证书
2.域传送漏洞
(1)DNS区域传送
通过域传送漏洞可以得到子域名信息,子域名对应的IP地址
工具:dnsrecon
(2)DNS2IP:通过DNS解析找到IP地址
testfire.net
baidu.com
www.baidu.com
-ping(得到的是非权威解答)
-nslookup(非权威解答)
-dig dig +域名 (指定dns服务器)
dig +trace +域名 (获取域名的详细解析过程)
-dnsenum dnsenum +域名
该工具在解析域名的时候,会自动检测域传送漏洞
-站长工具
-CDN加速的问题
CDN是内容分发网络,本意是进行节点缓存,使网站访问速度加快
3.IP查询
推荐工具:站长之家
(1)同IP网站查询:同一个IP上的网站
同一服务器上的两个网站叫做旁站
(2)IP2location
查询IP地址经纬度
https://www.maxmind.com/zh/home
通过GPS查询物理位置
http://www.gpsspg.com/maps.htm
4.利用搜索引擎搜集信息
(1)google hacking
*site 指定网站
*" " 包含关键字
*inurl 在URL中出现的关键字
*filetype 指定文件类型 不太好用
*探索网站目录结构
"parent directory" site:testfire.net 搜索某网站的某关键字
*搜索容易存在sql注入的页面
*搜索指定的文件类型
*搜索phpinfo()
*搜索phpstudy
(2)钟馗之眼:支持公网设备指纹搜索和web指纹检索。
https://www.zoomeye.org/help
*搜索IIS6.0组件
*搜索开启3389端口的Windows主机
5.web网站信息搜集
收集指纹信息
web服务器信息(netcraft)