渗透测试(pentest)方法论是实施安全评估(即审计)的具体手段。
方法论是在制定,实施信息安全审计方案时,需要遵循的规则,惯例和过程。人们在评估网络,应用,系统或三者组合的安全状态时,不断摸索各种务实的理念和成熟的做法,并总结了一套理论——渗透测试方法论。
在进行黑盒测试时,安全审计员在不清楚被测单位的内部技术构造的情况下,从外部评估网络基础设施的安全性。在渗透测试的各个阶段,黑盒测试借助真实世界的黑客技术,暴露出目标的安全问题,甚至可以揭露尚未被他人利用的安全弱点。渗透测试人员应能理解安全弱点,将之分类并按照风险等级(高,中,低)对其排序。通常来说,风险级别取决于相关弱点可能形成危害的大小。老练的渗透测试专家应能够确定可引发安全事故的所有攻击模式。当测试人员完成黑盒测试的所有测试工作之后,他们会把与测试对象安全状况有关的必要信息进行整理,并使用业务的语言描述这些被识别出来的风险,继而将之汇总为书面报告。黑盒测试的市场报价通常会高于白盒测试。
白盒测试的审计员可以获取被测单位的各种内部资料甚至不公开资料,所以渗透测试人员的视野更开阔。若以白盒测试的方法评估安全漏洞,测试人员可以以最小的工作量达到最高的评估精准度。白盒测试所需要的步骤数目与黑盒测试不相上下。另外,若能将白盒测试与常规的研发声明周期相结合,就可以在入侵者发现甚至利用安全弱点之前,尽可能最早地消除全部安全隐患。这使得白盒测试的时间,成本,以及发现,解决安全弱点的技术门槛都全面低于黑盒测试。
脆弱性评估通过分析企业资产面临安全威胁的情况和程度,评估内部和外部的安全控制的安全性。这种技术上的信息系统评估,不仅揭露现有防范措施里存在的风险,而且要提出多重备选的补救策略,并将这些策略进行比较。内部的脆弱性评估可保证内部系统的安全性,而外部的脆弱性评估则是验证边界防护的有效性。无论进行内部脆弱性评估还是进行外部脆弱性评估,评估人员都会采用各种攻击模式来严格测试网络资产的安全性,从而验证信息系统处理安全威胁的能力,进而确定应对举措的有效性。不同类型的脆弱性评估需要的测试流程,测试工具和自动化测试技术也不相同。这可以通过一体化的安全弱点管控平台来实现。现有的安全弱点管理平台带有可自动更新的漏洞数据库,能够测试不同类型的网络设备,而且不会影响配置管理的变更管理的完整性。
实际上就是漏洞扫描
渗透测试更倾向于入侵,会刻意使用技术手段利用安全漏洞
脆弱性评估以非入侵的方式,定性,定量的识别已知安全弱点
开放式Web应用程序安全项目(Open Web Application Security Project)
www.owasp.org.cn 或 github.com
测试指南
代码审查指南
http://www.owasp.org.cn/OWASP-CHINA/owasp-project/OWASPTop102017v1.1.pdf
Web十大漏洞
CWE-79:xss漏洞
CWE-89:sql注入
一类漏洞编号
cve.scap.org.cn
cve.mitre.org
MS17-010:永恒之蓝
S2-053
微软补丁:KB
一个漏洞编号
开源安全测试方法论
信息系统安全评估框架
Web应用安全联合威胁分类
OpenVAS是开源的网络漏洞扫描器。自从Nessus收费之后,分支出来的项目
官网:www.openvas.org
Web端管理接口
4.9之后支持中文
www.pentest-standard.org/index.php/Main_Page
7个阶段
1.事前互动
2.情报搜集
3.威胁建模
4.漏洞分析
5.漏洞利用
6.深度利用
7.书面报告
PTES的主要特征和优势
1.它是非常全面的渗透测试框架,涵盖了渗透测试的技术方面和其他重要方面,如范围蔓延,报告,以及渗透测试人员保护自身的方法。
2.它介绍了多数测试任务的具体方法,可指导您准确测试目标的安全状态。
3.它汇聚了多名日行一“渗”的渗透测试专家的丰富经验。
4.它包含了最常用的以及很罕见的相关技术。
5.它浅显易懂,您可根据测试工作的需要对相应测试步骤进行调试。
从技术管理的角度来看,遵循正规的测试框架对安全测试极为重要。通用渗透测试框架涵盖了典型的审计测试工作和渗透测试工作会涉及到的各个阶段。
相关阶段如下:
1.范围界定
2.信息搜集
3.目标识别
4.服务枚举
5.漏洞映射
6.社会工程学
7.漏洞利用
8.权限提升
9.访问维护
10.文档报告
无论是进行黑盒测试还是白盒测试,选择和使用测试步骤都是测试人员的责任。在测试开始前,测试人员需要根据目标系统的实际环境和已掌握的相关目标系统的情况,在指定最佳的测试策略。
在开始技术安全评估之前,务必要观察,研究目标环境的被测范围,同时还要了解这个范围牵扯多少个单位,是单个单位还是多个单位会参与到安全评估的工作中来,在范围界定阶段,需要考虑的典型因素如下:
1.测试对象是什么?
2.应当采取何种测试方法?
3.有哪些在测试过程中需要满足的条件?
4.哪些因素可能会限制测试执行的过程?
5.需要多久才能完成测试?
6.此次测试应当达成什么样的任务目标?
手段不限
在划定了测试范围之后,就需要进入信息搜集阶段。在这个阶段,渗透人员需要使用各种公开资源尽可能的获取测试目标的相关信息,他们从互联网上搜集信息的主要渠道有:
论坛,公告板,新闻组,媒体文章,博客,社交网络,其他商业或非商业性的网站
此外,他们也可以借助各种搜索引擎中获取相关数据,如谷歌(谷歌语法),雅虎,MSN必应,百度等。收集的信息主要包括DNS服务器,路由关系,whois数据库,电子邮件地址,电话号码,个人信息以及用户账户。收集的信息越多,渗透测试成功的概率越高。
这个阶段的主要任务是识别目标的网络状态,操作系统和网络架构,该阶段工作旨在完整地展现目标网络里各种联网设备或技术的完整关系,以及帮助测试人员在接下来的工作里枚举目标网络的各种服务。
了解被测单位的联网设备,以及他们之间如何通信,网络架构
这一阶段会根据前面各个阶段的成果,进一步找出目标系统中所有开放的端口。一旦找到了所有开放的端口,就可以通过这些端口来列出目标系统上运行的服务。主机上开放的端口都有相应的服务程序,对这些信息进行深度分析之后,可进一步发掘目标网络基础设施中可能存在的漏洞。
端口扫描
可以根据已经发现的开放端口和服务程序,查找,分析目标系统中存在的漏洞。如果能够采用自动和手动这两种不同的测试方法结合起来,审计人员对目标系统的认知就会更为清晰,透彻,并能够仔细检查如何已知和未知的漏洞。
漏洞扫描,查找已知和未知的漏洞。
如果目标网络设置没有直接的入口,欺骗的艺术将起到抛砖引玉的重要作用,对目标组织中的人员进行定向攻击,很有可能帮助我们找到渗透目标系统的人口。例如,诱使用户运行安装后门的恶意程序,就可能为审计人员的测试工作形成突破。社会工程学测试分为多种不同实现形式。伪装成网络管理员,通过电话要求用户提供自己的账户信息;发送钓鱼邮件劫持用户的银行账户;甚至诱使某人出现在某个地点——这些都属于社会工程学攻击。在社会工程学中,达成同一既定目标的实现方式应有尽有。需要注意的是,在对目标实施欺骗以达成渗透目标之前,您需要实现研究当地的法律是否有关社会工程学的相关条款。
在仔细检查和发现目标系统中的漏洞之后,就可以使用已有的漏洞利用程序对目标系统进行渗透。审计人员可以把客户端漏洞利用程序和社会工程学进行结合,进而控制目标系统。这个阶段的主要任务是控制目标系统。这个流程可以分为三步,涉及攻击前,攻击,攻击后的相关行动。
获取目标系统的控制权限是渗透成功的标志。接下来,审计人员就可以根据其所拥有的访问权限,在被测系统中自由发挥。审计人员也可以使用适用与目标系统的本地漏洞来提升自己的权限。只要他们能够在目标系统上运行提权漏洞利用程序,就可以获得主机的超级用户权限或者系统权限。审计人员还可以以该主机为跳板,进一步攻击局域网络。根据之前的渗透范围的界定,审计人员接下来会开展的攻击可能是受限制的,也可能是不受限制的。然后,他们很有可能以各种方式获得与控制系统有关的更多信息。具体来说,他们可能是用嗅探手段截取网络数据包,破解各种服务的密码,在局域网络中使用网络诈骗手段。所以说,提升权限的最终目的是获取目标系统的最高访问权限。
普通用户 -> 管理员用户
在一段时间内维护对目标的访问权限
“埋藏后门”
审计人员要记录,报告并现场演示那些已经识别,验证和利用了的安全漏洞。
给出修复方案
1.明确目标
范围,规则,需求
2.信息搜集
基础信息,系统信息,应用信息,人员信息,防护信息
3.漏洞探测
系统漏洞,Web服务漏洞,Web应用漏洞,其他端口,通信安全
4.漏洞验证
手工验证,工具验证,实验验证
5.漏洞利用
定制EXP,防御绕过,进一步渗透,清理渗透
6.形成报告
整理结果,补充介绍,修复建议
核心:漏洞
形成自己的测试理论
网站
我们可以通过浏览器上网看到的精美页面,一般都是经过浏览器渲染过的。
html页面,其中包含了css等前端技术,多个网页的集合就是网站
Web容器,也叫Web服务器,主要提供Web服务,也就是常说的HTTP服务
常见的Web容器有:Apache / IIS / Nginx 等。
静态的网页,都是一些.html文件,是纯文本文件。这些文件中包含html代码。
HTML在浏览器中解释运行。
Web服务器处理能力的扩展
网站上的很多内容吸引经常的更新,把这些数据放在静态的程序中显然不合适。
数据与程序分离,采用专业的数据库,可以随时更新
超文本传输协议,是浏览器与Web服务器之间的通信协议,是传递消息的规范和要求
1990年提出
HTTP是用来将html文档从Web服务器传输到Web浏览器
请求和响应的协议,客户端发出请求,服务器端对请求给出回应
默认端口:80
支持浏览器/服务器模式
简单快速:浏览器向服务器提出请求时,只需要传送请求方法和请求路径。
灵活:传输任意类型的数据对象
.html 纯文本
.jpg 图片
.mp3 音频
以数据流的方式传递数据
HTTP协议是无状态的协议
统一资源定位器,用来告诉Web容器,浏览器所请求资源(文件)的路径
格式:
schema://login:password@address:port/path/to/resource/?query_string#fragment
port 80
login 用户名
password 密码 匿名访问时,默认没有这两个内容
fragment 锚点 实现页面内定位
URL中允许出现的字符有限
URL中path开始允许直接出现A-Z,a-z,0-9,半角减号(-),下划线句点(.),波浪号(~)
其他字符均会被百分号编码
# %23
空格 %20
%+ASCII码十六进制形式
在进行编程时,会用+代替空格
针对英文
请求行,请求头,请求正文
GET
GTE方法是最常用的方法,通常用于请求服务器发送的某个资源
POST
POST方法可以向服务器提交参数以及表单,包括文件流等。
HEAD
与GET方法类似,但在服务器响应中只返回首部。
PUT(危险)
与GET从服务器读取文档相反,PUT方法会向服务器写入文档。
TRACE(危险)
回显浏览器的请求。
OPTIONS
请求Web服务器告知其支持的各种功能。
DELETE(危险)
请求服务器删除请求URL所指定的资源。
利用telnet模拟浏览器发送HTTP请求
例:
telnet 127.16.59.56 80
ctrl+}打开回显,然后回车
GET /php/test/get.php HTTP/1.1
HOST: 127.16.59.56 80
HOST | 主要用于指定被请求资源的Internet主机和端口号 |
User-Agent | 浏览器指纹 |
Referer | 包含一个URL,代表当前URL的上一个URL |
Cookie | 记录请求者的身份认证信息 |
Accept-Charset | 用于指定客户端接收的字符集 |
Content-Type | 用于向接收方指示实体的介质类型(数据类型) |
Constant-Length | 用于指明实体正文的长度,以字节方式存储的十进制数字来表示 |
Last-Modified | 用于指示资源的最后修改时间和日期 |
状态行,响应文,响应正文
1.状态行:协议/版本,状态代码,描述语句
协议/版本:HTTP/1.1
状态代码:200
描述语句:OK
2.响应报头
第二行开始到第一个空行为止的所有内容,其中包含了关于HTTP响应的重要字段
3.响应正文
服务器返回资源的内容,即浏览器接收到的HTML代码
主要字段
Service | 服务器指纹 |
Set-Cookie | 向浏览器端设置Cookie |
Last-Modified | 服务器通过这个头信息告诉浏览器,资源的最后修改时间 |
Content-Length | 正文的长度 |
Refresh | 服务器通过Refresh头告诉浏览器定时刷新浏览器 |
Location | 重定向目标页面 |
1.URL的主机一致
2.Schema一致
3.端口号一致
在划定了测试范围之后,就需要进入信息收集阶段
使用公开资源尽可能搜集目标信息
收集的信息越多,渗透测试成功率越高
DNS服务器,路由关系,whois数据库,电子邮件地址,电话号码,个人信息以及用户账户
以“ testfire.net ”为目标
在收集DNS信息的时候,主要关注域名注册商,管理员联系方式,电话和邮箱,子域名等信息。
whois查询
kali虚拟机中的小工具,可以用来查询域名注册信息
whois 域名
也可以通过站长之家进行whois查询
whois.chinaz.com
除了用whois查询以外,还可以进行反查
邮箱反查
注册人反查
电话反查
searchdns.netcraft.com,有利于查询大型网站
证书
DNS区域传送指的是一台备用服务器使用来自服务器的数据刷新自己的域数据库。这为运行中的DNS服务提供了一定的冗余度,其目的是为了防止主的域名服务器因意外故障变得不可用时影响整个域名的解析。无身份验证。
解决方案:指定一个IP地址,允许子服务器同步域数据库
可以使用dig工具来检测域传送漏洞
命令:dig axfr @dns.example.com example.com
通过域传送漏洞可以得到子域名信息,子域名对应的IP地址
工具:子域名挖掘机
准备一个字典里面写上所有可能的域名
dnsrecon
通过DNS解析找到IP地址
ping 非权威应答
nslookup
工具:dnsenum
在解析域名时,会自动检测域传送漏洞
站长之家
CDN加速问题
CDN是内容分发网络
本意是进行节点缓存,使网站服务速加快,一般情况下是没办法得到目标网站的真实IP
同IP网站查询
1.1.1.1
A B
旁站(同在一个服务器上)
1.1.1* C端查询
查询IP地址经纬度
www.maxmind.com
通过GPS查询物理位置
Google hacking
搜索引擎语法,获取有关网站的信息
site 指定网站
"" 包含关键字
inurl 在url中出现的关键字
filetype 指定文件类型
"parent directory" site:testfire.net
site:testfire.net inurl:login
filetype pdf
intitle:"php中文网 探针2014"
www.zoomeye.org
支持公网设备指纹检索和Web指纹检索
网站指纹包括应用名,版本,前端框架,后端框架,服务端语言,服务器操作系统,网站容器,内容管理系统和数据等。
探索iis6.0组件
app:"Microsoft IIS httpd" ver:"6.0"
探索开启3389端口的windows主机
port:3389 OS:windows
shodan
www.shodan.io
JAWS/1.1
登录绕过---控制台
-----------------------------------------------
document.cookie="dvr_camcnt=4";
document.cookie="dvr_usr=admin";
document.cookie="dvr_pwd=123";
-----------------------------------------------
访问:view2.html
收集指纹信息
Web容器信息
插件:Netcraft Extension,Wappalyzer