Pikachu(皮卡丘)靶场---Cross-Site Scripting

目录

Cross-site scripting(跨站脚本攻击)

XSS(跨站脚本)概述

一.反射型XSS

1.1反射型xss(get)

1.2反射性xss(post)

 小小总结

二.存储型xss

三.DOM型xss

四. xss盲打

五.

六.xss之htmlspecialchars

定义和用法


Cross-site scripting(跨站脚本攻击)

XSS(跨站脚本)概述

跨站脚本攻击(Cross-site scripting,XSS)是一种安全漏洞,攻击者可以利用这种漏洞在网站上注入恶意的客户端代码。若受害者运行这些恶意代码,攻击者就可以突破网站的访问限制并冒充受害者。根据开放式 Web 应用安全项目(OWASP),XSS 在 2017 年被认为 7 种最常见的 Web 应用程序漏洞之一

如果 Web 应用程序没有部署足够的安全验证,那么,这些攻击很容易成功。浏览器无法探测到这些恶意脚本是不可信的,所以,这些脚本可以任意读取 cookie,session tokens,或者其他敏感的网站信息,或者让恶意脚本重写HTML内容。

在以下 2 种情况下,容易发生 XSS 攻击:

  1. 数据从一个不可靠的链接进入到一个 Web 应用程序。
  2. 没有过滤掉恶意代码的动态内容被发送给 Web 用户。

Pikachu(皮卡丘)靶场---Cross-Site Scripting_第1张图片

一.反射型XSS

反射型XSS将用户输入的内容作为代码让浏览器执行达到攻击目的,一般需要让用户访问攻击者构造的URL。这种类型的攻击只发生在客户端上,并且需要从带有恶意脚本参数的特定URL进入,所以也称为非持久型XSS。

要使用反射型XSS,目标网页中要使用一个参数值作为动态显示到页面的数据,并且目标网页对该参数值没有进行有效的检验,这样,就能在URL中通过构造参数的方式插入XSS payload(恶意脚本),让用户在不知情的情况下点击URL,从而执行XSS payload。反射型XSS虽然只是一次性,但方便攻击者利用。

1.1反射型xss(get)

Pikachu(皮卡丘)靶场---Cross-Site Scripting_第2张图片

构造payload:

发现输入长度受到了限制

F12,对输入长度进行修改

Pikachu(皮卡丘)靶场---Cross-Site Scripting_第3张图片

 输入构造好的payload,成功!Pikachu(皮卡丘)靶场---Cross-Site Scripting_第4张图片

1.2反射性xss(post)

Pikachu(皮卡丘)靶场---Cross-Site Scripting_第5张图片

登录一下

Pikachu(皮卡丘)靶场---Cross-Site Scripting_第6张图片

 同样的操作

构造payload:

Pikachu(皮卡丘)靶场---Cross-Site Scripting_第7张图片

 小小总结

1)post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)

(2)post发送的数据更大(get有url长度限制)

(3)post能发送更多的数据类型(get只能发送ASCII字符)

(4)post比get慢

(5)post用于修改和写入数据,get一般用于搜索排序和筛选之类的操作(淘宝,支付宝的搜索查询都是get提交),目的是资源的获取,读取数据

二.存储型xss

原理:使用者提交的XSS代码被存储到服务器上的数据库里或页面或某个上传文件里,导致用户访问页面展示的内容时直接触发xss代码。 输入内容后直接在下方回显,回显的地方就是我们插入的内容的地方。

Pikachu(皮卡丘)靶场---Cross-Site Scripting_第8张图片

 构造payload:alert("xss")Pikachu(皮卡丘)靶场---Cross-Site Scripting_第9张图片

三.DOM型xss

文档对象模型 (DOM) 是 HTML 和 XML 文档的编程接口。它提供了对文档的结构化的表述,并定义了一种方式可以使从程序中对该结构进行访问,从而改变文档的结构,样式和内容。DOM 将文档解析为一个由节点和对象(包含属性和方法的对象)组成的结构集合。简言之,它会将 web 页面和脚本或程序语言连接起来。

一个 web 页面是一个文档。这个文档可以在浏览器窗口或作为 HTML 源码显示出来。但上述两个情况中都是同一份文档。文档对象模型(DOM)提供了对同一份文档的另一种表现,存储和操作的方式。DOM 是 web 页面的完全的面向对象表述,它能够使用如 JavaScript 等脚本语言进行修改。

简单来说DOM文档就是一份XML文档,当有了DOM标准之后,DOM便将前端html代码化为一个树状结构,方便程序和脚本能够轻松的动态访问和更新这个树状结构的内容、结构以及样式,且不需要经过服务端,所以DOM型xss在js前端自己就可以完成数据的输入输出,不与服务器产生交互,这样来说DOM型xss也可以理解为反射性xss。

下面看一个DOM将html转换为树状结构体
 

Pikachu(皮卡丘)靶场---Cross-Site Scripting_第10张图片

图片来源什么是DOM 型 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/458436363

Pikachu(皮卡丘)靶场---Cross-Site Scripting_第11张图片

 Pikachu(皮卡丘)靶场---Cross-Site Scripting_第12张图片Pikachu(皮卡丘)靶场---Cross-Site Scripting_第13张图片

四. xss盲打

参考的文章:

(2条消息) xss之盲打、过滤、htmlspecialchars、herf输出、js输出_xss语法输出信息_要努力。。的博客-CSDN博客https://blog.csdn.net/weixin_51446936/article/details/117482606

五.

六.xss之htmlspecialchars

 PHP htmlspecialchars() 函数

定义和用法

htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。

预定义的字符是:

& (和号)成为 &
" (双引号)成为 "
' (单引号)成为 '
< (小于)成为 <
> (大于)成为 >

实例:

把预定义的字符 "<" (小于)和 ">" (大于)转换为 HTML 实体:

bold text.";
echo htmlspecialchars($str);
?>

以上代码的 HTML 输出如下(查看源代码):




This is some bold text.

以上代码的浏览器输出:

This is some bold text.

运行实例

你可能感兴趣的:(pikachu,前端,安全)