本文作者:i春秋签约作家——rosectow

0×00前言

XSS又名叫CSS全程(cross site scriptting),中文名跨站脚本攻击,目前网站的常见漏洞之一,它的危害没有像上传漏洞,sql注入,命令执行,这种危害性极高的漏洞一样,但是大致xss与上面讲的这些漏洞不一样它是需要去被动式来完成攻击的,攻击者需要让管理员,用户等来配合完成攻击,xss它有三种语言编写,我们常见的是JavaScript ,比较少见的actionscript,VBScript,它们都是可以在html的标签中执行的。

反射型的xss它是储存时间很短,在html的页面代码中,一但攻击者在网站植入反射型xss然后用户访问了就会被盗取cookie等等,存储型的xss是比较危险的一种xss,一般存储在网站保留用户数据的地方,一当用户访问就触发了攻击,dom型的xss先对也是比较隐蔽的,一般常见在url的get请求,这几种xss危害性最大的肯定就是存储型xss。

Xss通常分为三种类型,第一种是存储型xss,第二种是反射型xss,第三种是dom型xss。

Xss能做到的有盗取管理员,用户的cookie,url跳转,常用到的是盗取cookie,盗取到了管理员cookie那么我们也就可以登录管理员的账号了,那么这也就夸大了权限。

0×01构造攻击


 

在网站中很明显我们的JavaScript代码已经被存进去了,但是为什么没有弹窗呢?问题在于标签下面对该页面body内的标签查看,在跟踪情况。

这里已经将我们的JavaScript标签的alert(“xss”)过滤了,变成了无效的语句,<script>标签它还是亮着的,所以它是已经添加到代码里面去了

标签中只要<>xss<>内容不加入到标签里面它就会解析成文本内容,那么这时候就要更具其它的标签模仿构造,

<script href=&quot;alert(123)&quot;>xss</script>

变成这样,href是一个超级文本引用的标签,所以在这里这样构造测试,主要我们的弹窗已经加入到标签内

这次里面的内容都亮了,但是它还是不会弹窗,因为刚刚使用了href,href是一个超级文本引用标签,弹窗语句在里面就变成一个链接,重新来一次构造有效负载

换成了这样的一个code,onmouseover是鼠标移动事件 anytag任何标签,这样构造然后在测试

这样一来鼠标移动到xss的位置,就自动弹出123的提示框,当然这也只能弹出自己的cookie,客服需要去点击也才能看到cookie,这种基本就已经没有作用了下面再来换一种方法来构造过滤问题。

0×02 过滤模拟构造攻击

看到了我们的JavaScript语句已经给过滤了,正常的&lt;script&gt;&lt;/script&gt;标签以及带有攻击性的都是没办法成功载入的,我们的目的是达到弹窗或者获取cookie类

构造payload

结果我的class 跟 alert 都被过滤了,在一次构造,跟踪一下它的代码,一下是跟踪代码的一些问题以及它的过滤问题。

This.$obj.$chatCtnId.append(This.customHtml(This.replaceFace(This.xssWhiteList(filterXSS(question)))));

跟踪到这里对我的payload进行了过滤,在一次最终它的过程,分析看看能找到什么有效的绕过

跟踪到了网站对xss多种转义过滤,我利用了多种编码特殊字符都无法绕过,这也太强了吧!

继续测试,多种样式的测试,主要考虑到代码中添加了多个名单,以及对敏感字符的过滤本接下来在一次构造payload,我多次构造,但是依然给过滤,无论是字符编码类的都无效,心累一天,最后我构造了一条这样的payload

<a href=&quot;#javascript:alert('xss')&quot;>xss</a>

为撒它把我的符号过滤了每次它过滤都是直接吃了我的符号,这时候我也是闷逼了然后弹了一下,但是过程的确挺麻烦的到最后发现这样饶了

正常它的代码中可以构造正常可用的payload

都是可以不会遭到过滤的。

阅读原文↙↙↙↙

