漏洞重温之XSS(上)
漏洞简介
跨站脚本攻击(XSS)是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览页面之时,嵌入web网页中的script代码会被执行,从而达到恶意攻击用户的目的。
XSS漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数。
常见的输出函数有:echo printf print print_r sprintf die var-dump var_export
xss漏洞最常见的验证方法为先插入一段恶意代码,完成在网站上的弹窗操作,利用恶意代码攻击自己,如果再重复访问网页时发现弹窗,则可以证明该位置存在xss漏洞。
xss漏洞的危害:
(1)窃取管理员账号或cookie,入侵者可以冒充管理员的身份登录后台,使入侵者具有恶意操控后台数据的能力,包括增删改查信息等。
(2)窃取用户的个人信息或者登录账号,对网站用户的安全产生巨大威胁。例如冒充用户身份进行各种操作。
(3)网站挂马。先将恶意攻击代码嵌入到web应用程序之中。当用户浏览该挂马页面时,用户的计算机会被植入木马。
(4)发送广告或垃圾信息。攻击者可以利用xss漏洞植入广告,或者发送垃圾信息,严重影响到用户的正常使用。
常见的xss漏洞分为存储型 反射型、DOM型三种。
(1)反射型xss
用户在请求某条URL地址的地时候,会携带一部分数据。当客户端进行访问某条连接时,攻击者可以将恶意代码植入到url,如果服务端未对url携带的参数做判断或者过滤处理,直接返回相应页面,那么xss攻击代码就会一起被传输到用户的浏览器,从而出发反射型xss。例如,当用户进行搜索时,返回结果通常会包括用户原始的搜索内容,如果攻击者精心构造包含xss恶意代码的链接,诱导用户点击并成功执行后,用户的信息就可以被窃取,甚至可以模仿用户进行一些操作。
反射型xss不会永久存储用户的数据;仅发生在用户的一次访问过程之后。这个过程就像一次反射,因此得名反射型xss。反射型xss的触发条件比较苛刻,需要攻击者想法设法的引导用户点击链接,但产生的危害不容忽视。
(2)存储型xss
存储型xss又叫持久性。一般而言,它是三种xss里危害最大的一种。此类型的xss漏洞是犹豫而已攻击代码被持久化保存到服务器上,然后被显示到html页面之中。这类漏洞经常出现在用户评论的页面,攻击者精心构造xss代码,保存到数据库中,当其他用户再次访问这个页面时,就会触发并执行恶意的xss代码,从而窃取用户的敏感信息。
(3)DOM型xss
DOM-basedXSS漏洞是基于文档对象模型(Document Object Model)的一种漏洞。这种xss与反射型xss、存储型xss在原理上有本质区别,它的攻击代码并不需要服务器解析响应,触发xss靠的是浏览器端的DOM解析。客户端上的javascript脚本可以访问浏览器的DOM并修改页面内容,不依赖服务器的数据,直接从浏览器端获取数据并执行。
XSS挑战之旅level1-level7
level1
进入主页,发现只有一张图片,没有任何文本框可以尝试插入。
但发现网站url用name参数传参,并且更改name会改变页面显示。
直接尝试在name参数后面写入测试代码
<script>alert(1)</script>
第一关,通过
level2
第二关开头,发现了xss最熟悉的文本框,本着最基本的见框就插原则,使用测试代码尝试。
<script>alert(1)</script>
根据网页反馈,发现代码并没有被执行。
右键,点击查看源码,找问题所在。
可以看到,我们插入的代码在两个双引号中间,并当做字符串传送,故没有完成他本来应该完成的操作。
尝试闭合前面的单引号,代码如下:
"><script>alert(1)</script>
第二关,通关。
level3
第三关,发现插入框,使用测试代码测试。
<script>alert(1)</script>
根据网页反馈,发现插入代码并没有被执行
右键查看网页源码,发现网站过滤了尖括号,显然script、img这些常用标签无法使用。
尝试使用onclick事件进行xss攻击。
使用单引号闭合value
' onclick=alert(1)
尝试触发事件,但代码却依然没有执行,猜测代码出现问题。
右键查看网页源码
发现代码后面多了一个单引号,引起代码出错。
尝试在代码后面多写一个单引号闭合后方代码。
第三关,通关。
level4
第四关开始,研习传统,使用测试代码测试。
PS:
测试代码的作用:
1.简单直接的检测。如果网站没有设置对xss的防备,可以直接通过代码检测出问题所在。
2.查看网站的防御机制如何。如第三关,第四关,网站通过过滤尖括号来阻止xss攻击,在攻击没有成功的时候,我们可以通过查看网页源码,来查看具体哪个地方出现问题。
发现代码没有被执行,右键查看网页源码。
发现该源码和第四关区别仅仅在于一个使用单引号,一个使用双引号。
废话不多,直接上代码。
" onclick=alert(1) "
第四关,通关。
level5
第五关开局,发现文本框,上测试代码。
发现插入代码未执行,右键查看网站源码。
发现该处需要先闭合前方的value,同时,注意到script标签被转义,变成了scr_ipt,导致该标签不可用。
换测试代码,注意闭合前方。
"><img src=a onerror=alert(1)>
从未加载的图片位置,可以看出来,代码已经成功执行了,但是却没有弹窗,说明代码某处出现问题,导致无法正常运行。
右键查看源代码,找寻问题所在。
问题发现,在我们插入的代码后方,多了一个">,因为这个,才导致我们的代码没有正常执行。
尝试闭合后方尖括号。
发现我们希望出现的弹窗依然没有出现,右键查看网页源码。
从这个地方,可以看出来,问题的确出在最后的尖括号上,正常情况,后方尖括号是可以被闭合的,但是现在却无法完成。
尝试不闭合,直接将后方注释。
PS:这里这么尝试的原因是,代码前方并没有出现任何问题,只是后面多了一个尖括号,如果可以将后面代码注释掉,使其不会影响代码正常运行,可能会达到预期目的。
尝试过后,发现依然无法执行,猜测后方尖括号可能无法被注释等操作,可以利用到尖括号和双引号的有之前提到的onclick事件。
事件依然没有被执行,右键查看源码。
发现onclick事件被过滤,导致无法成功执行。
尝试使用a标签来完成xss攻击。
代码如下
"><a href="javascript:alert(1)
第五关,通关。
level6
第六关,依然先对文本框进行xss攻击。
发现网站转义了script标签,猜测可能也转义了其他常见标签和事件,直接采用a标签进行xss攻击尝试。
代码没有达到预期效果,右键查看网站源码。
发现网站转义了href属性,尝试使用大小写来绕过。
第六关,通关。
level7
第七关,开局使用测试代码进行第一次攻击。
发现script标签被过滤。
经过测试script、src、on等关键字被过滤,显然无法再使用script标签、img标签,和a标签来完成目的。
尝试使用单词嵌套来进行攻击。
" oonnclick=alert(1) "
第七关,通关。
漏洞重温之XSS(上)的更多相关文章
- 漏洞重温之XSS(中)
漏洞重温之XSS(中) XSS挑战之旅 level8-level13 level8 第八关开局,发现button从搜索变成了友情链接,发现该页面情况跟前面不同,先右键查看代码,再进行尝试. 上测试代码 ...
- 漏洞重温之XSS(下)
XSS总结 XSS的可利用方式 1.在登录后才可以访问的页面插入xss代码,诱惑用户访问,便可直接偷取用户cookie,达到窃取用户身份信息的目的. 2.修改昵称,或个人身份信息.如果别的用户在登录状 ...
- 漏洞重温之文件上传(FUZZ)
文件上传FUZZ思路通关upload-labs Pass-16 黑盒阶段 进入第十六关,首先我们能看到,该页面的上传点为图片上传. 首先,先把对方想的简单一点,这里虽然是上传图片,但是可能只是前端js ...
- [80Sec]深掘XSS漏洞场景之XSS Rootkit
顶80SEC的牛. 深掘XSS漏洞场景之XSS Rootkit[完整修订版] EMail: rayh4c#80sec.com Site: http://www.80sec.com Date: 2011 ...
- 漏洞重温之sql注入(五)
漏洞重温之sql注入(五) sqli-labs通关之旅 填坑来了! Less-17 首先,17关,我们先查看一下页面,发现网页正中间是一个登录框. 显然,该关卡的注入应该为post型. 直接查看源码. ...
- 漏洞重温之sql注入(六)
漏洞重温之sql注入(六) sqli-labs通关之旅 Less-26 进入第26关,首先我们可以从网页的提示看出本关是get型注入. 我们给页面添加上id参数后直接去查看源码. 需要关注的东西我已经 ...
- Web安全学习笔记 XSS上
Web安全学习笔记 XSS上 繁枝插云欣 --ICML8 XSS的分类和基本认识 XSS的危害 同源策略的基本认识 一.XSS的分类和基本认识 1. 简介 XSS全称为Cross Site Scrip ...
- WordPress Checkout插件跨站脚本漏洞和任意文件上传漏洞
漏洞名称: WordPress Checkout插件跨站脚本漏洞和任意文件上传漏洞 CNNVD编号: CNNVD-201311-015 发布时间: 2013-11-04 更新时间: 2013-11-0 ...
- 漏洞重温之sql注入(七)
漏洞重温之sql注入(七) sqli-labs通关之旅 Less-31 首先,进入31关,我们先添加上id参数. 然后,我们查看源码. 我们门可以看到,index页面源码其实很简单,网页也没有对我们的 ...
随机推荐
- RocketMQ在面试中那些常见问题及答案+汇总
0.汇总 RocketMQ入门到入土(一)新手也能看懂的原理和实战! RocketMQ入门到入土(二)事务消息&顺序消息 从入门到入土(三)RocketMQ 怎么保证的消息不丢失? Rocke ...
- Mobilenet V1
目录 1. Depth Separable Convolution 2. 网络结构 3. 宽度因子和分辨率因子 4. 代码实现 参考博客: https://cuijiahua.com/blog/201 ...
- Elasticsearch源码解析:环境搭建
在之前学习Redis的过程中,我就是一边通过文档/视频学习,一边阅读源码.我发现两种方法可以相辅相成,互相补充.阅读文档可以帮助我们快速了解某个功能,阅读源码有助于我们更深入的理解这一功能的实现及思想 ...
- 安装nginx1.10和状态模块
环境 操作系统: Centos7.2 内核: 3.10.0-327.el7.x86_64 nginx: nginx-1.10.0.tar.gz 安装: 1.安装依赖包 yum -y install g ...
- Linux下给PHP安装redis扩展
一.下载redis扩展源码包 PHP官网下载地址:http://pecl.php.net/package/redis 二.安装依赖插件 yum -y install wget make gcc gcc ...
- 《谁说菜鸟不会数据分析》高清PDF全彩版|百度网盘免费下载|Python数据分析
<谁说菜鸟不会数据分析>高清PDF全彩版|百度网盘免费下载|Python数据分析 提取码:p7uo 内容简介 <谁说菜鸟不会数据分析(全彩)>内容简介:很多人看到数据分析就望而 ...
- lemon使用方法
1.打开lemon,点击文件--新建比赛 2.输入比赛标题.保存文件名.比赛目录,点击确定 3.打开主文件夹,找到刚才创建的目录,双击打开 4.进入文件夹\(data\) 5.建立一个名为T1的文件夹 ...
- PHP timezone_identifiers_list() 函数
------------恢复内容开始------------ 实例 输出非洲的所有时区: <?phpprint_r(timezone_identifiers_list(1));?> 运行实 ...
- Electron~增量更新
增量更新说明文档 English Version 提前准备 准备本地或者远程服务器或者远程静态文件url npm i -g http-server cd yourFileFolder // 进入任意文 ...
- lamp分离部署
目录 lamp分离部署 1. 安装httpd 2. 安装mysql 3. 安装php 4. 配置apache并部署项目 4.1 启用代理模块 4.2 配置虚拟主机 4.3 部署PbootCMSPHP企 ...