目录
- 基本网络思维模型
- TCP&UDP 笔记
- XSS 备忘录
- SSRF 备忘录
- 逻辑漏洞备忘录
- 上传漏洞备忘录
- PHP 远程代码执行备忘录
- 引用XXE 外部实体注入
- RCE_bypass 笔记
0x1 基本网络思维模型
1.1 技术架构CS(Client/Server)
Client
指的是客户端,我们每个人的电脑都可以当做一个客户端,日常的一些上网,使用谷歌浏览器搜索东西,打开视频软件浏览视频,打开音乐播放器下载歌曲…这些操作都是要与远方的另一台电脑进行通信的,远方的那台计算机称为服务器(Server)
。1.2 技术架构BS(Browser/Server)
通过浏览器访问服务器端的都可以称为BS架构。
Tips:通常的话 BS
架构也是在 CS
架构里面的,但是因为互联网发展迅速,更新换代太快,所以单独将 BS
架构这块分了出来。
1.3 HTTP请求头
协议头 | 说明 |
---|---|
X-Forwarded-For | 用来表示 HTTP 请求端真实 IP |
Accept | 可接受的响应内容类型(Content-Types) |
Accept-Charset | 可接受的字符集 |
Accept-Encoding | 可接受的响应内容的编码方式 |
Accept-Language | 可接受的响应内容语言列表 |
Accept-Datetime | 可接受的按照时间来表示的响应内容版本 |
Cookie | 由之前服务器通过Set-Cookie(见下文)设置的一个HTTP协议Cookie |
Content-Length | 以8进制表示的请求体的长度 |
Content-MD5 | 请求体的内容的二进制 MD5 散列值(数字签名),以 Base64 编码的结果 |
Content-Type | 请求体的MIME类型 (用于POST和PUT请求中) |
Date | 发送该消息的日期和时间 |
Expect | 表示客户端要求服务器做出特定的行为 |
From | 发起此请求的用户的邮件地址 |
Host | 表示服务器的域名以及服务器所监听的端口号。 |
Origin | 发起一个针对跨域资源共享的请求(该请求要求服务器在响应中加入一个Access-Control-Allow-Origin的消息头,表示访问控制所允许的来源)。 |
Range | 表示请求某个实体的一部分,字节偏移以0开始。 |
Referer | 表示浏览器所访问的前一个页面,可以认为是之前访问页面的链接将浏览器带到了当前页面。 |
User-Agent | 浏览器的身份标识字符串 |
1.4 HTTP响应头
| 响应头 | 说明 |
| ————————— | ———————————————————— | —-
| Access-Control-Allow-Origin | 指定哪些网站可以跨域源资源共享
| Accept-Patch | 指定服务器所支持的文档补丁格式
| Accept-Ranges | 服务器所支持的内容范围
| Age | 响应对象在代理缓存中存在的时间,以秒为单位
| Allow | 对于特定资源的有效动作;
| Cache-Control | 通知从服务器到客户端内的所有缓存机制,表示它们是否可以缓存这个对象及缓存有效时间。其单位为秒 |
| Connection | 针对该连接所预期的选项
| Content-Disposition | 对已知MIME类型资源的描述,浏览器可以根据这个响应头决定是对返回资源的动作,如:将其下载或是打开。
| Content-Encoding | 响应资源所使用的编码类型。
| Content-Language | 响应内容所使用的语言
| Content-Length | 响应消息体的长度,用8进制字节表示
| Content-Location | 所返回的数据的一个候选位置
| Content-Type | 当前内容的MIME类型
| Date | 此条消息被发送时的日期和时间
| Location | 用于在进行重定向,或在创建了某个新资源时使用。
| Proxy-Authenticate | 要求在访问代理时提供身份认证信息。
| Refresh | 用于重定向,或者当一个新的资源被创建时。默认会在5秒后刷新重定向。
| Server | 服务器的名称
| Set-Cookie | 设置HTTP cookie
| Status | 通用网关接口的响应头字段,用来说明当前HTTP连接的响应状态。
| Trailer | Trailer用户说明传输中分块编码的编码信息
| Transfer-Encoding | 用表示实体传输给用户的编码形式。包括:chunked、compress、 deflate、gzip、identity。
1.5 HTTP请求方式
GET\POST\PUT\COPY\DELETE\OPTIONS\PATCH
1.6 HTTP常见状态码
200、301、302、500、404、403、502
1.7 GET和POST的区别
浏览器限制GET
接收的的长度,但是不限制POST
提交的长度,POST
提交的长度取决于服务器。
数据接收方式
GET
请求接收的方式是通过浏览器的地址栏来接收的,而POST
是通过表单隐藏式的提交数据。
1.8 局域网的简单通信(数据链路层)
- 一般局域网都是通过交换机/路由器进行通信。
- 很早之前的网络大部分是通过HUB(集线器)进行通信。
- 缺点就是主机发送的数据包都会被其他的主机接收到,这个过程称为泛洪。
- 交换机在此基础上进行了改进,使其变得更安全,同样也保留了HUB的一些功能。
- 局域网通过MAC地址表来进行数据通信。
1.9 交换机主机通信过程
- 交换机
ARP
广播 PC
计算机接收响应- 发送数据 —> 交换机转发并记录
MAC
地址 - 如果交换机的
MAC
表被填满,将会泛洪(ARP
毒化) ARP
欺骗 —> 伪造MAC
地址来进行欺骗的效果
Tips:有些交换机重启的时候会清空MAC
地址表。
0x2 TCP&UDP
1. 知名端口
系统程序所使用的端口号
1 |
|
2. 动态端口
动态端口的范围时 1024-65535,当服务或者程序关闭时也就释放了所占用的端口
1 |
|
3.查看端口
1 |
|
Tips:如果该服务不属于当前的用户,需要sudo
权限(root)
4.UDP协议
UDP
发送数据之前不需要建立连接
特点:
- 无连接
- 资源开销小
- 传输速度快
- udp每个数据包最大64k
优点:
- 传输速度快
- 不需要连接,资源开销小
缺点
传输数据不可靠,容易丢数据包,没有流量控制,当对方没有及时接受数据,发送方一直发送数据包会导致缓冲区数据溢出,电脑出现卡死情况,所有接受方需及时接受数据。
UDP 使用场景
当对网络通讯质量要求不高的时候,要求网络通讯速度尽量的快。
例如 :
- 音视频传输
- 共享屏幕软件
- 发送广播消息
特点:
- 无连接
- 资源开销小
- 传输速度快
- udp每个数据包最大64k
Python socket
1 |
|
5.TCP协议
面向连接
通信双方必须先建立连接才进行数据的传输,双方都必须为该连接分配必要的系统内核资源,以管理连接的状态和连接上的传输,双方间的数据传输都可以用过这一个连接进行,完成数据交换后,双方必须断开此连接,以释放系统资源,这种连接是一对一的,因此TCP
不适合于广播的应用程序,基于广播的程序请使用UDP协议。
可靠传输
tcp 采用发送应答机制
tcp
发送的每一条报文段必须得到接收方的应答才认为这个tcp
报文段传输成功超时重传
发送端发出一个报文之后启动定时器,如果在定时时间内没有收到应答就重新发送这个报文段
错误效验
检测数据到发送端到接收端之间是否有改动,直接丢弃这个数据包
流量控制和阻塞管理
流量控制用来避免主机发送得过快而使接收方来不及完全收下。
TCP 使用场景
当对网络通讯质量有要求的时候,比如 HTTP
,HTTPS
,FTP
等网络传输协议,POP
,STMTP
等邮件传输协议。
0x3 XSS
XSS 又叫CSS (Cross Site Script) , 跨站脚本攻击。以下为学习《心伤的瘦子XSS系列》的个人笔记,和其他总结的内容。
1. 一个普通反射型的XSS
1 |
|
2. HTML编码
1 |
|
Tips: 这三个是标签是相等的,都为 http://
,其中 Hex 是十六进制编码,Dec 是十进制编码。
这种编码在 html 执行的前提是,必须在值里例如:
1 |
|
3. Unicode编码
Js中是允许使用 unicode编码的。
1 |
|
4. CSS编码
使用 Unicode 写中文字体名称,浏览器是可以正确的解析的。
例如:font-family: “5FAE8F6F96C59ED1”,表示设置字体为“微软雅黑”。
CSS 中 expression 用来把CSS属性和Javascript表达式关联起来。
1 |
|
Tips: 但是这种的只能在IE6 , IE7 中才会触发。
5. 宽字节
Gbxxx系列编码。
1 |
|
6. eval(string) 函数
eval 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
1 |
|
7. fromcharcode() 函数
可接受指定的unicode编码的值,返回字符串,可以配合eval函数使用。
1 |
|
8. 伪协议
1 |
|
9. URL编码
1 |
|
10. JS 多行字符串
1 |
|
11. JS特性
1 |
|
Javascript 是从上到下按顺序执行的。
1 |
|
12. 注释符
1 |
|
13. HTML属性
当元素失去焦点时发生的事件,按下tab键触发js。
1 |
|
当元素获得焦点时发生的事件,按下tab键触发js。
1 |
|
14. JS 黑魔法
1.jjencode –将JS代码转换成只有符号的字符串。
1 |
|
2.aaencode –将JS代码转换成常用的网络表情。
1 |
|
3.Jsfuck –使用六个不同的字符来编写和执行代码。
1 |
|
15. 常用绕过 Payload
1 |
|
- 本文标题:web安全备忘录
- 本文作者:Roy
- 创建时间:2020-06-18 23:23:03
- 本文链接:https://www.yrzdm.com/2020/06/18/network-security-basic/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!