xssonfocus的替代的简单介绍

第三方分享代码
hacker 2年前 (2023-01-31) 黑客破解 1345 4

目录介绍:

如何使用 HTTP 响应头字段来提高 Web 安全性

在 Web 服务器做出响应时,为了提高安全性,在 HTTP 响应头中可以使用的各种响应头字段。

X-Frame-Options

该响应头中用于控制是否在浏览器中显示 frame 或 iframe 中指定的页面,主要用来防止 Clickjacking (点击劫持)攻击。

X-Frame-Options: SAMEORIGIN

DENY 禁止显示 frame 内的页面(即使是同一网站内的页面)

SAMEORIGIN

允许在 frame 内显示来自同一网站的页面,禁止显示来自其他网站的页面

ALLOW-FROM origin_uri 允许在 frame 内显示来自指定 uri 的页面(当允许显示来自于指定网站的页面时使用)

X-Content-Type-Options

如果从 script 或 stylesheet 读入的文件的 MIME 类型与指定 MIME 类型不匹配,不允许读取该文件。用于防止 XSS 等跨站脚本攻击。

X-Frame-Options: nosniff

X-XSS-Protection

用于启用浏览器的 XSS 过滤功能,以防止 XSS 跨站脚本攻击。

X-XSS-Protection: 1; mode=block

0 禁用 XSS 过滤功能

1 启用 XSS 过滤功能

Content-Security-Policy

用于控制当外部资源不可信赖时不被读取。用于防止 XSS 跨站脚本攻击或数据注入攻击(但是,如果设定不当,则网站中的部分脚本代码有可能失效)。

之前的字段名为 X-Content-Security-Policy

Content-Security-Policy: default-src 'self'

default-src ‘self’:允许读取来自于同源(域名+主机+端口号)的所有内容

default-src ‘self’

*.example.com:允许读取来自于指定域名及其所有子域名的所有内容

X-Permitted-Cross-Domain-Policies

用于指定当不能将地crossdomain.xml地文件(当需要从别的域名中的某个文件中读取 Flash 内容时用于进行必要设置的策略文件)放置在网站根目录等场合时采取的替代策略。

X-Permitted-Cross-Domain-Policies: master-only

master-only 只允许使用主策略文件(/crossdomain.xml)

Strict-Transport-Security

用于通知浏览器只能使用 HTTPS 协议访问网站。用于将 HTTP 网站重定向到 HTTPS 网站。

Strict-Transport-Security: max-age=31536; includeSubDomains

max-age 用于修改 STS 的默认有效时间。

includeSubDomains 用于指定所有子域名同样使用该策略。

Access-Control-Allow-Origin等CORS相关字段

当使用 XMLHttpRequest 从其他域名中获取资源进行跨域通信时使用。

Access-Control-Allow-Origin:

Access-Control-Allow-Methods: POST, GET, OPTIONS

Access-Control-Allow-Headers: X-TRICORDER

Access-Control-Max-Age: 1728

上述代码用于设定与 进行跨域通信处理,允许使用 POST, GET, OPTIONS 方法,在发送的请求头中添加 X-TRICORDER 字段,通信超时时间为1,728,00秒。

HTTP响应头的设定方法

在 Apache 服务器中指定响应头时,需要在 httpd.conf 文件中将下述模块设定为有效状态。

LoadModule headers_module modules/mod_headers.so

然后使用下述方法设定 HTTP 响应头。

Header set HeaderFieldName "value"

//例如

Header set X-XSS-Protection "1; mode=block地

这个xss有过滤方案么

方案一:

避免XSS的方法之一主要是将用户所提供的内容输入输出进行过滤,许多语言都有提供对HTML的过滤:

可以利用下面这些函数对出现xss漏洞的参数进行过滤:

PHP的htmlentities()或是htmlspecialchars()。

Python 的 cgi.escape()。

ASP 的 ServerEncode()。

ASP.NET 的 ServerEncode() 或功能更强的 Microsoft Anti-Cross Site Scripting Library

Java 的 xssprotect(Open Source Library)。

Node.js 的 node-validator。

方案二:使用开源的漏洞修复插件。( 需要站长懂得编程并且能够修改服务器代码 )

level_name为什么有红线

