Http协议

请仔细自行搜索(请求响应方式, 具体格式 等 , 特别了解里面的Cookie, Session个人觉得很重要)
特点:

  1. 请求应答模式
    (注意:2.0版本后, 即使客户端没有发送request, 服务端也是可以推送的)
  2. 灵活可扩展
    (例如插入的数据类型等只要约定好了都是可以传输的)
  3. 可靠传输(http是工作在应用层的, 而应用层下面是传输层(基于TCP协议,三次握手,四次挥手),所以还是很可靠的)
  4. 无状态stateless(就是说服务器来说,即使你之前打开过很多相同的页面,它也是不知道你之前干过啥的)

注意
cookie 的诞生是为了解决 无状态的问题的, 它的特点包括:

明文(想看就看) , 可修改, 大小限制(cookie大小收到浏览器的限制)
session是基于cookie的,只不过比cookie短,通过发送的key,value来标记校验.
cookie保存在客户端, session保存在服务端.

通过了解http协议, 尤其是其中的cookie和session, 现在有一个简单想法, 如果拿到别人的cookie, 将它导入自己的浏览器这样不就可以对别人的账号进行操作吗?

:
cookie是不能跨浏览器的, 也不能跨域名使用的, 不同的浏览器都是各管各的cookie.

介绍浏览器插件: cookie-editor 很方便的导出和导入cookie.

Xss渗透和防御_搜索

点击 Export 就会直接导入到剪切板, 找个能粘贴的地方 paste 就可以看到了.

了解cookie的确很重要

基于JavaScript可以自行简单操作:

具体如下:

Xss渗透和防御_xss_02

接着

Xss渗透和防御_xss_03


刷新一下页面

可以看到成功写入想要写入的cookie.

Xss渗透和防御_数据库_04

介绍一个插件 Hackbar , 便于注入脚本, (检查网页的时候就可以用到. 当然可能用到的插件不太一样.)

Xss渗透和防御_Desktop_05


 

Xss(cross site script 跨站脚本)

简介:
就像上面那样, 利用像js, java, vbscript, flash等, 利用这样的Web漏洞, 当用户登录账号的时候顺带执行已经注入的恶意代码,从而达到攻击的目的.

分类:

xss可分为 反射型存储型 两种.

反射型

  1. 恶意用户发送带有恶意代码的链接
  2. 当正常的用户点击链接发送请求后, 服务器会对请求做出响应和一些处理,连带着恶意脚本也处理了.
  3. 处理的恶意脚本能实现的功能是: 将正常用户的cookie发送到 恶意用户那里, 从而恶意用户可以借用他人用户登录了.

但是这种链接是点击一次执行一次脚本, 并不能长久的维持

存储型
和反射型类似, 但是, 不同的是当用户点击链接后, 恶意代码会被存储到服务器的数据库中, 这样就可以长久的运行恶意代码了.

还有一种DOM型, 它是基于html来搞事情的.

DVWA的简单演示

首先搭建好dvwa靶场:
​​​https://qiudaogongshu.top/archives/dvwa靶场搭建​

反射型(Reflected型)

low级别

输入:
![image.png](C:\Users\2892706668\Desktop\halo-backup-markdown-2023-01-12-16-10-12-2116279541 (2)/upload/2022/12/image-f7f8b060b8b0450bbf490332f120d312.png)

Xss渗透和防御_xss_06



Xss渗透和防御_搜索_07


成功!

medium级别

如果还输入上方的东西

Xss渗透和防御_xss_08


那么



Xss渗透和防御_数据库_09



Xss渗透和防御_xss_10

对应方法:

  1. 替换大小写; 输入
    ![image.png](C:\Users\2892706668\Desktop\halo-backup-markdown-2023-01-12-16-10-12-2116279541 (2)/upload/2022/12/image-94642a7ff83a465aad97b0d524f66c12.png)
  2. 还可以通过 写两遍 script 标签来实现绕过.

最后都成功了

hight级别

此时, 小写,双写都不行. 源码中使用了正则表达式, 至少要是能拼成script的都不行.

Xss渗透和防御_数据库_11

方法: 换标签
例如: ![image.png](C:\Users\2892706668\Desktop\halo-backup-markdown-2023-01-12-16-10-12-2116279541 (2)/upload/2022/12/image-66e678447e124260bf6a90a5a4c1b15c.png)
这里通过image标签进行绕过.

impossible级别

利用了 htmlspecialchars 进行防御. 起码当独立用一个漏洞是不行的

存储型(Stored)

此处借助Navigate 来观察, 具体连接如下

Xss渗透和防御_搜索_12


依次点击:



Xss渗透和防御_数据库_13

low级别

输入: 同上方反射型的script标签, 就可以成功, 此处输入了两次 一个是123, 一个是123456, 从数据库中可以看到 的确是被存储了. (注意 我将原本的评论给clear了, navigate记得刷新才能看到存储的数据)

Xss渗透和防御_数据库_14

被存储进数据库并执行了, 就代表成功了'

以此类推, 要注意的是 看清后面的关卡对 name 进行绕过的, 而不是 评论message. 必要时, 鼠标右键检查, 修改页面上的input长度

 
 

Pikachu靶场

简单使用

Xss渗透和防御_xss_15


同样的输入![image.png](C:\Users\2892706668\Desktop\halo-backup-markdown-2023-01-12-16-10-12-2116279541 (2)/upload/2022/12/image-832f7f44d1a04b889e9371e633869397.png)

这里有输入的长度限制, 还是要 鼠标右键----检查网页,修改 maxlength

成功

Xss渗透和防御_Desktop_16

在搜索框中输入:

Xss渗透和防御_数据库_17


此时界面:虽然没啥反应但是,通过这段代码的确可以拿到cookie.


借助navigate连接pikachu用到的数据库, 就可以看到了



Xss渗透和防御_搜索_18

**可以尝试,输入 kobe , 虽然是正确的输入,但取得是没有显示cookie. 所以本次成功.

当然一个更加方便的查看方法就是通过XSS后台来看**

Xss渗透和防御_Desktop_19

剩下的关卡就靠自己了.

其他Xss平台介绍

除了dvwa , pikachu, 还可以
直接网上搜索 XSS平台 , 有线上的平台,不过有些项目可能要收费
还可以 在一些较早的kali版本中输入 beef-xss , 然后按照黑窗口的只是安全就行, (基本上都是输入 y),
使用beef的时候, 如果是在虚拟机里面进行操作的, 没有出现网页的弹窗, 需要在浏览器中安装一个插件

Xss渗透和防御_数据库_20

.

还有一个比较有趣味性的靶场 : xss-labs , 需要自己在电脑上搭建, 一共20关.

Xss检测和利用

思路

其实就是自己准备一些脚本在输入框中进行输入提交, 如果成功那就有呗
方法: 自己写还是有些麻烦, 人们可以利用一些工具:

Xsser()

参数可以参考​​https://blog.csdn.net/gao646467783/article/details/113249158​

Xsstrike

这个需要到GitHub上下载, kali里面不提供自动安装的

Xss的简单防御

原理:

  1. 对于输入来说: 可通过正则表达式来对一些脚本语言进行识别, 对于识别出来的东西进行改动就可以了
  2. 对于输出来说: 不能只能像document.write(), php里面的echo等函数一样简单的输出, 要想一些阻碍的办法.

工具:

WAF-----------> web application firewall
例如:
modsucurity (这是一个免费的)
​​​http://modsecurity.cn/​​​ 还有应将的waf, 阿里云,腾讯等都有卖的waf.
当启动waf后, 请求会想交给waf, 只有通过waf了,才放行,否则waf会把请求给进制掉.