当前位置:   article > 正文

04 渗透测试基础_zeroclipboard.swf 跨站脚本

zeroclipboard.swf 跨站脚本

渗透测试基础

一 代码审计

1 基础环境搭建

(1) Web服务:WAMP+phpstudy

(2) phpstudy

启动问题
端口正常开放
80 http
3306 mysql

web根目录[C:\Users\dq\Documents\phpStudy-1-24\phpStudy\WWW]

  • php
    探针 phpinfo.php phpmyadmin
    Apache配置文件:[C:\phpStudy\Apache\conf\httpd.conf]
    Apache日志文件目录:[C:\phpStudy\Apache\logs]
  • mysql[root/root]
    将msql.exe所在位置放到环境变量中
    [mysql-uroot-proot]
    [C:\phpStudy\MySQL\my.ini]
  • PHP
    [ phpinfo();]
    [C:\ phpStudy\ php\ php-5.4.45]
    [C:\ phpStudy\ php\ php-5.4.45\ini]
  • 火狐浏览器
  • 输入法

2 HTML 表单

(1) 表单介绍

什么是表单? 搜索框、登录框、文件上传、注册、留言板 =====> 需要交互
交互: 双向交流
读写执行:
        读取 获取信息
        写入:发出信息
写操作:
        向服务器提交信息(写)
        搜集用户信息
小技巧:
        管理控制台
        查看器
                DOM     文档对象模型    树形结构
控制台:
        可以执行JS 代码
网络:
        页面的网络连接。
存储:
        存储了页面的cookie信息。

表单本身是一个框架,表单里会有很多控件(元素)。

(2) < form >元素:用以定义HTML表单

<form></form>
    action   数据提交到服务器的url,在提交表单时执行的动作,如果为空,提交到当前页面。
    method   提交方法
             get:默认值,在传输过程,数据被放在请求的URL中,传送的数据量较小,不安全。
                url中有显示
                url长度有限制
             post:无长度限制,所有操作对用户来说都是不可见的。
                 上传文件等等
                 http请求正文中
    enctype:
             application/x-www-form-urlencoded  默认值,特殊字符等都可以被提交
             multipart/form-data 上传文件时使用
             text/plain  只能将普通的数据提交(少数框架中使用)
             name 定义整个表单的名称
                 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

(3) < input > 元素:定义输入域

元素定义输入域,根据不同的type属性,相应的input元素有很多形态,(name 属性:如果要正确地被提交,每个输入字段必须设置一个 name 属性。)
属性值
          text                   文本输入
          radio                单选按钮输入(选择唯一)
          submit             提交按钮(提交表单)
          checkbox        复选框
          password        密码输入

  • 文本输入
    定义用于文本输入的单行输入字段,实例:
    在这里插入图片描述

  • 单选按钮输入
    定义单选按钮,有限数量的选项中选择其中之一,实例:
    在这里插入图片描述

  • 提交按钮
    定义用于向表单处理程序(form-handler)提交表单的按钮。表单处理程序通常是包含用来处理输入数据的脚本的服务器页面。
    在这里插入图片描述

  • 密码输入
    < input type=“password” > 定义密码字段区域,表现效果 (密码字段中的字符是隐藏的(显示为星号或圆圈))
    在这里插入图片描述

  • 复选框(Checkboxes)
    定义了复选框. 从若干给定的选择中选取一个或若干选项。
    在这里插入图片描述

(4)< textarea > 元素

< textarea >定义一个多行的文本输入控件,文本区域中可容纳无限数量的文本,其中的文本的默认字体是等宽字体(通常是 Courier)。

可以通过 cols 和 rows 属性来规定 textarea 的尺寸大小,不过更好的办法是使用 CSS 的 height 和 width 属性
在这里插入图片描述

(5) < button > 元素

< button > 标签定义一个按钮。在 < button > 元素内部可以放置内容,比如文本或图像。这是该元素与使用 < input > 元素创建的按钮之间的不同之处。
提示:请始终为 元素规定 type 属性。不同的浏览器对 元素的 type 属性使用不同的默认值。
在这里插入图片描述

(6) < select > 元素

< select > 元素用来创建下拉列表。< select > 元素中的 < option > 标签定义了列表中的可用选项。< select > 元素是一种表单控件,可用于在表单中接受用户输入
在这里插入图片描述

(7) < fieldset > 组合表单数据

< fieldset > 元素组合表单中的相关数据
< legend > 元素为 < fieldset > 元素定义标题。

