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

目录

      • HttpOnly安全过滤测试
      • HttpOnly安全过滤绕过思路
    • 演示案例:
      • Xsslabs关卡代码过滤绕过测试

HttpOnly安全过滤测试

27 WEB漏洞-XSS跨站之代码及httponly绕过_第1张图片
防止xss攻击,指的是攻击手法,并不是能防止XSS漏洞,httponly阻止的仅仅只是cookie

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

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

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

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

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

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

如果是保存读取,说明账号密码是保存在浏览器的,在xss平台配置好需要浏览器记住的明文密码的策略配置
27 WEB漏洞-XSS跨站之代码及httponly绕过_第2张图片
再重新登录账号,这个时候xss平台就会获取用户的明文账号和密码,有时候xss平台会有延迟,多等一会就好

HttpOnly安全过滤绕过思路

代码类过滤:Xsslabs

HttpOnly属性过滤防读取

绕过httponly:

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

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

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

演示案例:

Xsslabs关卡代码过滤绕过测试

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

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

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

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

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

" οnclick="alert(1)

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

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

双写绕过

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

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

xss语句unicode编码绕过

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

你可能感兴趣的:(小迪安全,前端,xss,安全)