Pikachu靶场——XSS漏洞(Cross-Site Scripting)

news/2024/7/23 15:53:11 标签: xss, 网络安全, 系统安全, web安全, 安全, pikachu

文章目录

  • 1. XSS(Cross-Site Scripting)
    • 1.1 反射型XSS(get)
    • 1.2 反射型XSS(post)
    • 1.3 存储型XSS
    • 1.4 DOM型XSS
    • 1.5 DOM型XSS-X
    • 1.6 XSS盲打
    • 1.7 XSS之过滤
    • 1.8 XSS之htmlspecialcharss
    • 1.9 XSS之href输出
    • 1.10 XSS之JS输出
    • 1.11 XSS 漏洞防御

1. XSS(Cross-Site Scripting)

跨站点脚本(Cross Site Scripting,XSS)是指客户端代码注入攻击,攻击者可以在合法网站或Web应用程序中执行恶意脚本。当wb应用程序在其生成的输出中使用未经验证或未编码的用户输入时,就会发生XSS。

跨站脚本攻击,XSS(Cross Site Scripting)。由于与CSS(Cascading Style Sheet)重名,所以就更名为XSS。

XSS作为OWASP TOP10(2017)内容之一,主要使用JavaScript来完成恶意攻击的行为,JS可以非常灵活的操作HTML、CSS、浏览器,这就使得XSS攻击“想象”空间非常大。也就是说,JS强大的灵活性和功能,为XSS攻击提供了非常广阔的攻击面。

1.1 反射型XSS(get)

发现在输入代码的时候,输入到一定长度无法进行输入了。

image-20230815215055165

可以修改页面源代码。将最大值修改为100

image-20230815215211048

<script>alert('芜湖')</script>

最后弹框如下:

image-20230815215340239

1.2 反射型XSS(post)

输入密码进行登录

image-20230815215842467

<script>alert(document.cookie)</script>

输入代码发现没有长度限制,弹框如下

image-20230815215942274

GET方式中, 攻击代码是直接暴露在URL中的

image-20230815220304734

POST方式参数内容不会出现在URL中

image-20230815220557479

image-20230815220636564

1.3 存储型XSS

存储型XSS:持久化,存储型XSS漏洞是指攻击者将恶意脚本代码存储在目标网站的数据库中,通常在用户提交的表单数据中注入恶意代码。当其他用户浏览到包含恶意代码的页面时,脚本代码会被执行,导致攻击者能够获取用户的敏感信息或执行恶意操作。

发现是一个留言板,直接输入攻击代码

<script>alert(document.cookie)</script>

image-20230815220856827

1.4 DOM型XSS

XSS(DOM)是一种基于DOM树的一种代码注入攻击方式,可以是反射型的,也可以是存储型的,所以它一直被划分第三种XSS。与前两种XSS相比,它最大的特点就是不与后台服务器交互,只是通过浏览器的DOM树解析产生。除了js,flash等脚本语言也有可能存在XSS漏洞。

<script>alert(document.cookie)</script>

image-20230815221533134

查看页面源代码

image-20230815221803617

输入的发现攻击代码被传入了一个a标签中。那么这里可以尝试将a标签进行闭合。

修改攻击代码

'> <img src="" οnerrοr=alert('芜湖')>

image-20230815222818892

查看网页源代码

image-20230815222854702

1.5 DOM型XSS-X

先直接点击按钮查看显示内容,弹出了一个链接“有些费尽心机想要忘记的事情,后来真的就忘掉了”,点击该连接又弹出了一句话“就让往事都随风,都随风吧”

image-20230816193921307

查看源代码

image-20230816194508196

发现点击后跳转到了a标签,使得闭合a标签,输出我们的攻击代码

'> <img src="" οnerrοr=alert('芜湖')>

image-20230816195051108

页面显示内容

image-20230816195134866

1.6 XSS盲打

<script>alert('芜湖')</script>

输入攻击代码后发现没有任何弹框,查看源代码。

image-20230816200827445

发现该表单是post提交方式,现在我们查看提示。提示说需要登录后台。

image-20230816201035808

输入路径登录后台查看,发现我们之前的攻击代码生效了。

http://127.0.0.1/pikachu/vul/xss/xssblind/admin.php?id=8

image-20230816201056089

倘若注入xss,是无法得知是否xss被执行,但是管理员在后台查看时,当注入了xss代码,同时管理员又访问了后台,且后台把我们的内容输出,那么后台管理员可能遭受到XSS攻击。这也是称为XSS盲打的原因。

1.7 XSS之过滤

输入攻击代码

<script>alert('芜湖')</script>

发现没有弹窗

image-20230816202815039

猜测这里过滤了一些标签

image-20230816203815414

发现在输入**<script>标签后<script被过滤了,只剩下了>**。

那么这里可以使用多种方式进行绕过

大小写绕过

<sCript>alert('wuhu')</scRIpt>
<SCRIPT>alert('wuhu')</SCRIPT>

image-20230816204029466

使用非<script>的其他标签

<img src=1 onerror='alert("wuhu")'>

image-20230816204132693

1.8 XSS之htmlspecialcharss

输入攻击代码

<script>alert('芜湖')</script>

发现还是没有弹框

image-20230816205026412

