天天看点

pikachu 靶场之XSS(跨站脚本) -下篇XSS 之href输出 XSS之 js输出 XSS 防范:输入做过滤,输出做转义

前言

大家好,我是Leon-pi,可以叫我pipi,新人报道,是个菜鸟,由于个人也是在学习过程中,文章写的也不是面面俱到,尽善尽美,请见谅。

XSS 之盲打

场景:

pikachu 靶场之XSS(跨站脚本) -下篇XSS 之href输出 XSS之 js输出 XSS 防范:输入做过滤,输出做转义

一个留言板,只有后台才能看见前端存在的内容,从前端无法确定是否存在XSS漏洞,假设存在XSS漏洞,直接往里输入 XSS 代码,称为盲打。

不论3721!,直接往里面插入XSS代码,然后等待,可能会有惊喜!!

被动等待.....(当后台管理员登陆时就可能被攻击)

1 构造payload

<script>alert("attack!")</script>           

复制

pikachu 靶场之XSS(跨站脚本) -下篇XSS 之href输出 XSS之 js输出 XSS 防范:输入做过滤,输出做转义

提交后,模拟管理员登录后台

2 模拟管理员登录后台

pikachu 靶场之XSS(跨站脚本) -下篇XSS 之href输出 XSS之 js输出 XSS 防范:输入做过滤,输出做转义

存在XSS漏洞,并且也是存储型XSS

XSS 之过滤

1 随便输入内容,然后输入特殊字符('"<>)

pikachu 靶场之XSS(跨站脚本) -下篇XSS 之href输出 XSS之 js输出 XSS 防范:输入做过滤,输出做转义
pikachu 靶场之XSS(跨站脚本) -下篇XSS 之href输出 XSS之 js输出 XSS 防范:输入做过滤,输出做转义

2 输入 payload

<script>alert("attack!")</script>           

复制

pikachu 靶场之XSS(跨站脚本) -下篇XSS 之href输出 XSS之 js输出 XSS 防范:输入做过滤,输出做转义

什么也没发生,应该是过滤掉一些内容

3 尝试绕过

改动大小写

<SCRIPT>alert("attack!")</SCRIPT>           

复制

pikachu 靶场之XSS(跨站脚本) -下篇XSS 之href输出 XSS之 js输出 XSS 防范:输入做过滤,输出做转义

img 中 onerror事件

<img src="x" onerror="alert('error!')">           

复制

pikachu 靶场之XSS(跨站脚本) -下篇XSS 之href输出 XSS之 js输出 XSS 防范:输入做过滤,输出做转义

说明只是过滤了大小写,当然XSS绕过姿势不止一种,师傅们自行扩展

XSS 之htmlspecialchars

htmlspecialchars函数概览

调用该函数进行转换的字符如下

pikachu 靶场之XSS(跨站脚本) -下篇XSS 之href输出 XSS之 js输出 XSS 防范:输入做过滤,输出做转义

函数转换的类型

pikachu 靶场之XSS(跨站脚本) -下篇XSS 之href输出 XSS之 js输出 XSS 防范:输入做过滤,输出做转义

如果使用该函数对用户的输入进行处理,而保持默认转换类型可能会出现 XSS漏洞

(仅编码双引号)

1 输入

'"<>111

查看源码

pikachu 靶场之XSS(跨站脚本) -下篇XSS 之href输出 XSS之 js输出 XSS 防范:输入做过滤,输出做转义
pikachu 靶场之XSS(跨站脚本) -下篇XSS 之href输出 XSS之 js输出 XSS 防范:输入做过滤,输出做转义

从源代码可以看出,单引号未进行过滤,只是过滤了双引号

2 输入 payload

#' onclick='alert("aaa")           

复制

pikachu 靶场之XSS(跨站脚本) -下篇XSS 之href输出 XSS之 js输出 XSS 防范:输入做过滤,输出做转义
pikachu 靶场之XSS(跨站脚本) -下篇XSS 之href输出 XSS之 js输出 XSS 防范:输入做过滤,输出做转义

XSS 之href输出

javascript 伪协议

语法

javascript:someScript;
someScript 是一个或多个使用 ; 分隔的 JavaScript 语句           

复制

实例

<a href="javascript:alert('JavaScript Link!');">JavaScript Link</a>           

复制

XSS href 输出

  • 输出在 a 标签的 href 属性中,可以使用 JavaScript 协议来执行js
  • 防御:只允许http,https,其次再进行 htmlspecialchars 处理

1 根据提示输入网址,查看源码

pikachu 靶场之XSS(跨站脚本) -下篇XSS 之href输出 XSS之 js输出 XSS 防范:输入做过滤,输出做转义
pikachu 靶场之XSS(跨站脚本) -下篇XSS 之href输出 XSS之 js输出 XSS 防范:输入做过滤,输出做转义

2 点击链接跳转至百度

pikachu 靶场之XSS(跨站脚本) -下篇XSS 之href输出 XSS之 js输出 XSS 防范:输入做过滤,输出做转义

2 使用 js协议 构造payload

javascript:alert("aaa")           

复制

pikachu 靶场之XSS(跨站脚本) -下篇XSS 之href输出 XSS之 js输出 XSS 防范:输入做过滤,输出做转义
pikachu 靶场之XSS(跨站脚本) -下篇XSS 之href输出 XSS之 js输出 XSS 防范:输入做过滤,输出做转义

XSS之 js输出

1 输入aaa,查看源码

pikachu 靶场之XSS(跨站脚本) -下篇XSS 之href输出 XSS之 js输出 XSS 防范:输入做过滤,输出做转义

这里发现输入的内容被放入到了js中

2 构造payload

';alert("attack xss")</script>           

复制

pikachu 靶场之XSS(跨站脚本) -下篇XSS 之href输出 XSS之 js输出 XSS 防范:输入做过滤,输出做转义

XSS 防范:输入做过滤,输出做转义

结语:

本人菜弟弟一个,大佬勿喷,谢谢