渗透测试基础

1、渗透测试流程

前期交互 - 信息收集 - 威胁建模 - 漏洞分析 - 渗透攻击 - 后渗透 - 形成报告

2、渗透测试分类

黑盒测试,白盒测试

3、漏洞可能出现的地方

1、服务器:操作系统、应用程序
2、网站:源代码(前台代码:JS/后台代码:PHP/Java/ASP)
3、通信过程中的协议:协议漏洞

4、计算机网络模型

1、OSI七层参考模型:
由下到上:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
OSI七层参考模型只是一个参考模型
2、TCP/IP四层模型:
由下到上:网络接口层、网际层、运输层、应用层
TCP/IP四层模型是实际使用的模型
3、五层协议:
由下到上:物理层、数据链路层、网络层、运输层、应用层
五层协议是结合了OSI七层参考模型和TCP/IP四层模型,为了方便讲述计算机网络原理而设计出来的
计算机网络模型

5、计算机五层通信过程

五层协议各层的职责

应用层

应用层的任务是通过应用之间的交互来完成特定的网络应用,应用层定义了应用进程相互通信的规则。
主要协议有:HTTP、DHCP、DNS、SMTP、FTP等。
应用层协议分布在多个端系统上,一个端系统中的应用程序使用协议与另一个端系统中的应用程序交换信息分组。应用层传输的信息分组,也就是应用层的基本单位为:报文。

传输层

传输层负责端到端(end-to-end)的传输(这里的“端”指源主机和目标主机),这一层上主要定义了两个传输协议,即传输控制协议TCP和用户数据包协议UDP。
应用层传下来的报文,传输层加上TCP/UDP头,其中最重要的部分是源端口和目的端口。
主要协议:TCP、UDP
传输层的基本单位为:报文段

网络层

网络层负责点到点(point-to-point)的传输(这里的“点”指主机或路由器),主要解决路由选择、拥塞控制和网络互联问题,网络层最重要的协议是IP协议。
传输层传下来的报文段,在网络层加上IP头,其中最主要的部分是源IP地址和目的IP地址。
主要协议:IP、ARP、RARP、ICMP
典型设备:路由器、防火墙、三层交换机
网络层的基本单位为:IP数据包

数据链路层

数据链路层负责将IP数据包封装成适合在物理网络上传输的帧格式并传输,或者将从物理网络接收到的帧解封,取出IP数据包交给网络层。
从网络层传输下来的数据,在数据链路层添头加尾。其中帧头部最重要的是目标MAC地址和源MAC地址,帧尾部是FCS(帧检验序列,发送网卡利用多项式计算,称循环冗余校验(CRC),将计算结果写入FCS字段,接收方收到这个帧,对其做相同的CRC计算。如果计算结果与接收的FCS字段相同,则帧没有发生错误。如果不同,接收方就相信帧肯定发生了错误,并丢弃这个帧)
主要协议:CSMA/CD、PPP
典型设备:网卡、网桥、交换机
数据链路层的基本单位为:帧

物理层

物理层负责将比特流在节点间传输,即负责物理传输。该层的协议即与链路有关也与传输介质有关。
链路层的任务是将整个帧从一个网络元素移动到邻近的网络元素,而物理层的任务是将该帧中的一个一个比特从一个节点移动到下一个节点。
典型设备:集线器、中继器、双绞线
物理层的基本单位为:比特,bit。

6、TCP报文格式

TCP报文格式
首部长度,固定20字节,可变部分0~40字节

  • 端口号:用来标识同一台计算机的不同的应用进程。
    1)源端口:16bits,范围0-65535
    2)目的端口:16bits,范围0-65535

  • 序号和确认号:是TCP可靠传输的关键部分。序号是本报文段发送的数据组的第一个字节的序号。在TCP传送的流中,每一个字节一个序号。e.g.一个报文段的序号为300,此报文段数据部分共有100字节,则下一个报文段的序号为400。所以序号确保了TCP传输的有序性。确认号,即ACK,指明下一个期待收到的字节序号,表明该序号之前的所有数据已经正确无误的收到。确认号只有当ACK标志为1时才有效。比如建立连接时,SYN报文的ACK标志位为0。

  • 数据偏移/首部长度:4bits。由于首部可能含有可选项内容,因此TCP报头的长度是不确定的,报头不包含任何任选字段则长度为20字节,4位首部长度字段所能表示的最大值为1111,转化为10进制为15,15*32/8 = 60,故报头最大长度为60字节。首部长度也叫数据偏移,是因为首部长度实际上指示了数据区在报文段中的起始偏移值。

  • 保留:为将来定义新的用途保留,现在一般置0。

  • 控制位:URG 、ACK、PSH、RST、SYN、FIN,共6个,每一个标志位表示一个控制功能。
    1)URG:紧急指针标志,为1时表示紧急指针有效,为0则忽略紧急指针。
    2)ACK:确认序号标志,为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段。
    3)PSH:push标志,为1表示是带有push标志的数据,指示接收方在接收到该报文段以后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。
    4)RST:重置连接标志,用于重置由于主机崩溃或其他原因而出现错误的连接。或者用于拒绝非法的报文段和拒绝连接请求。
    5)SYN:同步序号,用于建立连接过程,在连接请求中,SYN=1和ACK=0表示该数据段没有使用捎带的确认域,而连接应答捎带一个确认,即SYN=1和ACK=1。
    6)FIN:finish标志,用于释放连接,为1时表示发送方已经没有数据发送了,即关闭本方数据流。

  • 窗口:滑动窗口大小,用来告知发送端接受端的缓存大小,以此控制发送端发送数据的速率,从而达到流量控制。窗口大小时一个16bit字段,因而窗口大小最大为65535。

  • 校验和:奇偶校验,此校验和是对整个的 TCP 报文段,包括 TCP 头部和 TCP 数据,以 16 位字进行计算所得。由发送端计算和存储,并由接收端进行验证。

  • 紧急指针:只有当 URG 标志置 1 时紧急指针才有效。紧急指针是一个正的偏移量,和顺序号字段中的值相加表示紧急数据最后一个字节的序号。 TCP 的紧急方式是发送端向另一端发送紧急数据的一种方式。

  • 选项和填充:最常见的可选字段是最长报文大小,又称为MSS(Maximum Segment Size),每个连接方通常都在通信的第一个报文段(为建立连接而设置SYN标志为1的那个段)中指明这个选项,它表示本端所能接受的最大报文段的长度。选项长度不一定是32位的整数倍,所以要加填充位,即在这个字段中加入额外的零,以保证TCP头是32的整数倍。

  • 数据部分:TCP 报文段中的数据部分是可选的。在一个连接建立和一个连接终止时,双方交换的报文段仅有 TCP 首部。如果一方没有数据要发送,也使用没有任何数据的首部来确认收到的数据。在处理超时的许多情况中,也会发送不带任何数据的报文段。

