-
Notifications
You must be signed in to change notification settings - Fork 260
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
30c742e
commit 7320256
Showing
63 changed files
with
1,561 additions
and
1,181 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,61 +1,66 @@ | ||
# CSS劫持攻击 | ||
`CSS`劫持是一种并不很受重视的劫持方式,但是其也有一定的危害,且由于其并不一定需要依赖`JavaScript`,这使得此种攻击方式更容易实现。 | ||
|
||
## ClickJacking点击劫持 | ||
当访问某网站时,利用`CSS`将攻击者实际想让你点击的页面进行透明化隐藏,然后在页面后显示 一些东西诱导让你点击,点击后则会在用户毫不知情的情况下做了某些操作,这就是点击劫持`ClickJacking`。 | ||
|
||
### iframe覆盖 | ||
假如现在我们有个贴吧,想让人关注,可以构造一个钓鱼页面,诱导用户点击,实际上攻击者想要用户点击的关注页面是个透明的,用户如果在网页端登录了贴吧,就会在毫不知情的情况下关注了贴吧,这属于危害较小的情况,若是搭配一些表单诱导用户在页面输入某些敏感信息甚至可以构成财产损失的情况。 | ||
|
||
```html | ||
<!DOCTYPE HTML> | ||
<html> | ||
<meta content="text/html; charset=utf8" /> | ||
<head> | ||
<title>ClickJacking点击劫持</title> | ||
<style> | ||
html,body,iframe{ | ||
display: block; | ||
height: 100%; | ||
width: 100%; | ||
margin: 0; | ||
padding: 0; | ||
border:none; | ||
} | ||
iframe{ | ||
opacity:0.2; | ||
position:absolute; | ||
z-index:2; | ||
} | ||
div{ | ||
display: flex; | ||
justify-content: space-around; | ||
position:absolute; | ||
top: 335px; | ||
left: 310px; | ||
z-index: 1; | ||
width: 300px; | ||
height: 26px; | ||
} | ||
</style> | ||
</head> | ||
<body> | ||
<!-- 例子中的按钮位置是写定的,在不同分辨率下并不一定合适,应该动态确定按钮位置,但是作为一个Demo就不作过多操作了 --> | ||
<div>那些不能说的秘密<button>查看详情</button></div> | ||
<iframe src="https://tieba.baidu.com/f?kw=%E6%96%97%E7%A0%B4%E8%8B%8D%E7%A9%B9%E5%8A%A8%E6%BC%AB"></iframe> | ||
</body> | ||
</html> | ||
``` | ||
### 防御 | ||
`X-FRAME-OPTIONS`是目前最可靠的方法。 | ||
`X-FRAME-OPTIONS`是微软提出的一个`HTTP`头,专门用来防御利用`iframe`嵌套的点击劫持攻击。 | ||
``` | ||
DENY // 拒绝任何域加载 | ||
SAMEORIGIN // 允许同源域下加载 | ||
ALLOW-FROM // 可以定义允许frame加载的页面地址 | ||
``` | ||
|
||
|
||
## CSS劫持流量 | ||
关于诱导用户点击进入网站的操作,利用`CSS`劫持也不失为一个好的思路,无论是论坛,还是邮件都有一个富文本编辑器,如果网站并未注意此种攻击方式并特殊处理,便很容易被利用。 | ||
将富文本插入一个链接,在正常情况下应该是`<a href="xxx"></a>`,假如我们为其赋予一个样式,或者将其内部包裹一个字体的样式,将样式设置为`display: block;z-index: 100000;position: fixed;top: 0;left: 0;width: 1000000px;height: 100000px;`,也是就是让链接作为块级元素充满整个屏幕,则用户无论点击页面中的任何地方都会跳转到你指定的页面,这就将流量劫持到了你的页面,若用户并未注意到`url`的改变,还可以在跳转的新页面进行钓鱼。 | ||
# CSS劫持攻击 | ||
`CSS`劫持是一种并不很受重视的劫持方式,但是其也有一定的危害,且由于其并不一定需要依赖`JavaScript`,这使得此种攻击方式更容易实现。 | ||
|
||
## ClickJacking点击劫持 | ||
当访问某网站时,利用`CSS`将攻击者实际想让你点击的页面进行透明化隐藏,然后在页面后显示 一些东西诱导让你点击,点击后则会在用户毫不知情的情况下做了某些操作,这就是点击劫持`ClickJacking`。 | ||
|
||
### iframe覆盖 | ||
假如现在我们有个贴吧,想让人关注,可以构造一个钓鱼页面,诱导用户点击,实际上攻击者想要用户点击的关注页面是个透明的,用户如果在网页端登录了贴吧,就会在毫不知情的情况下关注了贴吧,这属于危害较小的情况,若是搭配一些表单诱导用户在页面输入某些敏感信息甚至可以构成财产损失的情况。 | ||
|
||
```html | ||
<!DOCTYPE HTML> | ||
<html> | ||
<meta content="text/html; charset=utf8" /> | ||
<head> | ||
<title>ClickJacking点击劫持</title> | ||
<style> | ||
html,body,iframe{ | ||
display: block; | ||
height: 100%; | ||
width: 100%; | ||
margin: 0; | ||
padding: 0; | ||
border:none; | ||
} | ||
iframe{ | ||
opacity:0.2; | ||
position:absolute; | ||
z-index:2; | ||
} | ||
div{ | ||
display: flex; | ||
justify-content: space-around; | ||
position:absolute; | ||
top: 335px; | ||
left: 310px; | ||
z-index: 1; | ||
width: 300px; | ||
height: 26px; | ||
} | ||
</style> | ||
</head> | ||
<body> | ||
<!-- 例子中的按钮位置是写定的,在不同分辨率下并不一定合适,应该动态确定按钮位置,但是作为一个Demo就不作过多操作了 --> | ||
<div>那些不能说的秘密<button>查看详情</button></div> | ||
<iframe src="https://tieba.baidu.com/f?kw=%E6%96%97%E7%A0%B4%E8%8B%8D%E7%A9%B9%E5%8A%A8%E6%BC%AB"></iframe> | ||
</body> | ||
</html> | ||
``` | ||
### 防御 | ||
`X-FRAME-OPTIONS`是目前最可靠的方法。 | ||
`X-FRAME-OPTIONS`是微软提出的一个`HTTP`头,专门用来防御利用`iframe`嵌套的点击劫持攻击。 | ||
``` | ||
DENY // 拒绝任何域加载 | ||
SAMEORIGIN // 允许同源域下加载 | ||
ALLOW-FROM // 可以定义允许frame加载的页面地址 | ||
``` | ||
|
||
## CSS劫持流量 | ||
关于诱导用户点击进入网站的操作,利用`CSS`劫持也不失为一个好的思路,无论是论坛,还是邮件都有一个富文本编辑器,如果网站并未注意此种攻击方式并特殊处理,便很容易被利用。 | ||
将富文本插入一个链接,在正常情况下应该是`<a href="xxx"></a>`,假如我们为其赋予一个样式,或者将其内部包裹一个字体的样式,将样式设置为`display: block;z-index: 100000;position: fixed;top: 0;left: 0;width: 1000000px;height: 100000px;`,也是就是让链接作为块级元素充满整个屏幕,则用户无论点击页面中的任何地方都会跳转到你指定的页面,这就将流量劫持到了你的页面,若用户并未注意到`url`的改变,还可以在跳转的新页面进行钓鱼。 | ||
|
||
## 每日一题 | ||
|
||
``` | ||
https://github.com/WindrunnerMax/EveryDay | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,47 +1,54 @@ | ||
# HTTPS加密传输过程 | ||
`HTTPS`全称`Hyper Text Transfer Protocol over SecureSocket Layer`,是以安全为目标的`HTTP`通道,在`HTTP`的基础上通过传输加密和身份认证保证了传输过程的安全性。`HTTPS`在`HTTP`的基础下加入`SSL`层,`HTTPS`的安全基础是`SSL`,因此加密的详细内容就需要`SSL`。 | ||
|
||
## 知识储备 | ||
### HTTP | ||
`HTTP`是应用层协议,默认运行在`80`端口,是一种不安全的传输协议,经其传输的数据都是未加密的明文数据,可以被中间人攻击,获取到你的网络传输数据,这也就是尽量不要使用公共场所`WIFI`的原因。 | ||
|
||
### HTTPS | ||
`HTTPS`是应用层协议,默认运行在`443`端口,是一种安全的传输协议,通过在`HTTP`层与运输层的`TCP`直接加入一个加密/身份验证层来保证安全传输。 | ||
|
||
### SSL | ||
`SSL`安全套接层`Secure Sockets Layer`,位于`TCP/IP`协议与各种应用层协议之间,为数据通讯提供安全支持。`SSL`协议可分为两层: | ||
`SSL`记录协议`SSL Record Protocol`:它建立在可靠的传输协议如`TCP`之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 | ||
`SSL`握手协议`SSL Handshake Protocol`:它建立在`SSL`记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。 | ||
|
||
### TLS | ||
`TLS`传输层安全性协议`Transport Layer Security`用于在两个通信应用程序之间提供保密性和数据完整性,其由`TLS`记录协议和`TLS`握手协议组成。`TLS1.0`即为`SSL3.0`的标准化版本,`SSL`最初由网景`Netscape`提出研发,在`SSL3.0`时由国际互联网工程任务组`IETF`进行了标准化并添加了少量机制,并更名为`TLS1.0`。 | ||
|
||
### 对称加密 | ||
简单来说对称加密的加密密钥和解密密钥是相同的,对称加密的效率要比非对称加密高。 | ||
|
||
### 非对称加密 | ||
简单来说非对称加密的加密密钥与解密密钥是不同的,需要一把公钥与一把私钥,私钥不能被其他任何人知道,公钥则可以随意公开。公钥加密,私钥解密;私钥数字签名,公钥验证。 | ||
|
||
### CA | ||
由于公钥是放在服务器的,在建立连接的过程中将公钥传输到用户,但是如何避免中间人攻击,即在传输公钥的过程中避免劫持,于是引入第三方认证权威机构`CA`,大多数操作系统的`CA`证书是默认安装的,`CA`也拥有一个公钥和私钥。任何人都可以得到`CA`的证书,其包含公钥,用以验证它所签发的证书。`CA`为服务申请者颁发证书,在`CA`判明申请者的身份后,便为他分配一个公钥,并且`CA`将该公钥与申请者的身份信息绑在一起,并为之签字后,便形成证书发给申请者。如果一个用户想鉴别一个证书的真伪,他就用`CA`的公钥对那个证书上的签字进行验证,一旦验证通过,该证书就被认为是有效的。证书实际是由证书签证机关`CA`签发的对用户的公钥的认证。 | ||
|
||
|
||
## 传输过程 | ||
1. 首先`TCP`三次握手建立链接,这是数据传输基础,在此之上开始`SSL` | ||
2. 客户端首先发送`Client Hello`开始`SSL`通信,报文中包含客户端支持的`SSL`版本、随机值`Random1`、加密算法以及密钥长度等。 | ||
3. 服务器发送`Server Hello`,和客户端一样,在报文中包含`SSL`版本、随机值`Random2`以及加密组件,此后服务端将证书也发送到客户端。 | ||
4. 此时客户端需要对服务端发送的证书进行验证,通过操作系统内置的`CA`证书,将服务器发送的证书的数字签名进行解密,并将证书的公钥进行相同算法的`HASH`与解密的数字签名解密的内容进行对比,验证证书是否合法有效,是否被劫持更换。 | ||
5. 客户端验证证书合法,然后生成一个随机值`Random3`,用公钥对`Random3`进行加密,生成`Pre-Master Key`,客户端以`Client Key Exchange`报文将`Pre-Master Key`发送到服务端,此后发送`Change Cipher Spec`报文表示此后数据传输进行加密传输。 | ||
6. 服务端将`Pre-Master Key`用自己的私钥解密为`Random3`,服务端发送`Change Cipher Spec`报文表示此后数据传输进行加密传输。 | ||
7. 此时客户端与服务端都拥有三个随机字符串,且`Random3`是密文传输的,是安全状态的,此时则可以使用这三个字符串进行对称加密传输。由于非对称加密慢,不能每次传输数据都进行非对称加密,所以使用非对称加密将密钥协商好然后使用对称加密进行数据传输。 | ||
8. 此时便正常进行`HTTP`数据传输,但是由于`SSL`加密的作用,此时的`HTTP`传输便是安全的,此为`HTTPS`的传输过程,其中`2`、`3`、`5`、`6`也被称为`SSL`四次握手。 | ||
|
||
## 参考 | ||
|
||
``` | ||
https://www.cnblogs.com/yangtianle/p/11202574.html | ||
https://www.cnblogs.com/liyulong1982/p/6106132.html | ||
https://blog.csdn.net/lyztyycode/article/details/81259284 | ||
https://blog.csdn.net/lihuang319/article/details/79970774 | ||
https://blog.csdn.net/qq_32998153/article/details/80022489 | ||
``` | ||
# HTTPS加密传输过程 | ||
`HTTPS`全称`Hyper Text Transfer Protocol over SecureSocket Layer`,是以安全为目标的`HTTP`通道,在`HTTP`的基础上通过传输加密和身份认证保证了传输过程的安全性。`HTTPS`在`HTTP`的基础下加入`SSL`层,`HTTPS`的安全基础是`SSL`,因此加密的详细内容就需要`SSL`。 | ||
|
||
## 知识储备 | ||
### HTTP | ||
`HTTP`是应用层协议,默认运行在`80`端口,是一种不安全的传输协议,经其传输的数据都是未加密的明文数据,可以被中间人攻击,获取到你的网络传输数据,这也就是尽量不要使用公共场所`WIFI`的原因。 | ||
|
||
### HTTPS | ||
`HTTPS`是应用层协议,默认运行在`443`端口,是一种安全的传输协议,通过在`HTTP`层与运输层的`TCP`直接加入一个加密/身份验证层来保证安全传输。 | ||
|
||
### SSL | ||
`SSL`安全套接层`Secure Sockets Layer`,位于`TCP/IP`协议与各种应用层协议之间,为数据通讯提供安全支持。`SSL`协议可分为两层: | ||
`SSL`记录协议`SSL Record Protocol`:它建立在可靠的传输协议如`TCP`之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 | ||
`SSL`握手协议`SSL Handshake Protocol`:它建立在`SSL`记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。 | ||
|
||
### TLS | ||
`TLS`传输层安全性协议`Transport Layer Security`用于在两个通信应用程序之间提供保密性和数据完整性,其由`TLS`记录协议和`TLS`握手协议组成。`TLS1.0`即为`SSL3.0`的标准化版本,`SSL`最初由网景`Netscape`提出研发,在`SSL3.0`时由国际互联网工程任务组`IETF`进行了标准化并添加了少量机制,并更名为`TLS1.0`。 | ||
|
||
### 对称加密 | ||
简单来说对称加密的加密密钥和解密密钥是相同的,对称加密的效率要比非对称加密高。 | ||
|
||
### 非对称加密 | ||
简单来说非对称加密的加密密钥与解密密钥是不同的,需要一把公钥与一把私钥,私钥不能被其他任何人知道,公钥则可以随意公开。公钥加密,私钥解密;私钥数字签名,公钥验证。 | ||
|
||
### CA | ||
由于公钥是放在服务器的,在建立连接的过程中将公钥传输到用户,但是如何避免中间人攻击,即在传输公钥的过程中避免劫持,于是引入第三方认证权威机构`CA`,大多数操作系统的`CA`证书是默认安装的,`CA`也拥有一个公钥和私钥。任何人都可以得到`CA`的证书,其包含公钥,用以验证它所签发的证书。`CA`为服务申请者颁发证书,在`CA`判明申请者的身份后,便为他分配一个公钥,并且`CA`将该公钥与申请者的身份信息绑在一起,并为之签字后,便形成证书发给申请者。如果一个用户想鉴别一个证书的真伪,他就用`CA`的公钥对那个证书上的签字进行验证,一旦验证通过,该证书就被认为是有效的。证书实际是由证书签证机关`CA`签发的对用户的公钥的认证。 | ||
|
||
|
||
## 传输过程 | ||
1. 首先`TCP`三次握手建立链接,这是数据传输基础,在此之上开始`SSL` | ||
2. 客户端首先发送`Client Hello`开始`SSL`通信,报文中包含客户端支持的`SSL`版本、随机值`Random1`、加密算法以及密钥长度等。 | ||
3. 服务器发送`Server Hello`,和客户端一样,在报文中包含`SSL`版本、随机值`Random2`以及加密组件,此后服务端将证书也发送到客户端。 | ||
4. 此时客户端需要对服务端发送的证书进行验证,通过操作系统内置的`CA`证书,将服务器发送的证书的数字签名进行解密,并将证书的公钥进行相同算法的`HASH`与解密的数字签名解密的内容进行对比,验证证书是否合法有效,是否被劫持更换。 | ||
5. 客户端验证证书合法,然后生成一个随机值`Random3`,用公钥对`Random3`进行加密,生成`Pre-Master Key`,客户端以`Client Key Exchange`报文将`Pre-Master Key`发送到服务端,此后发送`Change Cipher Spec`报文表示此后数据传输进行加密传输。 | ||
6. 服务端将`Pre-Master Key`用自己的私钥解密为`Random3`,服务端发送`Change Cipher Spec`报文表示此后数据传输进行加密传输。 | ||
7. 此时客户端与服务端都拥有三个随机字符串,且`Random3`是密文传输的,是安全状态的,此时则可以使用这三个字符串进行对称加密传输。由于非对称加密慢,不能每次传输数据都进行非对称加密,所以使用非对称加密将密钥协商好然后使用对称加密进行数据传输。 | ||
8. 此时便正常进行`HTTP`数据传输,但是由于`SSL`加密的作用,此时的`HTTP`传输便是安全的,此为`HTTPS`的传输过程,其中`2`、`3`、`5`、`6`也被称为`SSL`四次握手。 | ||
|
||
## 每日一题 | ||
|
||
``` | ||
https://github.com/WindrunnerMax/EveryDay | ||
``` | ||
|
||
|
||
## 参考 | ||
|
||
``` | ||
https://www.cnblogs.com/yangtianle/p/11202574.html | ||
https://www.cnblogs.com/liyulong1982/p/6106132.html | ||
https://blog.csdn.net/lyztyycode/article/details/81259284 | ||
https://blog.csdn.net/lihuang319/article/details/79970774 | ||
https://blog.csdn.net/qq_32998153/article/details/80022489 | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.