快速找出网站中可能存在的XSS漏洞实践(一)

news/2024/5/14 11:55:11/文章来源:https://blog.csdn.net/u013431141/article/details/81911969

一、背景

笔者最近在慕课录制了一套XSS跨站漏洞 加强Web安全视频教程,课程当中有讲到XSS的挖掘方式,所以在录制课程之前需要做大量实践案例,最近视频已经录制完成,准备将这些XSS漏洞的挖掘过程记录下来,方便自己也方便他人。

在本篇文章当中会一permeate生态测试系统为例,笔者此前写过一篇文章当中笔者已经讲解如何安装permeate渗透测试系统,因此这里不再重复讲解如何安装此渗透测试系统,参考文档:利用PHP扩展Taint找出网站的潜在安全漏洞实践

二、内容概要

  1. XSS漏洞原理
  2. 反射型挖掘
  3. 存储型挖掘

三、漏洞简介

在实践漏洞之前,笔者准备先简单介绍一下XSS漏洞,不过XSS的相关概念介绍并不是本文的重点,因此不会过多细讲;XSS的漏洞类型主要分为三类:反射型、存储型、DOM型

3.1 漏洞成因

XSS的漏洞主要成因是后端接收参数时未经过滤,导致参数改变了HTML的结构,如下图所示
image

在图中可以看到攻击者的参数被原样放到了HTML代码当中,导致原本的结构被改变,当这份代码被浏览器执行之后,将执行alert事件。

3.2 反射型

反射型XSS在笔者闹钟的定义是,如果URL地址当中的恶意参数会直接被输出到页面中,导致攻击代码被触发,便称之为反射型XSS,如下图所示
image

在图中可以看到,此处原本是输入一个名字,单实际传递了一个script标签,此标签也被原样放到了HTML结构当中,结果script标签代码中的代码被触发

3.3 存储型

存储型XSS,顾名思义便是恶意参数被存储起来了,通常存储在后端服务器当中,所以存储型XSS在URL地址当中不会包含恶意参数,对于受害者来说,很难发现已经被攻击了,如下图存储型XSS被触发

image

在图中笔者并没有在URL地址当中看到script代码,但是攻击代码依然被触发,说明攻击代码来自于服务器,而这个攻击代码确实是由攻击者传递到服务器当中去的。

一般情况下,当攻击者将攻击代码通过表单传递到服务器当中去,会得到一个新页面的地址,这个地址中URL并没有明显异常,比如如下URL地址

http://permeate.songboy.net/article/1

但当存在存储型XSS时,受害者打开此URL,攻击代码将会被触发,这种情况下笔者便称之为存储型XSS漏洞。

3.4 DOM型

DOM型XSS较为特殊,笔者前面反射型XSS和存储型XSS都是以传播方式来区分的,而DOM型XSS和传参方式无关,而是当开发者做了一些安全防护之后,任出现安全问题的一种现象,如下图所示

image

在图片中,可以看到参数name已经使用函数转义了,按理说此时将参数传递到前端页面是不会产生XSS漏洞的;但当JavaScript代码将参数进行DOM节点操作之后,原本被转义的代码又会被还原,因此还是会被触发,如下图所示

image

在图中看到XSS代码已经被触发,这种DOM型XSS相对来说更加隐蔽,所以防御XSS漏洞的不能仅仅依靠后端开发者,前端开发者也应当了解XSS漏洞。

四、反射型挖掘

经过上一节的原理介绍,笔者相信大家对XSS已经有一些了解,现在笔者需要进行手工XSS漏洞挖掘,在手工挖掘之前笔者需要先逛逛网站有哪些功能点,如下图是permeate的界面

image

4.1 思路分析

在知道反射型XSS,是通过URL地址传播的,那么笔者就需要思考那些地方会让URL地址的参数在页面中显示;相信读者都用过一些网站的站内搜索,在站内搜索的位置往往会将搜索的关键词展示在页面当中,如下图所示

image

而在首页笔者也看见此网站有搜索功能,因此可以从搜索位置着手,可以在搜索位置输入一个简单的payload,参考如下

<script>alert(123)</script>

当点击搜索后,会自动跳转到以下URL当中,此时浏览器的URL地址已经发生了变化,URL地址如下:

http://permeate.songboy.net/home/search.php?keywords=<script>alert(123)</script>

搜索的表单是使用了GET传参,满足了测试反射型的第一步要求

4.2 漏洞检验

接下来就需要看看笔者的payload有没有被触发,结果很意外,不但没有被触发还被浏览器所阻止了,如下图

image

这里就需要跟读者说明一下,谷歌内核浏览器自带XSS筛选器,所以对于反射型XSS测试,尽量不使用谷歌浏览器,笔者建议使用火狐浏览器进行测试;