<form action="action_page.php">
<fieldset>
<legend>Personal information:</legend>
First name:<br>
<input type="text" name="firstname" value="Mickey">
<br>
Last name:<br>
<input type="text" name="lastname" value="Mouse">
<br><br>
<input type="submit" value="Submit"></fieldset>
</form>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在这里插入图片描述

(7) datalist 元素

datalist 元素规定输入域的选项列表。
列表是通过 datalist 内的 option 元素创建的。
如需把 datalist 绑定到输入域,请用输入域的 list 属性引用 datalist 的 id:
在这里插入图片描述

(8) keygen 元素

keygen 元素的作用是提供一种验证用户的可靠方法。
keygen 元素是密钥对生成器(key-pair generator)。当提交表单时,会生成两个键,一个是私钥,一个公钥。
私钥(private key)存储于客户端,公钥(public key)则被发送到服务器。公钥可用于之后验证用户的客户端证书(client certificate)。
目前,浏览器对此元素的糟糕的支持度不足以使其成为一种有用的安全标准

(9) output 元素

output 元素用于不同类型的输出,比如计算或脚本输出。

3 HTML CSS

4 HTML iframe

5 vulhub安装

6 php基础+变量

7 运算符

8 流程控制语句

9 PHP函数

10 PHP数组

11 PHP Cookie

12 PHP SESSION

13 PHP与MySQL

14 注册功能实现

15 PHP个人中心设计

16 留言实现

17 JS基础

18 JS函数

19 JS事件

20 HTML标签基础

21 HTML表格

21 HTML常用标签

二 渗透测试导论

1 渗透测试方法导论

渗透测试(penetration testing,pentest)是实施安全评估(即审计)的具体手段。方法论是在制定、实施信息安全审计方案时,需要遵循的规则、惯例和过程。人们在评估网络、应用、系统或三者组合的安全状况时,不断探索各种务实的理念和成熟的做法,并总结了一套理论——渗透测试方法论。

2 渗透测试的种类

黑盒测试

在进行黑盒测试时,安全审计员在不清楚被测单位的内部技术构造的情况下,从外部评估网络基础设施的安全性。在渗透测试的各个阶段,黑盒测试借助真实世界的黑客技术,暴露出目标的安全问题,甚至可以揭露尚未被他人利用并按照风险等级(高、中、低)对其排序。通常来说,风险级别取决于相关弱点可能形成危害的大小。

白盒测试

从被测系统环境自身触发,全面消除内部安全问题。从而增加了从单位外部渗透系统的难度。黑盒起不了这样的作用。

脆弱性评估与渗透测试

通过分析企业资产面临安全威胁的情况和程度,评估内部和外部的安全控制的安全性。

安全测试方法论

开放式Web应用程序安全项目:OWASP(测试指南、开发指南、代码审查指南 OWASP top 10),10大安全威胁要记住并且表述清楚
注入:sql注入
失效的身份认证:爆破
敏感数据泄露:传输、存储、浏览器的交互数据(后台管理员数据泄露、未授权访问、源码泄露)
xml外部实体(XXE):
失效的访问控制:
安全配置错误:
跨站脚本:
不安全的反序列化:
使用含有已知漏洞的组件:
不足的日志记录和监控:

通过缺陷列表,某一类漏洞编号库CWE
通用漏洞与披露,某一个漏洞编号库CVE

三 OpenVas

OpenVas是开源的网络漏洞扫描器,自从 Nessus 收费了之后,分支出来的项目。
网址:http://www.openvas.org
web端管理接口
4.9之后支持中文
[gsm-ce-5.0.10.iso]

新建虚拟机
推荐配置
    推荐VirtualBox安装
    系统:Linux
    版本:其他Linux 64位
    内存:4G
    硬盘:9G
    CUPS
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

四 渗透测试执行流程

