XSS绕过httponly属性保护的cookie

目录

必备知识:

(一)绕过方法

0x01 表单劫持

1、原理

2、操作实现

 0x02 直接读取

1、原理

2、演示

 0x03 使用phpinfo文件

1、原理

 2、实现过程

0x04 配置错误

1、原理

2、实现过程


必备知识:

XSS漏洞渗透与防御__Cyber的博客-CSDN博客

        如果您在cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,主要影响就是XSS攻击中无法通过document对象直接获取到cookie。

        PHP5.2以上版本已支持HttpOnly参数的设置,同样也支持全局的HttpOnly的设置,在php.inisession.cookie_httponly = 1

设置其值为1或者TRUE,来开启全局的Cookie的HttpOnly属性,当然也支持在代码中来开启:

 

Cookie操作函数setcookie函数和setrawcookie函数也专门添加了第7个参数来做为HttpOnly的选项,开启方法为:


setcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE); 
setrawcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE);

对于PHP5.1以前版本以及PHP4版本的话,则需要通过header函数来变通下了:

 

(一)绕过方法


        若对方服务器开启HttpOnly,则无法通过XSS获取Cookie,我们的目的是进入网站后台,进入后台有两种登录方式

  1. 使用Cookie登录
  2. 使用账号+密码登录

因此只能设法获取账号+密码进入后台,而有些管理员习惯将账号密码信息保存在浏览器端,若对方管理员有账号密码保存在浏览器的习惯,那么可以通过XSS漏洞读取浏览器中存储的账号密码信息。分以下两种情况:

  1. 保存读取:对方浏览器已经记录账号密码信息——直接读取
  2. 没有保存读取:对方浏览器没有保存账号密码信息——表单劫持

0x01 表单劫持


1、原理

        对于一个登录页面,当使用者输入账号密码之后,一般通过HTML的表单提交数据,再由POST方式将接收的数据参数提交到后台,举一个简单例子

金友鑫科技有限公司欢迎您的到来
现在时间:2022-03-04 19:10:07



看不清楚?请点击刷新 *

输入账号密码后点击登录,此时抓包,就能看到前端向后端提交的数据包当中会携带刚才提交的账号密码信息

XSS绕过httponly属性保护的cookie_第1张图片

 

        如果能够在登录时触发XSS的表单劫持脚本代码,就会将账号密码信息发送回XSS后台,我们就能以此拿到管理员的账号密码信息。

需要注意的是,如果要利用表单劫持,那么XSS漏洞必须出现在登录框所在页面,也即XSS的表单劫持代码必须插入到登录框所在的页面(XSS代码提前写入此页面等待触发),若登录框所在页面不存在跨站漏洞,就无法得到账号密码信息。

2、操作实现

XSS平台-用于xss漏洞测试专用

XSS在线平台一般都会提供表单劫持功能模块

XSS绕过httponly属性保护的cookie_第2张图片

 0x02 直接读取


1、原理

        如果管理员账号密码保存在浏览器,则登录时以及登录后触发了XSS语句(勾选获取浏览器记住的明文密码),都会把账号密码信息发送到XSS后台。

2、演示

XSS绕过httponly属性保护的cookie_第3张图片

 0x03 使用phpinfo文件


1、原理

        phpinfo是一个常见的信息泄漏途径,很多厂商不在乎,但是这个对于搞安全的来说,就像挖到了宝一样phpinfo中蕴含着大量的信息,其中就有http header信息,从这里我们可以读取出来受保护的cookie。

        我们的思路是:通过XSS漏洞,是服务器发起对phpinfo的访问,之后对响应包进行匹配摘取,获取到Cookie的值,并且赋值给一个变量剩下的操作就很一般了,正常的xss的利用方式就好了

XSS绕过httponly属性保护的cookie_第4张图片

 2、实现过程

        这里会用到AJAX,可以学习一下

        我们的脚本使用XMLHttpRequest()读取info.php并发送它,我们创建了这个读取 info.php 的JS代码,获取值“ HTTP_COOKIE ”并将其发送回我们的服务器。info.js文件:

XSS绕过httponly属性保护的cookie_第5张图片

 创建 JavaScript 文件后,我们可以在姓氏字段中注入 Payload

XSS绕过httponly属性保护的cookie_第6张图片

 而通过简单解码base64数据,我们可以看到ci_session

 

 具体复现可以看看这篇文章:

获取Httponly 保护下的Cookie - 墨天轮

0x04 配置错误


1、原理

有一些网站设计和管理人员却把非访问控制的Cookie键值对加上了httponly,关键的Cookie却没有配置httponly,和.git操作很相似。

2、实现过程

        共享Cookie时候配置httponly不全,有些企业的网站有很多的服务,需要相互协调,以百度为例子,百度有搜索服务,网盘服务,云服务,贴吧等等,关系错综复杂,在这种情况就会出现SSO,之后Cookie共享的问题,这样也可以保证用户体验,不用多次登陆,服务器配置错误,不只后端语言涉及到httponly配置, 还有我们的web服务器,比apache,tomcat,nginx,iis 等等,有些配置格式写错了就无法运行,有一些依旧可以运行,就会留下隐患,其他组成部分配置问题,比如squid,这是个高性能的代理服务器,可以参考:

https://www.secpulse.com/archives/17526.html

你可能感兴趣的:(渗透与攻防,xss,安全,网络安全,web安全)