htmlspecialchars()的作用就是把预定义的字符转换为了HTML实体。预定义的字符如下:

& 成为 &amp
" 成为 &quot
' 成为 &#039
< 成为 &lt
> 成为 &gt

htmlspecialchars()函数默认是不对单引号进行转义的,要想连单引号一起转义,需要给函数传入参数ENT_QUOTES。

ENT_COMPAT:默认,仅编码双引号
ENT_QUOTES:编码双引号和单引号
ENT_NOQUOTES:不编码任何引号

查看源代码,单引号没有被过滤掉。

image-20230816223745194

image-20230816210141462

构造攻击代码

' οnclick='alert(99)'

点击链接' onclick='alert(99)'后弹框如下:

image-20230816214349248

1.9 XSS之href输出

还是先输入<script>alert('芜湖')</script>一个尝试,发现没有弹框。

image-20230816214841863

image-20230816221106040

查看网页源代码,发现左右尖括号,双引号,单引号都被html编码了,这样的话,闭合标签或者闭合属性都行不通了。

image-20230816223139951

发现href 属性的值可以是任何有效文档的相对或绝对 URL,包括片段标识符和 JavaScript 代码段。

所以这里可以输入:

javascript:alert(document.cookie)

解析:

  • javascript: 这是一个伪协议,表示接下来的内容是 JavaScript 代码,可以在当前页面的上下文中执行。
  • alert(): 这是一个 JavaScript 函数,用于在浏览器中显示一个警告框,其中显示指定的消息。
  • document.cookie: 这是一个 JavaScript 表达式,用于获取当前页面的 Cookie 值。Cookie 是一种用于在客户端和服务器之间存储数据的机制,它可以用于标识和跟踪用户会话状态。

image-20230816223317754

1.10 XSS之JS输出

还是先输入一段攻击代码,查看页面响应

<script>alert('芜湖')</script>

发现页面没有响应,查看页面源代码。发现输入的攻击代码被发送到了最外面的<script>标签中了,并且没有被编码。

image-20230817201304281

那么现在可以闭合当前语句,然后再生成我们的攻击代码,这样代码就变成了$ms = '';alert('芜湖');//';

';alert('芜湖');//

image-20230817201819926

1.11 XSS 漏洞防御

参看我写的另一篇博客:跨站脚本攻击(XSS)

  • 黑白名单策略
  • 输入过滤
  • 输出编码

http://www.niftyadmin.cn/n/5072978.html

相关文章

腾讯云/阿里云国际站免费账号:腾讯云国际站如何对象存储cos设置防盗链

简介 为了避免恶意程序使用资源 URL 盗刷公网流量或使用恶意手法盗用资源&#xff0c;腾讯云国际站给用户带来不必要的损失。腾讯云对象存储支持防盗链配置&#xff0c;建议您通过控制台的防盗链设置配置黑/白名单&#xff0c;来进行安全防护。 注意&#xff1a; 如果您访问对…

Flink---12、状态后端(HashMapStateBackend/RocksDB)、如何选择正确的状态后端

星光下的赶路人star的个人主页 大鹏一日同风起&#xff0c;扶摇直上九万里 文章目录 1、状态后端&#xff08;State Backends&#xff09;1.1 状态后端的分类&#xff08;HashMapStateBackend/RocksDB&#xff09;1.2 如何选择正确的状态后端1.3 状态后端的配置 1、状态后端&am…

C#高级--XML详解

零、文章目录 XML详解 1、XML是什么 XML&#xff08;Extensible Markup Language&#xff09;是一种用于存储和传输数据的标记语言。它由万维网联盟&#xff08;W3C&#xff09;开发。XML被广泛用于数据交换、数据存储、Web服务、网络协议&#xff08;如SOAP&#xff09;等方…

195、SpringBoot--配置RabbitMQ消息Broker的SSL 和 管理控制台的HTTPS

开启Rabbitmq的一些命令&#xff1a; 小黑窗输入&#xff1a; rabbitmq-plugins enable rabbitmq_management 启动控制台插件&#xff0c;就是启动登录rabbitmq控制台的页面 rabbitmq_management 代表了RabbitMQ的管理界面。 rabbitmq-server 启动rabbitMQ服务器 上面这个&…

Sonar代码审查

概念 Sonar 下载地址 是一款功能强大的代码审核工具&#xff0c;可以帮助开发团队更好的维护项目代码。同时&#xff0c;Sonar只是一个统称&#xff0c;这款工具不是单纯一个应用&#xff0c;一般来说我们会使用Sonar Qube和Sonar scanner这两个组件来搭配使用。Sonar Scanner…

git和svn 的国内的下载地址

CNPM Binaries Mirror 下面是svn的地址 TortoiseSVN 64位下载-TortoiseSVN客户端官方版下载-华军软件园

探秘小米增程汽车与仿生机器人的未来:AI大模型的潜在影响及苹果iPhone15Pro发热问题解决之道

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

Web开发-单例模式

目录 单例模式介绍代码实现单例模式 单例模式介绍 单例模式是一种创建型设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供一个全局访问点。单例模式可以通过private属性实现。通过将类的构造函数设为private&#xff0c;可以防止类在外部被实例化。单例模式通…