1、有红线部分可知:这里是将name参数的值直接插入到了h2/h2标签之中,故这一关主要就是考察反射型XSS。直接get方式构造url:

2、level 2直接试一试,发现不可以,查看源代码。

看到在h2/h2标签之中的恶意代码被编码,其中与都被编码成了html字符实体,但是插入到value参数值中的恶意代码并没有被编码而是直接原样返回,所以猜测在服务器端用htmlspecialchars()函数对keyword参数的值进行了处理。

所以需要闭合输入框,用"闭合前面的输入框再加上原来的JS代码

payload:?keyword="scriptalert('xss')/script

3、level 3直接试一试,发现不可以,查看源代码:

poirotl

关注

xss-labs-master题解 原创

2021-04-02 16:00:28

poirotl

码龄2年

关注

xss-labs-master题解

level 1

在这里插入图片描述由图红线部分可知:这里是将name参数的值直接插入到了h2/h2标签之中,故这一关主要就是考察反射型XSS。

直接get方式构造url:

level 2

直接试一试发现不可以,查看源代码:在这里插入图片描述看到在h2/h2标签之中的恶意代码被编码,其中与都被编码成了html字符实体,但是插入到value参数值中的恶意代码并没有被编码而是直接原样返回,所以猜测在服务器端用htmlspecialchars()函数对keyword参数的值进行了处理。

所以需要闭合输入框,用"闭合前面的输入框再加上原来的JS代码

payload:?keyword="scriptalert('xss')/script

level 3

直接试一试发现不可以,查看源代码:在这里插入图片描述

此时发现插入到value参数值中的恶意代码也同样被编码了,输入框中的与都被转义成字符实体了,也就是说在所给的输入框里不能输入这两个符号了,这里得通过标签的一些特殊事件来执行js代码,只是由于当作字符串来显示,所以看到的是正常的而已。

,所以得重新构造JS代码:

法一:?keyword='onfocus=javascript:alert('xss')

法二:?keyword='onclick='alert("xss")

闭合再构造,'onclick='alert("xss"),之所以不用script是因为仍然会被转义

法三:?keyword='onmouseover='alert(/xss/)

这里需要构造之后多点击几次空白处

level 4

发现上图红色部分,在h2/h2标签之中的与被编码,而 ’ 没有,但是输入框中的与却直接被删除,那这次直接使用"闭合尝试。

level 5

1、可以看到箭头一所指无影响,而箭头二处的 value="scr_iptalert('xss')/script"中script却被插入了_,猜测在服务器端是对提交的参数值进行了正则匹配,然后在出现的第一个script字符串中插入一个_符号导致代码无法成功执行。

2、试了’οnclick='alert(“xss”),发现其中o后面也被插入了_

3、从刚才的响应来看提交的javascript字符并没有被过滤或者转义等,所以此处既然无法通过script标签或触发事件来执行js代码的话,那么可以换一个标签来执行js代码。

4、 构造如下:?keyword=" a href=javascript:alert('xss') xss/a。

相关推荐

网友评论

  • (*)

最新评论

  • 访客 2023-01-31 18:17:08 回复

    vel 1在这里插入图片描述由图红线部分可知:这里是将name参数的值直接插入到了h2/h2标签之中,故这一关主要就是考察反射型XSS。直接get方式构造url:level

    1
  • 访客 2023-01-31 17:48:28 回复

    rame-Options该响应头中用于控制是否在浏览器中显示 frame 或 iframe 中指定的页面,主要用来防止 Clickjacking (点击劫持)攻击。X-Frame-Options: SAMEORIGINDENY 禁止显示 frame 内的页面(即使是同一网站内的页

    2
  • 访客 2023-01-31 21:57:29 回复

    免XSS的方法之一主要是将用户所提供的内容输入输出进行过滤,许多语言都有提供对HTML的过滤:可以利用下面这些函数对出现xss漏洞的参数进行过滤:PHP的htmlentities()或是htmlspecialchars()。Python 的 cgi.escape

    3
  • 访客 2023-01-31 19:20:46 回复

    s Site Scripting LibraryJava 的 xssprotect(Open Source Library)。Node.js 的 node-validator。方案二:使用开源的漏洞修复插件。( 需要站长懂得编程并且能够修改

    4