4.3 结果分析

现在笔者将上面的URL地址复制下来,并粘贴到火狐浏览器当中,并按下回车,看到效果如下图

image

此时payload已经被触发,说明找到了一个反射型XSS的漏洞,这种漏洞相对来说非常初级,随着浏览器的XSS筛选器变得更加智能,这种漏洞也越来越少,在下面的内容当中笔者将会提到存储型XSS挖掘与绕过。

五、存储型挖掘

现在笔者来寻找存储型XSS,存储型的攻击代码是存储在服务端,因此需要找出一些会将表单内容存储到服务端的位置,笔者在之前已经对permeate做了一番了解,因此知道permeate拥有发帖和回帖功能,这些功能正是需要将参数存储起来并展示的地方。

5.1 发现漏洞

在首页点击XSS板块,进入到了板块列表当中,如下图

image

在右下角能看到有一个发帖按钮,点击发帖按钮后,即可进入发帖界面,如下图

image

在permeate渗透测试系统当中,笔者如果要发表帖子,那么就需要有账号,笔者这里随便注册一个账号,注册过程笔者就不详细讲解了

5.2 检验漏洞

在注册账号完成并登陆之后,笔者再次打开发帖页面,并在标题处和内容处都填写payload,参考内容如下:

<script>alert(123)</script>

在标题处和帖子内容中分别填写payload,填写好之后,应和与下图一致

image

填写好内容之后,笔者点击下方的发表按钮,即可进行发帖,发帖成功会弹出一个提示成功,如下图所示

image

点击确定之后,会跳转到发帖列表,并弹出一个123的提示框,如下图所示

image

如果看到这个弹框,说明笔者的payload已经被执行,点击确定就可以看到列表的内容,如下图所示

image

在列表中只显示标题,所以帖子内容中的payload并没有被执行;

5.3 抓包绕过

现在点击标题,进入帖子详情页面,在详情页笔者发现payload也只触发了一次,而且内容当中的标签被直接显示了出来,如下图

image

当标签被直接显示出来,这说明笔者的参数被转义了;转义分为两种,前端转义和后端转义,如果是后端转义通常笔者会放弃测试,如果是前端转义则可以绕过这个限制;在这里笔者发现标题没有被转义,而内容被转,猜测可能是前端做的转义,因此可以通过浏览器的审查工具将数据包拷贝下来;

首先重新打开发帖页面,然后在网页随便一个位置单击鼠标右键->选择审查元素->切换到network标签并勾选Preserve log,打开网络并勾选Preserve log的目的是让发表帖子之后,能在网络请求中找到该记录,现在笔者可以填写新的payload,如下图
image

点击发表按钮之后,笔者可以在控制台中找到刚才的post请求,从请求中可以看出,这个数据发出去就已经被转义了,如下图
image

5.4 编码替换

当确定这个地方存在前端做了转义处理,如果后端没有做处理,笔者就可以绕过它,现在笔者将请求复制出来,然后改变里面的数据,如下图
image

复制出来的数据如下

curl 'http://permeate.songboy.net/home/_fatie.php?bk=6&zt=0' -H 'Connection: keep-alive' -H 'Cache-Control: max-age=0' -H 'Origin: http://permeate.songboy.net' -H 'Upgrade-Insecure-Requests: 1' -H 'Content-Type: application/x-www-form-urlencoded' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8' -H 'Referer: http://permeate.songboy.net/home/fatie.php?bk=6' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8' -H 'Cookie: __cfduid=defc970ef7081e30aedd761da5762b1891532003579; UM_distinctid=1655a61a23343c-03f0904540a333-34657908-1fa400-1655a61a234323; PHPSESSID=rufhm0741qfv55cpfnc80k1g4l' --data 'csrf_token=3908&bk=6&title=222%3Cscript+%3Ealert%28123%29%3C%2Fscript%3E&content=%3Cp%3E222%26lt%3Bscript+%26gt%3Balert%28123%29%26lt%3B%2Fscript%26gt%3B%3C%2Fp%3E' --compressed

笔者找到参数中的titlecontent参数值,将title的参数值复制下来,然后替换content的参数值,替换后的内容如下