7、UDP报文格式

UDP报文格式
每个 UDP 报文分为 UDP 报头和 UDP 数据区两部分。报头由 4 个 16 位长(2 字节)字段组成,分别说明该报文的源端口、目的端口、报文长度和校验值。

  • 源端口:16bits
  • 目的端口:16bits
  • 长度:该字段占据 16 位,表示 UDP 数据报长度,包含 UDP 报文头和 UDP 数据长度。因为 UDP 报文头长度是 8 个字节,所以这个值最小为 8。
  • 校验和:该字段占据 16 位,可以检验数据在传输过程中是否被损坏。

8、TCP三次握手建立连接

TCP三次握手建立连接

  • 客户端主动打开,向服务端发送SYN=1,请求建立客户端到服务端的连接
  • 服务端被动打开,返回ACK=1给客户端,同意建立与客户端的连接。并且同时发送SYN=1,请求建立服务端到客户端的连接
  • 客户端返回ACK=1给服务端,同意建立与服务端的连接。

9、TCP四次挥手断开连接

TCP四次挥手断开连接

  • 客户端数据传输完毕,主动发送FIN=1,请求断开与服务器的连接
  • 服务端返回给客户端ACK=1,同意断开连接。但是此时可能还有之前客户端请求的数据没有返回给客户端,于是服务端先不发送断开连接的请求,而是继续传输数据
  • 服务器传输完数据之后,发送FIN=1,ACK=1,表示已经准备好释放连接了。注意:这里的ACK并不是确认收到客户端请求的确认报文
  • 客户端返回服务端ACK=1,表示确认断开与服务器的连接

10、HTTP协议

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(World Wide Web)服务器传输超文本到本地浏览器的传输协议。
HTTP基于TCP/IP通信协议来传递数据(HTML文件、图片文件、查询结果等)。
B/S(browser/server)架构的系统使用的协议为HTTP协议。浏览器作为HTTP客户端通过URL想HTTP服务端即Web服务器发送请求,Web服务器根据接收到的请求,向客户端发送响应信息
B/S架构

HTTP协议的特点

  • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。常用的请求方法有GET、HEAD、POST,每种方法规定了客户与服务器联系 的类型不同
  • 灵活:HTTP允许传输任意类型的数据对象,正在传输的类型由Content-Type加以标记
  • 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  • 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
  • 支持B/S及C/S模式:b/s即使用浏览器通过HTTP协议和服务器通信,c/s即在其他软件中编程实现和服务器的HTTP通信

HTTP之URL

URL,全称是UniformResourceLocator, 中文叫统一资源定位符,是互联网上用来标识某一处资源的地址。
以下面这个URL为例,介绍下普通URL的各部分组成:
URL组成

HTTP之请求消息Request

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。
HTTP请求消息
GET请求方式举例
GET请求消息举例
POST请求方式举例
POST请求方式举例
HTTP可以使用多种请求方法
HTTP请求方法
HTTP请求方法

GET和POST

PHP通过GET和POST获取客户端发送的数据

相同点

  • GET 和 POST都可以创建数组。例如:array( key => value, key1 => value1, key2 => value2, …)此数组包含键/值对,其中的键是表单控件的名称,而值是来自用户的输入数据。
  • GET和 POST通常被视作 G E T 和 _GET和 GET_POST,是超全局变量,这意味着对它们的访问无需考虑作用域 ,无需任何特殊代码,能够从任何函数、类或文件访问它们。

不同点

  • P O S T 是 通 过 H T T P P O S T 传 递 到 当 前 脚 本 的 变 量 数 组 。 _POST是通过HTTP POST传递到当前脚本的变量数组。 POSTHTTPPOST_GET是通过URL参数传递到当前脚本的变量数组。
  • GET可以直接在地址栏中看到,修改。POST必须使用工具来查看内容。
  • GET请求方法传递的数据量相对较少,一般情况下不超过2KB;POST请求方式传递的数据量较大具体数值由服务器设置决定。

HTTP之响应消息Response

一般情况下,服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息。
HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
HTTP响应消息

状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:

1)1xx:指示信息--表示请求已接收,继续处理
2)2xx:成功--表示请求已被成功接收、理解、接受
3)3xx:重定向--要完成请求必须进行更进一步的操作
4)4xx:客户端错误--请求有语法错误或请求无法实现
5)5xx:服务器端错误--服务器未能实现合法的请求

常见的状态码有,200(OK),302(临时重定向),304(未修改),400(语法错误),403(服务器拒绝请求),404(未找到),500(服务器内部错误)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值