文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

[xss-3]httponly绕过

2023-09-02 11:17

关注

什么是HttpOnly

HttpOnly是包含在http返回头Set-Cookie里面的一个附加的flag,所以它是后端服务器对cookie设置的一个附加的属性,在生成cookie时使用HttpOnly标志有助于减轻客户端脚本访问受保护cookie的风险(如果浏览器支持的话)

下面的例子展示了如何设置Set-Cookie 返回头的语法

Set-Cookie: =[; =]
[; expires=][; domain=]
[; path=][; secure][; HttpOnly]

如果HTTP响应标头中包含HttpOnly标志(可选),客户端脚本将无法访问cookie(如果浏览器支持该标志的话)。因此即使客户端存在跨站点脚本(XSS)漏洞,浏览器也不会将Cookie透露给第三方。

如果浏览器不支持HttpOnly,并且后端服务器尝试设置HttpOnly cookie,浏览器也会忽略HttpOnly标志,从而创建传统的,脚本可访问的cookie。那么该cookie(通常是会话cookie)容易受到XSS攻击

作用:使用HttpOnly缓解最常见的XSS攻击

大多数XSS攻击都是针对会话cookie的盗窃。后端服务器可以通过在其创建的cookie上设置HttpOnly标志来帮助缓解此问题,这表明该cookie在客户端上不可访问。
如果支持HttpOnly的浏览器检测到包含HttpOnly标志的cookie,并且客户端脚本代码尝试读取该cookie,则浏览器将返回一个空字符串作为结果。这会通过阻止恶意代码(通常是XSS)将数据发送到攻击者的网站来使攻击失败。

PHP中的设置

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

 session.cookie_httponly = 

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

 <?php  ini_set("session.cookie_httponly", 1);  // or  session_set_cookie_params(0, NULL, NULL, NULL, TRUE);  ?> 

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函数来变通下了:

<?php  header("Set-Cookie: hidden=value; httpOnly");  ?> 

httponly仅仅阻止盗取cookie

登陆后台方式:
1.cookie
2.账号密码登录

在这里插入图片描述

获取用户账号密码

保存读取
浏览器记录
读取用户浏览器即可

未保存读取
用户自己输入 -表单劫持
要求-登录框

代码写入登录页面
在这里插入图片描述
用户将发出两个数据包一个是xss跨站平台 一个是服务器

xss平台上配置代码
在这里插入图片描述

在这里插入图片描述

将代码写入后台登陆框
在这里插入图片描述

xss-lab

level2
在这里插入图片描述

在这里插入图片描述

其中<和>都被编码成了html字符实体。
只需要将属性的引号和标签先闭合就可以了。

将keyword的参数值重新赋值">//
左边的">去闭合原先的"
右边的//去注释原先的">

level3

在这里插入图片描述
尖括号被过滤
利用事件触发

通过标签的一些特殊事件来执行js代码

构造代码:level3.php?keyword='onfocus=javascript:alert('xss') > //

level4

<和>没有了
事件触发却不需要使用这两个符号。

用上一关的代码:"onfocus=javascript:alert('xss')"
level5
on后面加了关键字
在这里插入图片描述
在这里插入图片描述

使用超链接

"> <a href=javascript:alert('xss') > xss</a> //

level6
过滤很多
在这里插入图片描述

大小写混写

"> <a HrEf=javascript:alert('xss') > xss</a> //

level7
无循环过滤
双写关键字

"oonnfocus=javascriscriptpt:alert('xss')>//

在这里插入图片描述

level8
提交的参数值一个会插入到标签的value属性值中,
一个会插入到下方标签的href属性值中。
测试服务器对客户端的处理
将要提交的js代码进行编码
在这里插入图片描述

level9

提交的参数值插入到了标签的value属性值中

但是在标签的href属性中却并没有出现该参数值,

而是显示的 "您的链接不合法?有没有!"这样的字符串。

猜测这里可能对url地址做了匹配。

只有包含正常的url地址才能添加到href属性值中

构造一个有正常url地址的恶意代码:

?keyword=javascript:alert('xss')http://www.baidu.com

关键字编码
在这里插入图片描述

level10

在源码中有一个隐藏的表单。
其中含有t_link t_history t_sort这样三个隐藏的标签

构造

?keyword=<script>alert('xss')</script>&t_link=" type="text"&t_history=" type="text"&t_sort=" type="text"

在这里插入图片描述

从页面响应来看,有一个标签的状态可以被改变。这个标签就是名
为t_sort的标签,之前都是隐藏状态,但是通过构造参数响应发现只
有它里面的值被改变了。
因此可以从该标签进行突破,尝试能不能注入恶意代码进行弹窗。
构造如下代码:

?keyword=<script>alert('xss')</script>&t_sort=" type="text" οnclick="alert('xss')

将js代码插入到标签的属性值中来执

行而不能通过闭合标签引入新的标签来触发xss

在这里插入图片描述
检测来源 同源策略-是否为同一域名

来源地址:https://blog.csdn.net/qq_41889600/article/details/127999554

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