zoukankan      html  css  js  c++  java
  • Pikachu-XSS

    XSS(跨站脚本)概述
    Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
        1.反射性XSS;
        2.存储型XSS;
        3.DOM型XSS;

    XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。
    XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
    形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
    因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
      输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
      输出转义:根据输出点的位置对输出到前端的内容进行适当转义;

    攻击流程

        假设存在漏洞的是一个论坛,攻击者将恶意的JS代码通过XSS漏洞插入到论文的某一页面中

        当用户访问这个页面时,都会执行这个恶意的JS代码,这个代码就会在用户的浏览器端执行

    XSS攻击类型

    危害:存储型 > 反射型 > DOM型

    • 反射型:交互的数据一般不会被存在数据库里面,一次性,所见即所得,一般出现在查询页面等
    • 存储型:交互的数据会被存在数据库里面,永久性存储,一般出现在留言板,注册等页面
    • DOM型:不与后台服务器产生数据交互,是一种通过DOM操作前端代码输出的时候产生的问题,一次性,也属于反射型

    XSS形成原因

        形成XSS漏洞的主要原因是程序中输入和输出的控制不够严格

        导致“精心构造”的脚本输入后,在输出到前端时被浏览器当作有效代码解析执行

    XSS漏洞测试流程

        ① 在目标上找输入点,比如查询接口、留言板

        ② 输入一组 “特殊字符(>,',"等)+唯一识别字符” ,点击提交后,查看返回源码,看后端返回的数据是否有处理

        ③ 通过搜索定位到唯一字符,结合唯一字符前后语法确定是否可以构造执行js的条件(构造闭合)

        ④ 提交构造的脚本代码(以及各种绕过姿势),看是否可以成功执行,如果成功执行则说明存在XSS漏洞

    一、反射型XSS(get)

     先输入'"kingjerry 发现并没有理我~

    看一下网页源代码:

    害呀,科比就科比吧……

     …………

    行吧KobeNB

    试试XSS注入吧 简单的JS代码呈上:<script>alert("xss")</script>

    长度被限制在了20,改一下再试试~

    成功

     二、反射性xss(post)

    默认用户名admin密码123456

    由于是post方式提交,所以不能通过url直接传参数,但只要从文本框传就好。无论get和post都是为了上传文本框里的内容不是嘛……

    <script>alert('xss')</script>

     

     三、存储型xss

     有一个留言板。

    我们先上传一段文字,看看网页源代码是什么形式。

     就很好构造了:

    <img src=http://1.html onerror=alert('pikachu')>

     

     四、DOM型xss

     还是先看源代码:

    都提醒到我脸上了……

     

     

     onmouseover 鼠标移动到上面就发送请求。

    以及,作为强迫症明明用img没有图真的太难受了。

     嘻嘻嘻嘻嘻嘻嘻嘻祢豆子天下第一可爱

    五、DOM型xss-x

     ……出生二十载,单身二十年,吾已至弱冠,不曾及柔荑,算吗???算吗!!!

     好的^_^

    '><img src="http://192.168.1.104/pikachu/npy.bmp" onmouseover="alert('我的未来女朋友你在哪里')">

     

     主要是吧,没点图我就觉得,不严谨,不科学,不规范~

     ' onclick="alert('我想要一个女朋友')">

    在鼠标移到位置上触发第一个动作后,鼠标单击触发第二个动作,才会触发xss命令

    六、xss盲打

    还是直接看源码

     

    我们在文本框内输入的内容是直接传上网站后端的。所以直接的XSS打,我们攻击的是后台的管理员。

    那只需要最简单的方法:

    <script>alert('Pikachu')</script>

    登录后台

     

     

     攻击成功

    七、xss之过滤

     

     能猜出,把文本框内上传的文字直接抓包放在了下面。

     那只要尝试绕过后端对上传文本的重放就好了。这里利用大小写正则匹配的漏洞。

    <SCRIPT>alert('奥里给!!!')</sCRIpt>

     八、xss之htmlspecialchars

     

     

     挺随便的吧……

     记录在herf里了。

    直接javascript:alert(233333)

     

     九、xss之href输出

     

     与上题同理

    javascript:alert(23333)

    十、xss之js输出

     

     

     ……(内心中有一万只什么什么跑过……)

     看一下js源码

      它会把我们的输入放到JS中,然后对这个变量进行判断,然后再输出

    那其实先把前面的结构结束 再单独加一段<script>就好了

    '</script><script>alert('pikachu')</script>
  • 相关阅读:
    Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(二)之Introduction to Objects
    Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(一)之Introduction
    JMock2入门
    webWMS开发过程记录(六)- 详细设计之系统管理
    webWMS开发过程记录(五)- 详细设计之系统界面框架设计
    基于gensim深入自然语言处理
    sublime text 搭建anconda的python开发环境遇到问题
    文本分类
    简介:机器学习模型在数学就是解决代价函数的最优化问题
    学习笔记一 线性代数
  • 原文地址:https://www.cnblogs.com/p201721420021/p/11867274.html
Copyright © 2011-2022 走看看