使用phpinfo文件绕过HttpOnly限制

使用phpinfo文件绕过HttpOnly限制

在我开始解释我们如何绕过 HttpOnly 标志之前,让我们讨论一下HttpOnly是什么:

HttpOnly是包含在 Set-Cookie HTTP 响应标头中的附加标志。Set-Cookie的HttpOnly标志时产生一个Cookie可以帮助减轻客户端脚本的风险访问受保护的cookie,如果仅Http标志(可选)被包括在HTTP响应报头中,Cookie无法通过客户端访问脚本,如果浏览器支持这个标志。因此,即使存在跨站脚本(XSS)漏洞,并且用户意外访问了利用此漏洞的链接,浏览器也不会将 cookie 泄露给第三方。

如果浏览器不支持HttpOnly并且网站尝试设置HttpOnly cookie,则浏览器将忽略HttpOnly标志,从而创建传统的、脚本可访问的 cookie。因此,cookie(通常是您的会话 cookie)变得容易被恶意脚本窃取修改。——来源

在使用Higgsx进行 Web 应用程序评估时,我们发现存储的跨站点脚本(XSS)是一个很好的发现,但由于会话 cookie 上的 HttpOnly 标志 – ci_session ,我们无法进一步升级它:

使用phpinfo文件绕过HttpOnly限制

有几种众所周知的绕过 HttpOnly 标志的方法:

在挣扎了几个小时后,我们有了一个新的想法……

那么,为什么是phpinfo?

我正在测试的几乎每个网站(当然,基于PHP)都有phpinfo文件。

如果您打算在错误赏金计划中报告它们,则仅通过查找phpinfo不会获得错误赏金,因为在大多数情况下影响非常小。

经过一些目录和文件枚举,我们遇到了info.php文件:

使用phpinfo文件绕过HttpOnly限制

phpinfo 最有趣的部分是它读取每个 cookie,甚至是 HttpOnly 的。

使用phpinfo文件绕过HttpOnly限制

使用 info.php 文件窃取 ci_session

我们在名称字段中发现了XSS,现在我们可以滥用XSS来加载我们的 JavaScript,它使用XMLHttpRequest()读取info.php并发送它

我们创建了这个读取 info.php 的JS代码,获取值“ HTTP_COOKIE ”并将其发送回我们的服务器。

info.js文件:

使用phpinfo文件绕过HttpOnly限制
要点:
gist.github.com/ls4cfk/0deb122d4e2e24ac66cd74d3edf956bf

创建 JavaScript 文件后,我们可以在姓氏字段中注入 Payload(我们的案例很容易受到攻击):

使用phpinfo文件绕过HttpOnly限制

这是我们的请求,包含info.php内容(在base64 中

使用phpinfo文件绕过HttpOnly限制

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

使用phpinfo文件绕过HttpOnly限制

获得ci_session 后,我们可以访问管理员帐户并从用户那里提升我们的权限。

PS JavaScript 可以进一步改进,请随时贡献

PS2 Tomcat 有可以以相同方式使用的示例

/examples/servlets/servlet/SessionExample
使用phpinfo文件绕过HttpOnly限制

from

转载请注明出处及链接

Leave a Reply

您的电子邮箱地址不会被公开。