博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
四 XSS(二)
阅读量:2061 次
发布时间:2019-04-29

本文共 1696 字,大约阅读时间需要 5 分钟。

XSS危害-XSS进行钓鱼的原理和实验演示

原理

这个例子使用了存储型xss

使用的payload为

hello

当用户访问含有存储型XSS漏洞的页面时,页面就会请求文件,这个页面会提示用户输入用户名密码

其代码如下

钓鱼页面
pkxss后台xfish.php的代码
xfish.php

将这个url发送给目标就可以了

http://192.168.43.5/pikachu/vul/xss/xss_stored.php

后台就会得到用户的用户名和密码

pkxss后台

ⅩSS危害-ⅩSS获取键盘记录原理和实验演示

跨域

协议://子域名.主域名:端口/资源地址
当协议、主机(主域名,子域名)、端口中的任意一个不相同时,称为不同域
我们把不同的域之间请求数据的操作,成为跨域操作。

同源策略

而为了安全考虑,所有的浏览器都约定了“同源策略”,同源策略规定,两个不同域名之间不能使用JS进行相互操作。比如:x.com域名下的 Javascript并不能操作y.com域下的对象。

如果想要跨域操作,则需要管理员进行特殊的配置
比如通过: header(" Access-Control-Aow- Origin:xcom")指定
Tips:下面这些标签跨域加载资源〔资源类型是有限制的)是不受同源策略限制的。

<script src="">//js,加载到本地执行

< img src="">/图片
<link href="">//css
< frame src="">/任意资源
同源策略是为隔离不同域的操作,可防止用户的敏感信息被窃取

获取键盘记录的js脚本

rk.js

接收键盘记录的php代码

rkserver.png

本例中使用存储型XSS作演示

使用的payload为

hello

当用户访问页面 就会将其键盘操作记录下来,传到pkxss后台上

pkxss键盘记录的后台

XSS盲打演示和原理分析

是一种XSS的应用场景

普通用户提交的payload不会返回到当前页面,会在后台管理员的页面上执行,来攻击管理员,属于一种存储型的XSS
比如一些用户反馈意见的页面

XSS的过滤和绕过(fter& htmlspecialchars)

过滤和转换

0,前端限制绕过,直接抓包重放,或者修改htm前端代码1.,大小写,比如:< SCRIPT> aleRT(111)
2,
pt> 为了应对后台对

编码

核心思路

后台过滤了特殊字符比如< script>标签但该标签可以被各种编码后台不一定会过滤
当浏览器对该编码进行识别时,会翻译成正常的标签,从而执行.
url编码 可参考

html编码 可参考

XSS绕过的技巧有很多,取决于你的思路和对前端的掌握程度

pre_replace

htmlspecialchars函数把预定义的字符转换为HTML实体
用法 $str = htmlspecialchars(string,flags,character-set,double_encode);
可参考
被转换的预定义的字符有:

html转义.png

可用的引号类型:

ENT COMPAT-默认。仅编码双引号。

ENT_QUOTES编码双引号和单引号 建议使用
ENT_ NOQUOTES-不编码任何引号。

XSS常见防范措施

总的原则:输入做过滤,输出做转义

  • 过滤:根据业务需求进行过滤,比如输入点要求输入手机号,则只允许输入手机号格式的数字
  • 转义:所有输岀到前端的数据都根据输出点进行转义,比如输出到htm中进行htm实体转义,输入到js里
    面的进行转义

XSS输出在hre案例分析

实例1

这个例子保对输出作了转义,对输入没有作过滤,存在漏洞

注意a标签中的href属性中可以执行js脚本如

所以上例中的按需要对message进行过滤,只允许http/https开始的字符串,这样更加安全

XSS输出在js案例分析

后台代码
后台代码
动态生成js

在这里由于前端输入的变量需要嵌入js代码中,需要使用js转义

js转义

尤其是单双引号的转义

转载地址:http://rrqlf.baihongyu.com/

你可能感兴趣的文章
剑指offer 59. 把字符串转换成整数
查看>>
剑指offer 60. 不用加减乘除做加法
查看>>
leetcode 热题 Hot 100-3. 合并两个有序链表
查看>>
leetcode 热题 Hot 100-4. 对称二叉树
查看>>
Leetcode C++《热题 Hot 100-12》226.翻转二叉树
查看>>
Leetcode C++《热题 Hot 100-13》234.回文链表
查看>>
Leetcode C++《热题 Hot 100-14》283.移动零
查看>>
Leetcode C++《热题 Hot 100-15》437.路径总和III
查看>>
Leetcode C++《热题 Hot 100-17》461.汉明距离
查看>>
Leetcode C++《热题 Hot 100-18》538.把二叉搜索树转换为累加树
查看>>
Leetcode C++《热题 Hot 100-19》543.二叉树的直径
查看>>
Leetcode C++《热题 Hot 100-21》581.最短无序连续子数组
查看>>
Leetcode C++《热题 Hot 100-22》2.两数相加
查看>>
Leetcode C++《热题 Hot 100-23》3.无重复字符的最长子串
查看>>
Leetcode C++《热题 Hot 100-24》5.最长回文子串
查看>>
Leetcode C++《热题 Hot 100-26》15.三数之和
查看>>
Leetcode C++《热题 Hot 100-27》17.电话号码的字母组合
查看>>
Leetcode C++《热题 Hot 100-28》19.删除链表的倒数第N个节点
查看>>
Leetcode C++《热题 Hot 100-29》22.括号生成
查看>>
Leetcode C++《热题 Hot 100-40》64.最小路径和
查看>>