Http协议
请仔细自行搜索(请求响应方式, 具体格式 等 , 特别了解里面的Cookie, Session个人觉得很重要)
特点:
- 请求应答模式
(注意:2.0版本后, 即使客户端没有发送request, 服务端也是可以推送的) - 灵活可扩展
(例如插入的数据类型等只要约定好了都是可以传输的) - 可靠传输(http是工作在应用层的, 而应用层下面是传输层(基于TCP协议,三次握手,四次挥手),所以还是很可靠的)
- 无状态stateless(就是说服务器来说,即使你之前打开过很多相同的页面,它也是不知道你之前干过啥的)
注意
cookie 的诞生是为了解决 无状态的问题的, 它的特点包括:
明文(想看就看) , 可修改, 大小限制(cookie大小收到浏览器的限制)
session是基于cookie的,只不过比cookie短,通过发送的key,value来标记校验.
cookie保存在客户端, session保存在服务端.
通过了解http协议, 尤其是其中的cookie和session, 现在有一个简单想法, 如果拿到别人的cookie, 将它导入自己的浏览器这样不就可以对别人的账号进行操作吗?
注:
cookie是不能跨浏览器的, 也不能跨域名使用的, 不同的浏览器都是各管各的cookie.介绍浏览器插件: cookie-editor 很方便的导出和导入cookie.
点击 Export 就会直接导入到剪切板, 找个能粘贴的地方 paste 就可以看到了.
了解cookie的确很重要
基于JavaScript可以自行简单操作:
具体如下:
接着
刷新一下页面
可以看到成功写入想要写入的cookie.
介绍一个插件 Hackbar , 便于注入脚本, (检查网页的时候就可以用到. 当然可能用到的插件不太一样.)
Xss(cross site script 跨站脚本)
简介:
就像上面那样, 利用像js, java, vbscript, flash等, 利用这样的Web漏洞, 当用户登录账号的时候顺带执行已经注入的恶意代码,从而达到攻击的目的.
分类:
xss可分为 反射型 和 存储型 两种.
反射型
- 恶意用户发送带有恶意代码的链接
- 当正常的用户点击链接发送请求后, 服务器会对请求做出响应和一些处理,连带着恶意脚本也处理了.
- 处理的恶意脚本能实现的功能是: 将正常用户的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)
成功!
medium级别
如果还输入上方的东西
那么
对应方法:
- 替换大小写; 输入
![image.png](C:\Users\2892706668\Desktop\halo-backup-markdown-2023-01-12-16-10-12-2116279541 (2)/upload/2022/12/image-94642a7ff83a465aad97b0d524f66c12.png)- 还可以通过 写两遍 script 标签来实现绕过.
最后都成功了
hight级别
此时, 小写,双写都不行. 源码中使用了正则表达式, 至少要是能拼成script的都不行.
方法: 换标签
例如: ![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 来观察, 具体连接如下
依次点击:
low级别
输入: 同上方反射型的script标签, 就可以成功, 此处输入了两次 一个是123, 一个是123456, 从数据库中可以看到 的确是被存储了. (注意 我将原本的评论给clear了, navigate记得刷新才能看到存储的数据)
被存储进数据库并执行了, 就代表成功了'
以此类推, 要注意的是 看清后面的关卡对 name 进行绕过的, 而不是 评论message. 必要时, 鼠标右键检查, 修改页面上的input长度
Pikachu靶场
简单使用
同样的输入![image.png](C:\Users\2892706668\Desktop\halo-backup-markdown-2023-01-12-16-10-12-2116279541 (2)/upload/2022/12/image-832f7f44d1a04b889e9371e633869397.png)
这里有输入的长度限制, 还是要 鼠标右键----检查网页,修改 maxlength
成功
在搜索框中输入:
此时界面:虽然没啥反应但是,通过这段代码的确可以拿到cookie.
借助navigate连接pikachu用到的数据库, 就可以看到了
**可以尝试,输入 kobe , 虽然是正确的输入,但取得是没有显示cookie. 所以本次成功.
当然一个更加方便的查看方法就是通过XSS后台来看**
剩下的关卡就靠自己了.
其他Xss平台介绍
除了dvwa , pikachu, 还可以
直接网上搜索 XSS平台 , 有线上的平台,不过有些项目可能要收费
还可以 在一些较早的kali版本中输入 beef-xss , 然后按照黑窗口的只是安全就行, (基本上都是输入 y),
使用beef的时候, 如果是在虚拟机里面进行操作的, 没有出现网页的弹窗, 需要在浏览器中安装一个插件.
还有一个比较有趣味性的靶场 : xss-labs , 需要自己在电脑上搭建, 一共20关.
Xss检测和利用
思路
其实就是自己准备一些脚本在输入框中进行输入提交, 如果成功那就有呗
方法: 自己写还是有些麻烦, 人们可以利用一些工具:
Xsser()
参数可以参考https://blog.csdn.net/gao646467783/article/details/113249158
Xsstrike
这个需要到GitHub上下载, kali里面不提供自动安装的
Xss的简单防御
原理:
- 对于输入来说: 可通过正则表达式来对一些脚本语言进行识别, 对于识别出来的东西进行改动就可以了
- 对于输出来说: 不能只能像document.write(), php里面的echo等函数一样简单的输出, 要想一些阻碍的办法.
工具:
WAF-----------> web application firewall
例如:
modsucurity (这是一个免费的)
http://modsecurity.cn/ 还有应将的waf, 阿里云,腾讯等都有卖的waf.
当启动waf后, 请求会想交给waf, 只有通过waf了,才放行,否则waf会把请求给进制掉.