• 27 WEB漏洞-XSS跨站之代码及httponly绕过


    HttpOnly安全过滤测试

    在这里插入图片描述
    防止xss攻击,指的是攻击手法,并不是能防止XSS漏洞,httponly阻止的仅仅只是cookie

    httponly在相关的脚本都是支持的,我们根据自己网站的脚本环境,有相当的开启方法

    httponly开启方法:https://jingyan.baidu.com/article/5553fa82a8248c65a3393442.html
    
    • 1

    对方开启httponly,你在攻击盗取cookie失败的情况下,我们可以采取其它方案,我们需要的是登录后台的权限,后台权限里面有两种方式进入,一种是cookie获取进入后台,一种是直接账号密码登录进入后台,所以我们可以采取获取账号密码登录,一般网站管理者习惯在登录一些网站后台之后进行保存,防止下次登录还需要重新输入密码,比较麻烦,或者有些浏览器会自动保存;如果对方有进行这些操作,那我们可以利用xss漏洞对这些浏览器密码进行读取

    像我们在登录地址输入账号,他直接补齐密码,这个就属于保存读取,就是浏览器已经记录了你之前登录的账号密码,如果没有保存就是让你重新输入密码;我们的攻击可以针对这两种情况进行攻击,如果对方是保存的话,我们可以读取对方保存的数据,如果说没保存的话,我们就采取表单劫持,这是两个概念

    表单劫持就是相当于把数据在发送一份到跨站平台,就相当于提交的数据一份给了服务器,一份给了跨站平台,所以我们就能够接收到明文的账号密码,这个时候我们可以直接用明文的账号密码去登录他的账号,这是建立在未保存读取的攻击方式,但是这个攻击有个前提条件,就是产生在登录框,如果你的跨站没有产生在登录框这里,就相当于你攻击的话,需要把你的跨站语句写到对方的代码,或者执行相关的代码,才能够触发跨站

    登录框这个地方一般是我们后台登录的地方,这个地方假如没有跨站的话,表单劫持这种方法是不可行的,因为我们的攻击语句已经写到了登录页面这里,我们在攻击的时候,要么在攻击页面,把跨站代码写进去,就是储存型跨站;要么在地址上面,构造一个触发地址,对方去访问它,触发这个跨站代码,所以它是有些前提条件的,如果说我们采取登录框表单劫持的话,那么跨站漏洞必定产生在登录的地方,如果是向前面的其它地方就不行,所以这个未保存读取利用起来比较鸡肋

    如果是保存读取,说明账号密码是保存在浏览器的,在xss平台配置好需要浏览器记住的明文密码的策略配置
    在这里插入图片描述
    再重新登录账号,这个时候xss平台就会获取用户的明文账号和密码,有时候xss平台会有延迟,多等一会就好

    HttpOnly安全过滤绕过思路

    代码类过滤:Xsslabs

    HttpOnly属性过滤防读取

    绕过httponly:

    浏览器未保存帐号密码:需要xss产生登录地址,利用表单劫持

    浏览器保存帐号密码:产生在后台登录框的xss,存储型xss如留言等,浏览器读取帐号密码

    在一些网站登录,大部分都会记住账号密码,只要是个人电脑、浏览器都会记住

    演示案例:

    Xsslabs关卡代码过滤绕过测试

    php htmlspecialchars()函数将特殊字符转换为HTML实体
    实体化是经常过滤xss的一种情况,我们只要把双引号闭合掉就可以了。

    "><script>alert(1)</script>
    
    • 1

    尖括号不能用的话,我们可以用

    ' οnclick='alert(1)    ' οnmοuseοver='alert(/xss/)
    
    • 1

    事件属性,单击时就可以触发了。
    找跨站点,我们一定要去分析,绕过也要去分析

    " οnclick="alert(1)
    
    • 1

    过滤相关关键字,我们可以利用大小写绕过

    "><a Href='javasCript:alert(1)'>
    
    • 1

    双写绕过

    "><a HHREFref='javasCscriptript:alert(1)'>
    
    • 1

    他不是循环过滤,他是一次过滤,所以你让他过滤为空之后再写死就好了。

    xss语句unicode编码绕过

    &#74;avaScript:alert('1')
    
    • 1

    有的验证你得带有某些东西才可以,比如http://,我们可以两斜杆注释http://,然后让这个http://绕过过滤,然后利用编码绕过前面的过滤

    &#74;avaScript:alert('1')//http://
    
    • 1

    我们是强调知识的全面性,那个东西重要是根据你自己的情况,有些人认为重要,有些人认为不重要,反正你认为重要,你就好点学,你认为不重要,就不学,这个根据大家自己的需求

    数据隐藏,隐藏表单的属性值,把我们写入的xss语句给隐藏起来,让我们不知道自己代码写入到里面是什么组合,我们可以修改html代码的属性,把它修改成text属性,因为他以后面为准

    &t_sort="type="text" οnclick="alert(1)"
    
    • 1

    type="text"是为了让框显示出来,好让鼠标去触发点击事件,不是这个type必须要写,其实不写也是能够正常执行的

    像我前面讲的那些,在实战情况下,我们是碰不到的,是以后有些比赛,你学一下他的绕过思路,会比较好一些;但是在实战情况下,一些简简单单的绕过思路学一下就好了

    网上的一些过关文章也可以去看,虽然他没有讲原理,我们去查一下资料应该是没有大问题的

    PHP $_SERVER['HTTP_REFERER']   获取前一页面的 URL 地址
    
    • 1

    REFERER和xss关系不是很大,和csrf关系很大
    可以在referer和user-agent中添加xss语句
    xss和我们的注入是一样的,我们注入的时候可以通过post、get发送数据,也可以通过数据包里面的参数发送数据,只是说对方代码是怎么接收的,你就怎么发送,所以说漏洞的原理都是通用的

    由于xss漏洞在实战情况下是需要别人配合的攻击,一般你盗取别人的cookie,去攻击别人,需要别人去触发这个漏洞才行,他不是像注入、上传主动的攻击,别人不知道你也能够攻击

    学习xss绕过,大部分都是搞比赛的时候,可能会考这一点,如果在实战情况下,是不会这么绕的,它不会有这么多拦截,要么能绕过要么不能绕过

    通过访问网站的数据包,修改数据里面的内容为跨站语句,来测试有没有跨站漏洞即可,这就是手工判断有么有跨站漏洞的最简单方法了

    有时间xss平台可以自己去搭建一个

  • 相关阅读:
    Pytorch里的manual_seed()
    钉钉群内自定义机器人发送消息功能实现
    vue+springboot 前后分离简单crud的基础流程
    MyBatis缓存
    Android自定义控件(四) 自定义百度贴吧水波纹Loading效果
    老牌期货公司综合实力强开户体验佳
    bootstrap-datepicker实现只能选择每一年的某一个月份
    Android 九宫格布局
    DAO 与存储库Repository模式
    Qt之实现支持多选的QCombobox
  • 原文地址:https://blog.csdn.net/m0_53008479/article/details/132990810