学习xss模拟构造攻击(第一篇)的更多相关文章

  1. 【Go 入门学习】第一篇关于 Go 的博客--Go 爬虫初体验

    一.写在前面 其实早就该写这一篇博客了,为什么一直没有写呢?还不是因为忙不过来(实际上只是因为太懒了).不过好了,现在终于要开始写这一篇博客了.在看这篇博客之前,可能需要你对 Go 这门语言有些基本的 ...

  2. RabbitMQ学习总结 第一篇:理论篇

    目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...

  3. 学习KnockOut第一篇之Hello World

    学习KnockOut第一篇之Hello World 笔者刚开始学习KnockOut.写的内容就相当于一个学习笔记.且在此处向官网致敬,比较喜欢他们家的Live Example版块,里面有jsFiddl ...

  4. ActionBarSherlock学习笔记 第一篇——部署

    ActionBarSherlock学习笔记 第一篇--部署          ActionBarSherlock是JakeWharton编写的一个开源框架,使用这个框架,可以实现在所有的Android ...

  5. LINQ to XML LINQ学习第一篇

    LINQ to XML LINQ学习第一篇 1.LINQ to XML类 以下的代码演示了如何使用LINQ to XML来快速创建一个xml: public static void CreateDoc ...

  6. 从.Net到Java学习第一篇——开篇

    以前我常说,公司用什么技术我就学什么.可是对于java,我曾经一度以为“学java是不可能的,这辈子不可能学java的.”结果,一遇到公司转java,我就不得不跑路了,于是乎,回头一看N家公司交过社保 ...

  7. 我们一起学习WCF 第一篇初识WCF(附源码供对照学习)

    前言:去年由于工作需要我学习了wcf的相关知识,初期对wcf的作用以及为何用怎么样都是一知半解,也许现在也不是非常的清晰.但是通过项目对wcf的运用在脑海里面也算有了初步的模型.今天我就把我从开始wc ...

  8. PHP学习记录第一篇:Ubuntu14.04下LAMP环境的搭建

    最近一段时间会学习一下PHP全栈开发,将会写一系列的文章来总结学习的过程,以自勉. 第一篇记录一下LAMP环境的安装 0. 安装Apache Web服务器 安装之前先更新一下系统 sudo apt-g ...

  9. Golang学习-第一篇 Golang的简单介绍及Windows环境下安装、部署

    序言 这是本人博客园第一篇文章,写的不到位之处,希望各位看客们谅解. 本人一直从事.NET的开发工作,最近在学习Golang,所以想着之前学习的过程中都没怎么好好的将学习过程记录下来.深感惋惜! 现在 ...

随机推荐

  1. mac 下 python链接mysql

    安装过程 :http://blog.topspeedsnail.com/archives/6018 注意 报错的话要先装一个东西 http://cdn.mysql.com/Downloads/Conn ...

  2. KEY操作续

    [KEY操作续] 1.UMP key 序列化给定 key ,并返回被序列化的值,使用 RESTORE 命令可以将这个值反序列化为 Redis 键. 序列化生成的值有以下几个特点: 它带有 64 位的校 ...

  3. Linux基石【第一篇】VMware上安装Centos及配置

    一.安装VMware软件 首先,下载个VMware软件,直接百度:VMware,然后找到可以下载的就可以 然后按步骤安装即可,安装完后,双击打开 二.安装Centos系统 打开VMware虚拟机,然后 ...

  4. for 续1

    --------siwuxie095                 /f 是四个参数中最复杂的一个,非常强大,不过其复杂性 令人望而生畏     /f 用途: 能够对字符串进行操作,也能够对命令的返 ...

  5. 解决opacity属性在低版本IE浏览器下失效的方法

    以前,一直都以为ie9以下的版本不支持opacity属性.所以就同时使用 opacity和ie独特的filter蒙版.但是有些时候需要一些动态的效果,就比如层的渐渐消失,隐藏,就需要使用动态变化的op ...

  6. eclipse或tomcat web项目启动失败其中一种解决办法

    失败信息如下: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to s ...

  7. Web页面显示日期和动态时刻脚本

    <script language="JavaScript" type="text/JavaScript">    <!--        tm ...

  8. 操作ini配置文件设计一个最基本的可视化数据库系统

    对于很多小项目来说,不需要搭建专门的数据库系统(例如用SQLite搭建本地数据库),这时可以用ini配置文件实现一个最基本的数据库,实现数据库最基本的增删改查功能. ini配置文件的用法参考我以前写的 ...

  9. <!DOCTYPE html>的重要性!

    噩梦开始的源头:之前写html或者jsp页面,从来不注意doctype的声明,也不太明白doctype的作用. 直到最近碰到了一个非常奇葩的bug:某一个页面在IE7和8,Chrome,ff等下正常, ...

  10. 访问localhost的phpmyadmin出现访问被拒绝

    原因是:没有配置MySQL数据库密码. 1.打开D:\wamp\apps\phpmyadmin x.xx找到config.inc.php. 修改并保存: $cfg['Servers'][$i]['us ...