渗透测试方法论
渗透测试(peneration testing,pentest),人们在网络、应用、系统或三者组合的安装状况时总结的一套理论。
一、种类,概述:
-
黑盒测试
-
白盒测试
-
OWASP Top10
-
通用缺陷列表 (Common Weakness Enumeration,CWE) 某一类漏洞编号
通用漏洞与披露(Common Vulnerabilities and Exposures,CVE) 某一个漏洞编号
MS17-010 微软在17年发布的第十个安全公告(一个安全公告就是一个漏洞)微软的查询systeminfo查看系统补丁信息,补丁以KB开头。
S2-053 strust发布的第53个安全公告。 struts2:APACHE 开源开发java框架
二、OpenVAS的安装
openVAS时开源的网络漏洞扫描器。自从Nessus收费了之后,分支出来的项目
[http://www.openvas.org] ,是Web端管理接口,4.9之后支持中文
三、渗透测试流程
渗透测试执行标准(PTES),共7个阶段
-
事前互动
- 情报搜集
- 威胁建模
- 漏洞分析
- 漏洞利用
- 深度利用
- 书面报告
四、通用渗透测试框架
- 范围界定
- 测试对象是什么?
- 应当采取何种测试方法?
- 有哪些在测试过程中需要满足的条件?
- 哪些因素可能会限制渗透测试的过程?
- 需要多久才能完成测试?
- 此次测试应当达成什么样任务目标?
- 信息收集(whois、ip、端口、C段、旁站、子域名、微信群、qq群、微博、网站联系人、电话等)
- google hack、baidu、雅虎、MSN、bing、shodan、zoomeye、fofa、站长工具ipnet、云溪、微步、奇安信威胁情报中心
- 学习、论坛:gitbub、csdn、博客园、freebuf、sec-news、零组、土司、看雪、吾爱破解、知识盒子、渗透师、先知社区、i春秋
- 漏洞官网:CNVD、OWASP
- 常用工具:burpsuite、nmap、sqlmap、御剑、菜刀、蚁剑、冰蝎、captfEncode、appscan、awvs、hydra、layer、struts漏洞利用工具
- 微信公众号:雷神众测、黑白之道、零组攻防实验室、看雪学院、玄魂工作室、红客官网
- 插件:wappalyzer、ip address and domain information
3.目标识别
1. 识别目标的网络状态、操作系统和网络架构。
4.服务枚举
1. 根据以上阶段的成果,进一步找出目标系统中所有开放的端口和端口所运行的服务和在线主机。
-
漏洞映射
1. 漏扫,根据已经发现的开放端口和服务程序,查找,分析目标系统中存在的漏洞。
-
社会工程学
- 社工大法好
-
漏洞利用
- 对目标系统进行渗透
-
权限提升
- 普通用户——》管理员用户
-
访问维护
- 清除访问日志,留后门
-
文档报告
五、Web架构安全分析
-
web工作机制
-
查找网址:
-
DNS解析先找本地缓存
-
然后找host文件 在c盘中,一般在C:\Windows\System32\drivers\etc\hosts路径下
-
内网中利用ARP协议,查找DNS服务器,获取IP地址
-
然后通过获取IP,通过网关,路由,进入公网,利用DNS服务器,查看IP和域名
-
访问,到达对方主机,80,443端口
-
三次握手建立连接
-
发送HTTP数据包,进行HTTP响应
-
-
网页、网站地址(IPV4)
- 私有网段 A、B、C 段 10.0.0.0/8 172.168.0.0/12 192.168.0.0/16
- 回环地址:127.0.0.1
- 网络地址、广播地址
-
web容器
-
常见的web容器,iis(.net)、tomcat(.jsp)、apache(.html)、nginx(反向代理,负载均衡)、jboss、weblogic
- web容器,也叫web 服务器,主要提供web服务,也就是http服务
-
中间件服务器,跟用户进行交互,实现动态功能;所谓动态就是利用flash、php、asp、java等技术在网页中嵌入一些可运行的脚本,用户浏览遇到脚本就会启动。
六、HTTP协议概述(应用层泄露)
HTTP(hypertext transfer protocol,超文本传输协议),就是浏览器和客户端之间的交互,是传递消息的规范和要求。
-
概述
@ 1990年提出,当前版本1.1,有0.9/1.0/1.1/2.0版本
@ HTTP是TCP连接,默认端口80,支持浏览器/服务器模式
@ URL 统一资源定位符(网址),URI统一资源标识符(唯一性,如身份证号码)
@ URL,用来告诉web服务器,请求的方法和路径
@ 灵活:HTTP运行传输任意类型的数据对象,只要发送方和接收方都知道处理的数据类型即可
@ HTTP 协议是无连接(每连接之处理一个请求,节省时间)、HTTP是媒体独立(c/s双方发送任意数据类型,只要直达如何处理就行,灵活)、HTTP协议无状态协议(对事务没有记忆能力,每次连接传送数据量大,不过应答也快,方便)
-
schema://login:password@address:port/path/to/resource/?query_string#fragment 在访问web的时候url状态
@ 如:http://localhost/cms/show.php?id=32
@ schema 协议
@ fragment 锚点
@ url编码、%+ASCII # %23 [ ] %20
-
HTTP请求报文(请求行、请求头、请求正文组成)
@ 请求行 三部分组成:请求的方法、请求路径、协议版本 如:GET /index.php HTTP/1.1
@ 请求头 报文第二行开始道第一个空行之间的内容
@ 请求正文 GET方式没有请求正文,POST方式有请求正文
@ ————————————————请求方法————————————————
@ GET:通常用于请求服务器发送某个资源
@ POST:可以向服务器提交参数以及表单,包括文件流等
@ HEAD:与GET方法类似,但在服务器响应中只返回首部
@ PUT:从服务器读取文档相反,PUT方法会向服务器写入文档(危险)
@ TRACE:回显浏览器请求
@ OPTIONS:请求web,服务器告知其支持的各种功能
@ DELETE:请求服务器删除请求URL所指定的资源
@ ————————————————————————————————————
@ —————————————————主要字段———————————————
@ HOST:用于指定被请求资源的公网IP和端口
@ User-Agent:浏览器指纹
@ Referer:也就是当前请求url从哪个url跳转过来的
@ X-Forwarded-For:标识HTTP请求端真实IP
@ Cookie:记录请求者的身份认证信息,用户名和密码等,以键值对的方式保存在客户端。
@ Content-Type:数据类型
@ Content-Length:正文长度
@ Last-Modified:指定资源最后修改的时间和日期
@ ————————————————————————————————————
-
HTTP响应报文(状态行、响应报头、响应正文组成)
@ 状态行:协议/版本、状态代码、描述语 如:HTTP/1.1 200 ok
@ 响应头:第二行到第一个空行之间
@ 响应正文:服务器返回的资源内容,接收的html啥的
@ ——————————————————状态代码————————————-——
@ 1** 信息状态码
@ 2** 成功状态码 如:200
@ 3** 重定向状态码 如:304
@ 4** 客户端错误状态码 如:400、403、404
@ 5** 服务器错误状态码 如:500
@ —————————————————————————————————————
@ ——————————————————主要字段———————————————
@ Server:服务器指纹
@ Set-Cookie:向浏览器端设置Cookie
@ Content-Length:请求正文的长度
@ Location:重定向目标页面
@ Refresh:服务器通过Refresh头告诉浏览器定时刷新浏览器
@ —————————————————————————————————————
七、同源策略
-
同源策略的条件
@ URL的主机(FQDN:Fully Qualified Domain Name 全称域名)一致
@ 协议一致
@ 端口号一致
@ Location:重定向目标页面
@ Refresh:服务器通过Refresh头告诉浏览器定时刷新浏览器
@ —————————————————————————————————————
七、同源策略
-
同源策略的条件
@ URL的主机(FQDN:Fully Qualified Domain Name 全称域名)一致
@ 协议一致
@ 端口号一致
-
同源策略的保护对象不仅仅是iframe内的文档。比如,实现Ajax时所使用的XMLHttpRequest对象能够访问的URL,也受到了同源策略的限制。