1 渗透测试执行标准

        渗透测试执行标准(Penet rat ion Testing Execution Standard,PTES)的先驱都是渗透测试行业的精英。这个标准有渗透测试7个阶段的标准组成,可以在任意环境中进行富有成果的渗透测试。 [http://www.pentest-standard.org/index.php/Main_Page]
[software:http://www.pentest-standard.org/index.php/PTES_Technical_Guidelines]

        从技术管理的角度来看,遵循正规的测试框架对安全测试极为重要。通用渗透测试框架涵盖了典型的审计测试工作和渗透测试工作会涉及到的各个阶段。

(1) 相关阶段如下

1) 范围界定
        在开始技术性安全评估之间,务必要观察、研究目标环境的被测范围。同时还要了解,这个范围牵扯多少个单位,是单个单位还是多个单位会参与到安全评估的工作中来,在范围界定阶段,需要考虑的典型因素如下。

  • 测试对象是什么?
  • 应当采取何种测试方法
  • 有哪些在测试过程中需要满足的条件
  • 哪些因素可能会限制测试执行的过程
  • 需要多久才能完成测试
  • 此次测试应当达成什么样的任务目标

2) 信息搜集
        在划定了测试范围之后,就需要进入信息收集阶段。在这个阶段,渗透人员需要使用各种公开资源尽可能地获取测试目标的相关信息。

        他们从互联网上搜集信息的互联网渠道主要有:论坛|公告板|新闻组|媒体文章|博客|社交网络|其他商业或非商业性的网站。此外,他们也可以借助各种搜索引擎获取相关数据,如谷歌、雅虎、MSN必应、百度等。收集的信息主要包括DNS服务器、路由关系、whois数据库、电子邮件地址、电话号码、个人信息以及用户账户。收集的信息越多,渗透测试成功的概率越高。

3) 目标识别
        这个阶段的主要任务是识别目标的网络状态操作系统网络架构。该阶段工作旨在完整地展现目标网络里各种联网设备或技术的完整关系,以帮助测试人员在接下来的工作里枚举目标网络的各种服务

4) 服务枚举
        这一阶段会根据前面各个阶段的成果,进一步找出目标系统中所有开放的端口。一旦找到了所有开放的端口,就可以通过这些端口来列出目标系统上运行的服务。主机上开放的端口都有相应的服务程序,对这些信息进行深度分析之后,可进一步发掘目标网络基础设施中可能存在的漏洞。

5) 漏洞映射===>漏洞扫描
        可以根据已经发现的开放端口和服务程序,查找、分析目标系统中存在的漏洞。如果能够采用自动和手动这两种不同的测试方法结合起来,审计人员对目标系统的认知就会更为清晰、透彻,并能够仔细地检查任何已知和未知的漏洞。

6) 社会工程学
        如果目标网络没有直接的入口,欺骗的艺术将起到抛砖引玉的重要作用。对目标组织中的人员进行定向攻击,很有可能帮助我们找到渗透目标系统的入口。例如,诱使用户运行安装后门的恶意程序,就可能为审计人员的渗透工作形成突破。社会工程学渗透分为多种不同实现形式。伪装成网络管理员,通过电话要求用户提供自己的账户信息;发送钓鱼邮件来劫持用户的银行账户;甚至诱使某人出现在某个地点一这些都属于社会工程学攻击。
        在社会工程学中,达成同一既定目标的实现方式应有尽有。需要注意的是,在对目标实施欺骗以达成渗透目标之前,多数情况下需要长时间研究目标人员的心理。另外,在开展这个阶段的工作之前,您需要实现研究过内的法律是否有关于社会工程学的相关条款。

7) 漏洞利用
        在仔细检查和发现目标系统中的漏洞之后,就可以使用已有的漏洞利用程序对目标系统进行渗透。审计人员可以把客户端漏洞利用程序和社会工程学进行结合,进而控制目标系统。这个阶段的主要任务是控制目标系统。这个流程可以分为三步,涉及攻击前、攻击、攻击后的相关行动

8) 权限提升
        获取目标系统的控制权是渗透成功的标识。接下来,审计人员就可以根据其所拥有的访问权限,在被测系统中自由发挥。审计人员也可以使用适用于目标系统的本地漏洞来提升自己的权限。只要他们能偶在目标系统上运行提权漏洞利用程序,就可以获得主机的超级用户权限或者系统级权限。审计人员还可以以该主机为跳板,进一步攻击局域网络
        根据之前渗透范围的界定,审计人员接下来会开展的攻击可能是受限制的,也可能是不受限制。然后,他们很有可能以各种方式获得与控制系统有关的更多信息。具体的说,他们可能是用嗅探手段截获网络数据包,破解各种服务的密码,在局域网络中使用网络欺骗手段。所以说,提升权限的最终目的是获得目标系统的最高访问权限

9)访问维护
        多数情况下,审计人员需要在一段时间内维护他们对目标系统的访问权限。例如**,在演示越权访问目标系统的时候,安装后门将节省重新渗透目标系统所耗费的大量时间。**这种情况下,访问维护将节约获取目标系统访问权限所需要的时间、花费和资源。**审计人员可以通过一些秘密的通信隧道,在既定时间内维持对目标的访问权限。**这些隧道往往基于特定协议、代理或者点对点方法的后门程序。这种对系统的访问方法可以清楚地展示,入侵人员在目标系统实施攻击时隐藏行踪的具体方法。

