pikache靶场通关——XSS漏洞

文章目录

  • 前言
  • 环境
  • 第一关、反射型xss(get)
    • Step.1、输入特殊字符测试
    • Step.2、输入js语句
    • Step.3、在URL中输入js语句
  • 第二关、反射性xss(post)
    • Step.1、输入获取cookie的js语句
  • 第三关、存储型xss
    • Step.1、输入获取cookie的js语句
    • Step.2、查看页面源码
    • Step.3、感受危害性
  • 第四关、DOM型XSS
    • Step.1、输入js语句测试
    • Step.2、查看页面源码
    • Step.3、再次输入js代码编写的payload
  • 第五关、DOM型XSS-S
    • Step.1、输入js语句测试
    • Step.2、查看页面源码
    • Step.3、输入编写好的payload
  • 第六关、XSS盲打
    • Step.1、输入payload测试
    • Step.2、按提示查看后台
  • 第七关、XSS之过滤
    • Step.1、输入payload测试
    • Step.2、分析
    • Step.3、绕过过滤
  • 第八关、XSS之htmlspecialchars
    • Step.1、输入payload测试
    • Step.2、改造payload再次输入
  • 第九关、XSS之href输出
    • Step.1、输入payload测试
    • Step.2、输入js函数格式的payload
  • 第十关、XSS之js输出
    • Step.1、输入payload测试
    • Step.2、输入构造好的payload


前言

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

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

XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。

形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。

在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:

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

pikache靶场通关——XSS漏洞_第1张图片
靶场一共有10关,现我们就开始通关吧。


环境

靶场安装机器:Windows10(192.168.1.107)
渗透机器:Windows10(192.168.1.108)


第一关、反射型xss(get)

pikache靶场通关——XSS漏洞_第2张图片
一个平平无奇的输入框

Step.1、输入特殊字符测试

遇到输入框,作为渗透测试人员,第一反应就是输入特殊字符看看,我这里就先输入一个双引号"瞧瞧。
pikache靶场通关——XSS漏洞_第3张图片
能输出,看来特殊字符做了过滤

Step.2、输入js语句

往输入框中输入看看
pikache靶场通关——XSS漏洞_第4张图片

发现无法完全输入,查看页面源码,这输入框做了长度限制

pikache靶场通关——XSS漏洞_第5张图片

把长度限制改成100,再次输入js语句看看

在这里插入图片描述
pikache靶场通关——XSS漏洞_第6张图片
能成功弹出,说明存在XSS反射型漏洞

Step.3、在URL中输入js语句

在这里插入图片描述

回车,发现也能成功弹出
pikache靶场通关——XSS漏洞_第7张图片
到此,第一关通关


第二关、反射性xss(post)

pikache靶场通关——XSS漏洞_第8张图片
登录它吧,pikachu靶场的默认账号密码是:admin/123456,如果你想用渗透手法获取账号密码,也可是使用上一个挑战 —— 暴力破解的手法来获取,这里节省时间,就直接登录了。

pikache靶场通关——XSS漏洞_第9张图片
登录后发现,也是一个平平无奇的输入表单

Step.1、输入获取cookie的js语句

输入:
pikache靶场通关——XSS漏洞_第10张图片
好了,弹出了cookie信息,说明这里的确存在XSS漏洞,第二关通关


第三关、存储型xss

pikache靶场通关——XSS漏洞_第11张图片
平平无奇的一个留言框

Step.1、输入获取cookie的js语句

输入:
pikache靶场通关——XSS漏洞_第12张图片
能顺利弹出cookie信息

Step.2、查看页面源码

pikache靶场通关——XSS漏洞_第13张图片
直接在留言列表里面能看到我自己输入的payload

Step.3、感受危害性

使用另一个浏览器登录靶场,点开对应页面
pikache靶场通关——XSS漏洞_第14张图片
我都还没有进入页面就先弹出我的cookie了,这说明这句payload已经存进了数据库。设想一下,一个正常网站,每次进去都会弹出十几次的弹框,这回让人非常不方便。

打开数据库查看,这一句payload的确已经存进来了。
pikache靶场通关——XSS漏洞_第15张图片
第三关通关


第四关、DOM型XSS

pikache靶场通关——XSS漏洞_第16张图片
同样也是一个平平无奇的表单。

Step.1、输入js语句测试

输入:
pikache靶场通关——XSS漏洞_第17张图片
发现没反应。

Step.2、查看页面源码

pikache靶场通关——XSS漏洞_第18张图片
发现被包裹在a标签里面了,难怪不起作用,这稍微构造以下payload吧

Step.3、再次输入js代码编写的payload

输入:'>
pikache靶场通关——XSS漏洞_第20张图片

点击,发现有弹窗了
pikache靶场通关——XSS漏洞_第21张图片
第四关通关。


第五关、DOM型XSS-S

pikache靶场通关——XSS漏洞_第22张图片
如图,很哀伤的一个表单