curl 'http://permeate.songboy.net/home/_fatie.php?bk=6&zt=0' -H 'Connection: keep-alive' -H 'Cache-Control: max-age=0' -H 'Origin: http://permeate.songboy.net' -H 'Upgrade-Insecure-Requests: 1' -H 'Content-Type: application/x-www-form-urlencoded' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8' -H 'Referer: http://permeate.songboy.net/home/fatie.php?bk=6' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8' -H 'Cookie: __cfduid=defc970ef7081e30aedd761da5762b1891532003579; UM_distinctid=1655a61a23343c-03f0904540a333-34657908-1fa400-1655a61a234323; PHPSESSID=rufhm0741qfv55cpfnc80k1g4l' --data 'csrf_token=3908&bk=6&title=222%3Cscript+%3Ealert%28123%29%3C%2Fscript%3E&content=222%3Cscript+%3Ealert%28123%29%3C%2Fscript%3E' --compressed

替换完成之后,笔者将此内容复制到终端当中(如果读者用的是windows操作系统,可以下载一个cmder),然后按下回车键,结果如下图

image

5.5 结果分析

在返回结果当中可以看到提示发帖成功,此时就笔者已经成功发布了一个新帖子,回到帖子列表当中看到有三条帖子,在最后面的帖子则是笔者新发布的,如下图

image

打开详情页,笔者被弹了两次提示框,说明标题和内容当中的payload都被触发,并且在控制台当中也可以看到script变成了DOM节点,而不是文本展现出来,如下图所示

image

看到此处说明笔者已经成功绕过前端XSS过滤器,晚一些在发表一篇工具盘,和防御篇,大家有兴趣也可以支持一下笔者的视频教程,URL地址如下

https://coding.imooc.com/class/242.html

Thanks♪(・ω・)ノ


作者:汤青松

微信:songboy8888

日期:2018-08-21

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_792440.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过Web安全工具Burp suite找出网站中的XSS漏洞实战(二)

一、背景 笔者6月份在慕课网录制视频教程XSS跨站漏洞 加强Web安全,里面需要讲到很多实战案例&#xff0c;在漏洞挖掘案例中分为了手工挖掘、工具挖掘、代码审计三部分内容,手工挖掘篇参考地址为快速找出网站中可能存在的XSS漏洞实践(一)https://segmentfault.com/a/1190000016…

通过代码审计找出网站中的XSS漏洞实战(三)

一、背景 笔者此前录制了一套XSS的视频教程&#xff0c;在漏洞案例一节中讲解手工挖掘、工具挖掘、代码审计三部分内容,准备将内容用文章的形式再次写一此,前两篇已经写完&#xff0c;内容有一些关联性&#xff0c;其中手工XSS挖掘篇地址为快速找出网站中可能存在的XSS漏洞实践…

通过代码审计找出网站中的XSS漏洞实战(三)

一、背景 笔者此前录制了一套XSS的视频教程&#xff0c;在漏洞案例一节中讲解手工挖掘、工具挖掘、代码审计三部分内容,准备将内容用文章的形式再次写一此,前两篇已经写完&#xff0c;内容有一些关联性&#xff0c;其中手工XSS挖掘篇地址为快速找出网站中可能存在的XSS漏洞实践…

阿里云快速网站搭建详解

一、网站建站流程 主要步骤: 要有一个域名购买主机要有数据库,一般购买主机赠送解析域名下载网站程序(演示用的WordPress)上传程序安装程序(配置数据库、网站基本信息、管理员信息等)二、DNS服务器快速入门 DNS服务概述 DNS(Domain Name System)域名系统,在TCP/IP 网…

网易易盾推出政企网站安全方案 主打主动治理、防篡改

今天&#xff0c;网站已经成为企业、政府、教育等机构必备的“生产资料”&#xff0c;它是信息展示、服务提供、营销宣传以及企业形象的重要渠道。然而&#xff0c;如此重要的对外窗口&#xff0c;在今天仍遭受连绵不绝的网站篡改等安全事件。 网页篡改是指恶意破坏或更改网页内…

VS2012 发布网站步骤

VS2012中发布网站的方式与以往有了不同&#xff0c;前面的版本发布如图 而2012点publish的时候弹出框有所不同&#xff0c;这边需要新建一个profile名字随便起&#xff0c;发布的方式有好几种&#xff0c; 当然不同的方式配置不同&#xff0c;用的最多的就是files system了 选择…

在Github上搭建自己的博客网站

程序员都应该有写博客的习惯&#xff0c;博客可以作为知识管理&#xff0c;提升自己。当然写博客的地方有很多&#xff0c;CSDN&#xff0c;博客园以及新浪&#xff0c;网易等等。但是如果使用Github Pages来搭建一个有自己域名的独立网站&#xff0c;会不会更加炫酷呢&#xf…

使用七牛云存储在网站中进行图片外链

在CSDN中写博客&#xff0c;如果想在文章中插入一张图片&#xff0c;其实是非常简单的&#xff0c;只要从你本机进行图片选择&#xff0c;然后选择上传&#xff0c;图片就会上传到CSDN的服务器&#xff0c;到时候在文章显示的时候就会读取该图片。但是如果是在自己的搭建的网站…