10)文档报告
        在渗透测试的最后一个环节里,审计人员要记录、报告并现场演示那些已经识别、验证和利用了的安全漏洞。在被测单位的管理和技术团队会检查渗透时使用的方法,并会根据这些文档修补所有存在的安全漏洞。所以从道德角度来看,文档报告的工作十分重要。并为了帮助管理人员和技术人员共同理解、分析当前IT基础架构中的薄弱环节,可能需要给不同的部门]撰写不同措辞的书面报告。此外,这些报告还可以用来获取和比渗透测试前后系统目标的完整性。

(2) 简化的渗透测试流程是在进行渗透测试过程中经常使用的流程,具体如下。

在这里插入图片描述

(3) 黑客攻击的一般过程

在这里插入图片描述

(4) 渗透测试技术指南(形成自己的流程)

五 web架构与安全分析

1 Web工作机制

在这里插入图片描述
当我们输入网址后
主机先查找本地缓存 ====> host文件 ====> IP/ARP ====> DNS ====> IP ====> 网关 ====> 路由 ====> 到达对方主机 ====> 访问80 443端口 ====> 3次握手 ====> 建立连接 ====> HTTP数据包 ====> HTTP响应包(如果访问的.html文件,找到后直接发过来;访问的是.php文件,则需要解析;php连接mysql,则php将数据库的运行结果返回到客户端)

2 网页、网站

  • 我们可以通过浏览器.上网看到的精美页面,–般都是经过浏览器渲染过的。
  • HTML页面,其中包含了css等前端技术。多个网页的集合就是网站

3 Web容器

  • Web容器,也叫Web服务器,主要提供Web服务,也就是常说的HTTP服务。
  • 常见的Web容器有:Apache(支持php)/IIS(支持.net,nsp,php)/Nginx(php,反向代理功能,负载均衡) 等。

4 静态的网页

  • 静态的网页,都是一些.html文件,是纯文本文件。这些文件中包含html代码。
  • HTML(Hype rText Markup Language,超文本标记语言),在浏览器中解释运行。

5 中间件服务器

以上这种,只能单向地给用户展示信息。随着Web的发展,信息要双向流动,产生了交互的需求,也就是动态网页的概念;所谓动态就是利用flash、Php、asp、Java等技术在网页中嵌入一些可运行的脚本,用户浏览器在解释页面时,遇到脚本就启动运行它。

脚本的使用让Web服务模式有了"双向交流”的能力,Web服务模式也可以象传统软件一样进行各种事务处理,如编辑文件、利息计算、提交表单等,Web架构的适用面大大扩展。

这些脚本 可以嵌入在页面中,如JS等。也可以以文件的形式单独存放在Web服务器的目录里,如.asp、.php、jsp文件等。 这样功能性的脚本越来越多,形成常用的工具包,单独管理,Web业务开发时,直接使用就可以了,这就是中间件服务器,它实际上是Web服务器处理能力的扩展

6 数据库的出现

静态网页与脚本都是事前设计好的,一般不经常改动,但网站上很多内容需要经常的更新,如新闻、博客文章、互动游戏等,这些变动的数据放在静态的程序中显然不适合,传统的办法是数据与程序分离,采用专业的数据库。

Web开发者在Web服务器后边增加了一个数据库服务器,这些经常变化的数据存进数据库,可以随时更新。当用户请求页面时,脚本根据用户请求的页面,涉及到动态数据的地方,利用SQL数据库语言,从数据中读取最新的数据,生成“完整"页面,最后送给用户

7 HTTP协议概述

HTTP(HyperText Transfer Protocol,超文本传输协议)是浏览器与Web服务器之间的通信协议,将html文档从Web服务器传输到Web浏览器,是一个请求和响应的协议。HTTP协议使用可靠的 TCP 传输,默认端口80。支持浏览器/服务器模式。

浏览器向服务器提出请求时,只需要传输请求方法和请求路径。
灵活:HTTP运行传输任意类型的数据对象。【.html 纯文本;.jpg 图片;.mp3 音频】
HTTP协议是无状态的协议。

8 URL

统一资源定位符(网址),用来告诉Web容器,浏览器所请求资源(文件)的路径。例如:
http://localhost/cms/show.php?id=32
schema://login:password@adress:port/path/to/resource/?query_string#fragment

port        80
login       用户名
password    密码       匿名访问时,默认没有这两个内容
fragment    锚点
@           URL编码

URL中允许出现的字符是有限制的,URL中path开始允许直接出现A-Za-z0-9
半角减号(-)、下划线句点(.)、波浪号(~)。其他字符均会被百分号编码。如下:
#        %23
[ ]      %20,在进行编程的时候,我们会用 + 代替空格
%23      %25%23%33
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