Step.1、输入js语句测试

输入:
pikache靶场通关——XSS漏洞_第23张图片
没啥反应,这时候得查看页面源码

Step.2、查看页面源码

pikache靶场通关——XSS漏洞_第24张图片
这里有个onclick事件,点开它看看
pikache靶场通关——XSS漏洞_第25张图片
好了,看到我们输入的内容到这里来了,这直接按照第四关得步骤来吧

Step.3、输入编写好的payload

payload:#' onclick="alert(document.cookie)">
pikache靶场通关——XSS漏洞_第26张图片
第五关通关。


第六关、XSS盲打

pikache靶场通关——XSS漏洞_第27张图片
有点意思的一个页面

Step.1、输入payload测试

随便输入点payload吧
pikache靶场通关——XSS漏洞_第28张图片
提交后什么都没有发生,查看一下页面源码
pikache靶场通关——XSS漏洞_第29张图片
同样什么都没有。发现我输入得东西被post表单提交了,想不到,只能看个提示了。
pikache靶场通关——XSS漏洞_第30张图片
原来这里要登录后台查看

Step.2、按提示查看后台

pikache靶场通关——XSS漏洞_第31张图片
账号密码是:admin/123456,点击登录

pikache靶场通关——XSS漏洞_第32张图片
神奇得事情发生了,一登陆,我刚才输入的2个payload都弹出了。
好家伙,原来这就叫盲打,第六关通关。


第七关、XSS之过滤

pikache靶场通关——XSS漏洞_第33张图片
一股哲学气息扑面而来。

Step.1、输入payload测试

现在看到这种,第一反应就是扔个payload进去瞧瞧了

pikache靶场通关——XSS漏洞_第34张图片

好的,没反应,再来看看页面源码
pikache靶场通关——XSS漏洞_第35张图片
也没看出啥,但是能发现是使用get表单的方式提交,来,抬头看看url
在这里插入图片描述
就在这里了。

Step.2、分析

结合URL和返回结果,只输出了一个 “>”字符,其他的内容被过滤了,但我们完全不清楚它的过滤规则是什么,没办法,就尝试一下把URL中的payload中的部分字母变成大写吧。

Step.3、绕过过滤

把URL中的payload部分字母变成大写
在这里插入图片描述
pikache靶场通关——XSS漏洞_第36张图片
显示出来了!这不立即改写一下payload

改写后的payload:'

'
输入后再次提交
pikache靶场通关——XSS漏洞_第37张图片
这……看来得想想办法。

换个标签试一试吧,就尝试一下用a标签

输入的payload:
pikache靶场通关——XSS漏洞_第38张图片
好了,点击后面变色的内容能够直接弹出了,看来过滤规则是针对script标签的,第七关通关。


第八关、XSS之htmlspecialchars

pikache靶场通关——XSS漏洞_第39张图片
这表单挺臭美的

Step.1、输入payload测试

老规矩,输一个payload进去试一试
pikache靶场通关——XSS漏洞_第40张图片

查看页面源码
pikache靶场通关——XSS漏洞_第41张图片
看到这情况,尝试改造payload,把a标签给闭合掉

Step.2、改造payload再次输入

输入的payload:#' onclick='alert(document.cookie)'>
点击查看
pikache靶场通关——XSS漏洞_第42张图片
好了,成功弹出,第八关通关。


第九关、XSS之href输出

pikache靶场通关——XSS漏洞_第43张图片
这次反而挺平平无奇

Step.1、输入payload测试

输入payload,发现没反应再查看页面源码
pikache靶场通关——XSS漏洞_第44张图片

在这里插入图片描述
发现这里<>被编码了,这样子哪怕是把a标签给闭合也不可能实现,那就只好使用函数了,因为JavaScript里面的a标签中的href属性是可以直接使用函数的。

Step.2、输入js函数格式的payload

输入payload:javascript:alert(document.cookie)
pikache靶场通关——XSS漏洞_第45张图片
点击
pikache靶场通关——XSS漏洞_第46张图片
好了成功输出。第九关通关。


第十关、XSS之js输出

pikache靶场通关——XSS漏洞_第47张图片
回到原初,又是平平无奇

Step.1、输入payload测试

输入payload:
发现下面多了一串乱七八糟的东西
pikache靶场通关——XSS漏洞_第48张图片

查看页面源码
pikache靶场通关——XSS漏洞_第49张图片
发现我输入的payload到了script标签上来了,顺便还把script标签给闭合了,所以才会出现这一串乱七八糟的东西。

Step.2、输入构造好的payload

接下来就简单了,直接重新构造payload
新的payload:';alert("cookie值是:"+document.cookie); //
pikache靶场通关——XSS漏洞_第50张图片
这里cookie值是空获取不到,但弹窗了,第十关通关。


你可能感兴趣的:(渗透模拟练手,web安全,xss)