freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

来玩玩pikachu靶场之XSS模块
2022-11-13 23:54:07
所属地 甘肃省

hello大家好啊,前几篇文章给大家教了pikachu靶场的搭建,我们今天步入正题,来透彻研究下XSS(基础)

1668352613_63710a6582e3beb0d4cde.png!small?1668352614431

上号1668352640_63710a8024c4fd534aecb.gif!small?1668352641205

XSS(跨站脚本)概述Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
1.反射性XSS;
2.存储型XSS;
3.DOM型XSS;

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

壹·反射型xss(get)

1668352718_63710ace0968ccbc83e01.png!small?1668352718942

打开靶场可以看见有一个文本框可以输入内容,旁边的按钮是提交,我们输入666来试试

1668352765_63710afdc58ba19a9575a.png!small?1668352766694

发现URL ?message=666

判断message为输入内容

放上去一个简单的JS语句看看

<script>alert("XSS")</script>

第一次尝试直接输入文本框

1668352899_63710b8334be778c69c18.png!small?1668352900124

发现有字符限制,我们就写到URL里试试

1668352930_63710ba2804a6b857023e.png!small?1668352931321

抬走下一位

贰·反射型xss(post)

get和post有些人分不清,这个是别人的区分

3-1 GET请求在浏览器刷新或者回退的时候是无害的。POST的话数据会被重新提交。
3-2 GET可以被书签收藏,POST不行
3-3 GET可以存在缓存中。POST不行
3-4 GET 会将数据存在浏览器的历史中,POST不会
3-5 GET 编码格式只能用ASCII码,POST没有限制
3-6 GET 数据类型urlencode,POST是URLENCODE,form-data
3-7 可见性 参数在URL用户可以看见,POST的参数在REQUSET BODY中不会被用户看见
3-8 安全性 GET相对不安全 POST相对安全些
3-9 长度 参数一般限制2048(和WEB服务器相关),参数无限制。

我这里用CTF web的一个基础练习来引入下

1668353395_63710d732233fa7c0572a.png!small?1668353395946

url写?a=1,提交get

1668353465_63710db9e50f2f5686105.png!small?1668353466853

post可以用burp也可以用firefox的hackbar,我喜欢用hackbar一点

1668353638_63710e66a50097b46fd87.png!small?1668353639682

OK啊,直接是显示flag了好吧,所以大概就是这个意思

我们来讲正题吧

1668353822_63710f1e6c31db5d06aef.png!small?1668353823320

随便输入用户名密码发现不在URL里,所以没法在URL嵌入恶意链接,我们用post

里面提示admin 123456,登录进去是这样的

1668353983_63710fbf5455e04e00b61.png!small?1668353984176

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


1668353996_63710fccb58ed7b944a2f.png!small?1668353997506

OK抬走下一位

叁·存储型xss

这种我多半在什么在线留言、提交留言的地方见过

1668354130_63711052afdfeda119f76.png!small?1668354131665

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

还是来一句,直接报cookie

等等,还没完,你猜他为什么要叫做存储型

我们从其他地方打开试试

1668354181_6371108522fd6e7511ee9.png!small?1668354181932

任何地方任何人任何时间都会弹这个,说明存储型XSS能危害所有访问受影响页面的用户

抬走下一位

肆·DOM型xss

进去一个输入框啊

1668354283_637110eb185382081f9dc.png!small?1668354283965

我们看下源码ctrl+f

搜一下链接“what do you see?”

1668354342_63711126e9ebfa9b569e2.png!small?1668354343782

芜湖

分析一下啊,构造一个

a href='#' onclick="alert(666)"> '>what do you see?</a>

payload就是#' onclick="alert(666)">

1668354474_637111aa474aff9c10049.png!small?1668354475140

抬走下一位

伍·讲一下过滤,其他的我过几天讲吧,困了

随便输入一些内容,提交之后发现页面有回显输入的内容,url中也有输入的内容

然后离开就没,get型

<script>alert("XSS")</script>

直接插,结果给我过滤了1668354641_63711251932c43b03631d.png!small?1668354642371

我直接盲猜符号,符号一个个试过了没问题,于是想到了绕过的<script>

在 html 里啊。这个 Onload 关键字就是一个事件,其他的所有标签都没有这个属性,但是 Body 标签是

有的。但是,有一定的局限性,如果 onload 事件在你的代码之前已经被处理了。那就不会触发了。。不

过我们可以继续看看 onerror 事件处理。

<IMG SRC="" onerror="alert('XSS')">

直接插

1668354735_637112af20d385e9f5675.png!small?1668354735929

抬走,没了~拜拜

# xss攻击 # XSS漏洞 # 漏洞复现 # Pikachu
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录