9 报文分析工具

  • F12
  • wireshark
  • fiddler
  • burp suit

10 HTTP请求由请求行、请求头、请求正文

⭐请求行:方法,资源路径,协议/版本

方法:GET
资源路径:/test/1.html
协议/版本:HTTP/1.1

                   【实验一:利用telnet模拟浏览器发送HTTP请求】
第一步:telnet 172.16.132.161 80

第二步:
GET /php/test/get.php HTTP/ 1.1
HOST: 172.16.132.161

第一步:telnet wwW.baidu.com 80
第二步:
GET /HTTP/1.1
HOST:www.baidu.com

                   【实验二:利用telnet传送GET参数】
GET /php/test/get.php?name=AJEST&pwd=123456 HTTP/1.1
HOST: 172. 16.132.161        

                   【实验三:利用telnet模拟POST请求传递参数】
                 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

⭐请求头

从请求报文第二行开始到第一个空行为止之间的内容,其中包含很多字段。
主要字段
【Host】主要用于指定被请求资源的Internet主机和端口号
【User-Agent】浏览器指纹
【Referer】包含一个URL,代表当前URL的上一个URL
【Cookie】记录请求者的身份认证信息
【Accept-Charset】用于指定客户端接收的字符集
【Content-Type】用于向接收方指示实体的介质类型,即数据类型
【Content-Length】用于指明实体正文的长度,以字节方式存储的十进制数字来表示
【Last-Modified】用于指示资源的最后修改时间和日期
【RESPONSE】响应报文。如下

⭐请求正文

【Get方法】 没有请求正文。
【POST方法】 可以向服务器提交参数以及表单,包括文件流等。
【HEAD方法】 与GET方法类似,但在服务器响应中只返回首部。
【PUT方法】 与GET从服务器读取文档相反,PUT方法会向服务器写入文档。
【TRACE方法】 回显浏览器的请求。
【OPTIONS方法】 OPTIONS方法请求Web服务器告知其支持的各种功能。
【DELETE方法】 DELETE方法请求服务器删除请求URL所指定的资源。

插件推荐hackbar
在这里插入图片描述

11 RESPONSE响应报文

响应报文由状态行响应头响应正文三部分组成。

【状态行】 协议/版本,状态代码,描述短语 HTTP/1.1 200 0K
协议/版本:HTTP/1.1状态代码:200描述短语:0K

【状态代码】
100~199            信息性状态码
200~299            成功状态码
300~399            重定向状态码
400~499            客户端错误状态码
500~599            服务器错误状态码
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

【响应头】第二行开始到第一个空行为止的所有内容,其中包含了关于HTTP响应的重要字段。

【主要字段】
Server                    服务器指纹
Set-Cookie                向浏览器端设置Cookie 
Last--Modified            服务器通过这个头信息告诉浏览器,资源的最后修改时间
Content-Length            请求正文的长度.
Location                  重定向目标页面
Refresh                   服务器通过Refresh头告诉浏览器定时刷新浏览器Cookie与Session机制
Cookie 与Session 机制      Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

【响应正文】
一般是返回一个网页。

12 同源策略的条件(js代码只能读取同一个域下的网页)

  • URL的主机(FQDN:Fully Qualified Domain Name全称域名)一致
  • Schema-致
  • 端口号一致
    同源策略的保护对象不仅仅是iframe 内的文档。比如,实现Ajax时所使用的XMLHt tpRequest对象能够访问的URL也受到了同源策略的限制。

六 信息收集

在划定了测试范围之后,就需要进入信息收集阶段。在这个阶段,渗透人员需要使用各种公开资源尽可能地获取测试目标的相关信息。他们从互联网上搜集信息的互联网渠道主要有:

  • 论坛
  • 公告板
  • 新闻组
  • 媒体文章
  • 博客
  • 社交网络
  • 其他商业或非商业性的网站
  • github

从吾爱漏洞上发现一个信息搜集总结,言简意赅,有时间可以自己再重新整理一版简介的渗透测试过程 http://www.52bug.cn/hkjs/6661.html。

此外,他们也可以借助各种搜索引擎中获取相关数据,如谷歌、雅虎、MSN必应、百度等。收集的信息主要包括DNS服务器、路由关系、whois数据库、电子邮件地址、电话号码、个人信息以及用户账户。收集的信息越多,渗透测试成功的概率越高。

【练手网站】
[1] 本

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/395341
推荐阅读
相关标签
  

闽ICP备14008679号