使用百度统计对网站进行流量分析和统计

在自己建立一个网站后&#xff0c;最关心的问题就是到底有多少人访问了我的网站&#xff0c;也就是我的网站的流量到底是多少。以此可以不断进行完善和优化。这里将会使用百度的两个统计工具&#xff1a;百度统计和百度站长来进行分析。以我自己的建立的基于Hexo博客网站 : htt…

按钮制作网站收集

As Button Generator is the Button Generator 网站地址&#xff1a;http://jirox.net/AsButtonGen/ FlashButton.com free Animated Flash Buttons Menu Generator 网站地址&#xff1a;http://www.flashbuttons.com/ Da Button Factory Create pretty buttons online, quickl…

Logo在线制作网站收集

Supalogo - create nice logo 简单的Logo在线生成器 网站地址&#xff1a;http://supalogo.com/ 效果&#xff1a; 网站预览图&#xff1a; 说明一点就是&#xff0c;该网站也支持中文&#xff0c;日文等等。不过格式只有一两种。 Logo Ease -Free Logo Design Logo Ease…

0days最好的破解网站

best 0days ,0days,crack,patch,keymaker,keygen,bbl,download Search result!不知道有没有人知道这个东西&#xff0c;号称最好的破解&#xff0c;补丁&#xff0c;序列号生成等等之类的。网站地址&#xff1a; http://0days.51cc.net/

歌词搜索网站收集

LRC123 LRC歌词搜索引擎 网站地址&#xff1a;http://www.lrc123.com 飞叶歌词网 -全球最大中文LRC歌词搜索引擎 网站地址&#xff1a;http://lrc.aspxp.net 歌词搜索的网站蛮多的&#xff0c;LRC123网站不错。

图片特效制作网站收集

3D-box maker 3d-box & package on-line for free 网站地址&#xff1a;http://3d-pack.com / 效果图&#xff1a; Preloaders.net | Free AJAX animated loading gifs | 3 dimensional (3D) 三维进度条、Load图案制作 网站地址&#xff1a;http://preloaders.net / 缩略…

11个超棒的iOS开发学习网站

我相信&#xff0c;要想从一个"还不错"的人变成一个卓越的人&#xff0c;我们需要不停地向他人学习&#xff0c;同时还得尽早地适应最新的技术和工具。除了苹果官方文档网站之外&#xff0c;列举了一些能获取有价值的文章和资源的网站&#xff0c;这些网站能够帮助我…

mysql is null 性能_「isnull」MySql数据库的优化-MySql中is NULL、ISNULL()和IFNULL()运行速度的比较 - seo实验室...

isnull在查询过程中&#xff0c;我们经常用到非空和is null的查询&#xff0c;为了更高效的查询&#xff0c;我们应该知道那种方法更快。在上一篇中&#xff0c;我们已经添加了一些数据。根据这些数据我们就可以来做一些验证。第一步&#xff0c;is NULL要比ISNULL()的比较SELE…

modelandview跳转页面404_404页面对网站SEO有什么影响?小看它可能让你吃大亏

前两天有个朋友找到我&#xff0c;让我帮他看一下他的网站关键词排名为什么突然暴跌&#xff0c;后来在检查原因的时候才发现&#xff0c;原来是他把404页面给去除了。在他将404页面恢复之后&#xff0c;许多关键词又重新有了一定的排名。因此在做网站SEO优化的时候也不要忽略了…

微软法国一网站被黑

微软法国的网站&#xff1a; http://experts.microsoft.fr/被黑&#xff0c;我这里现在无法访问。据黑客称&#xff0c;他来自土耳其&#xff0c;下一个目标就是microsoft.com。看截图&#xff1a;

速卖通关键词挖掘工具_利用SEO工具挖掘同行竞争对手关键词数据快速布局网站词库...

工欲善其事必先利其器&#xff0c;这句话告诉我们&#xff0c;善用工具&#xff0c;往往会起到很好的效果。对于SEO来说&#xff0c;做排名有很多方面的工作&#xff0c;这其中网站内容是非常重要的部分。而网站内容是围绕关键词的布局而展开。所以一个网站的关键词布局&#x…

Kevin Mitnick的网站 Gotz owned!

... 8月23日国际报道知名黑客Kevin Mitnick的网站上周日遭人入侵&#xff0c;还留下到此一游的留言。黑客是在上周日由巴基斯坦入侵代管Mitnick网站的电脑&#xff0c;并换掉原有首页&#xff0c;包括KevinMitnick.com与MitnickSecurity.com都出现一些不雅字句。“代管我网站的…