`
womendu
  • 浏览: 1528583 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

xss漏洞的简单分析与利用

阅读更多
在web蓬勃发展的今天,xss毫无疑问已经变成最“流行”的漏洞,我曾经在安全公司的渗透测试报告里看到列为数十的高危xss漏洞,也看到越来越多的安全研究人员将目标投向xss攻击,发现100个甚至1000个之上的xss。xss变得如此流行的原因我猜测有几点,首先输入输出是一个应用程序最基本的交互,一个提供服务的应用程序可以不操作数据库,可以不与系统交互,但是肯定会将程序的处理结果返回给浏览器,加上程序员如果意识不到位,就必然发生xss,对于一个互联网公司,这两方面的因素加起来就会导致这个漏洞数量就非常可观,所以可以经常见到互联网公司如腾讯,新浪,百度,搜狐等等的xss漏洞报告。

  但是,在谈论xss的时候往往大家都会说这是一个xss漏洞,而不会提到这是个什么类型的xss漏洞,甚至这是个什么场景下的xss漏洞,包括有效的攻击方式上都不会去提,即使提到也是一些传说的危害譬如蠕虫,譬如挂马,譬如窃取用户信息,乃至钓鱼攻击。甚至由于种种原因,大家往往关注漏洞两个字甚于前面的xss。作为安全研究人员,这是一种不负责任的行为,这种行为的后果就是网络安全淡化为web安全,web安全淡化为xss,而xss淡化为alert(),总有一天程序员会不再信任我们,真正的威胁依然停留在系统里。这方面也有国际上的原因,太多的安全研究人员将重点放在xss的研究上,我不知道是否是国外的安全水平已经达到如此需要关注xss的水平,尽管xss是最普遍的漏洞,但是从黑客的利用程度上来看远远不如一个命令执行,一个文件上传漏洞来得实在。我相信Google已经达到这水平,但那只是Google,不是我们。

  我这里不想谈论如何防范xss漏洞,如果在你的系统里发现1000个之上的xss,那你就应该停止寻找更多的xss而该去想想如何从根源上杜绝xss,即使杜绝不了xss那也应该想想xss在这里是不是有什么可预见的风险,如果有的话那有什么方式可以将xss的危害弱化乃至一段时期内可以接受的程度。作为一个黑客实用主义者,我这里将描述一次xss渗透测试的简单思想以及实现,与学院派不同,渗透测试不能只是说说而已,必须真实的获取自己想要的东西才可以是成功。

  xss渗透测试基本思路

  在谈论具体的xss攻击之前,我们一定要清楚地知道我们的xss所处的位置在哪以及我们的xss的类型,也就是我上面说的xss攻击场景。反射型的xss比起持久型的xss来效果是不同的,访问量大的xss点与访问量小的xss点是不同的,发生在http://www.google.com和发生在https://www.google.com的xss点是不同的(你应该知道为什么不同),发生在前台的xss点与发生在后台的xss点同样不同。分析应用程序我们可以很快确认我们的xss点的场景,这在开放的程序里比较好确认,后面我们将讲述如何在一个黑盒的环境下分析出攻击的场景。

  在确认好xss点的场景之后,我们可以根据我们的目的来决定后续的攻击方向和思路。如果发生的点是一个持久型的并且访问量比较大,你可以依据自己的喜好是否来引起一次混乱;如果你有幸发现发生的点是在管理员的后台或者你可以通过某些方式和管理员的后台进行交互,那么你可以考虑是否需要通过窃取管理员的cookie来尝试进入后台,到目前为止,窃取cookie依然是最有效的攻击方式,尽管某些xss攻击平台可以演示很炫的攻击效果(前提是你的目标会在一个页面停留2个小时,这种情况比较少发生);如果发生的点是一款开源的或者所有数据请求你都可以分析的程序,你可以考虑利用xss做一些数据提交,但是前提是依赖于你的xss点发生的场景;或者大气点,有浏览器0day的直接上浏览器0day吧,成本有点高,看收获值不值得了,目前为止貌似这么说的比这么做的多:)

  攻击方向和思路确定之后后面的就是一些常规的体力活了,编写攻击代码,获取最终想要的东西,但是这过程可能并不是一帆风顺,甚至需要反复的调试攻击代码以保证最终的效果跟预期的一致。

一次黑盒的xss渗透测试

  因为某些原因我们很想测试下国内一个比较有名的评论网站,我们简单测试常规的安全漏洞之后我们没有发现什么有意思的如SQL注射之类的安全漏洞,甚至我们还没有办法找到它的后台,但是我们发现了他们的一个xss漏洞,比较悲观的是这是一个反射型的xss漏洞,所以我们不能直接把他页面黑了(如果是持久类型的xss,攻击目的就是破坏或者测试的话就可以考虑这么做,当然,如果是为了YY也是可以的)。我们不要YY,我们要shell。通过对站点的分析我们发现系统有个投稿功能,通过审核之后就可以发表。既然会有审核那么就意味着应该有后台之类的东西,同时我们实际上获得了一个和管理员交互的平台,因为我们写的内容他们肯定会看。于是我们将编写好的xss exploit url写到文章里,并且声称在他们的站点内发现了一个黄色的文章。这个xss exploit url会请求我的某个php文件,这个文件将记录所有请求的referer,cookie,ip,浏览器类型和当前的location。等待几十分钟之后,我们顺利获得了这些基础信息,但是我们发现这里的location和referer只能获得我们的xss exploit url,这跟我们希望获得的管理员后台并不一致。分析管理员在后台的操作我们大概可以知道他是点击连接来访问这个url的,那么我们是可以获得opener窗口的一些信息的,包括location等等。在获得location之后我们还是很失望,这只是一个内容展现的窗口,并不是后台的真正管理的地址,后台应该是有一个iframe类的东西,于是我们再次通过top.location获得后台的地址,这次对了,在我们的面前出现了后台登陆的地址,后面的利用窃取的cookie进入后台很可行哦:)但是我们在尝试利用cookie进入后台时依然出了问题,我们的cookie看起来并不有效,这是为什么呢?后来几次测试之后才发现程序做了cdn,我们访问到的登录地址并不是cookie所在的服务器,做了个host之后我们顺利登录进后台,后台界面出来的一瞬间让人感觉真是幸福:)后面的就简单,找后台的上传,传webshell,涂首页:)

  很明显,在这样一个场景下如果说到xss来做蠕虫肯定是不现实的,对于一个评论网站来说钓鱼也没有什么实际意义,对一个连用户机制都没有或者有用户机制但是用户交互比较低的应用程序来说偷取用户cookie同样也没有价值。而真正攻击的过程中也不是简单的说说那么容易,应用程序有很多机会可以防止这种攻击的发生,包括cookie和ip绑定,cookie做httponly,后台设置登录ip限制等等(不要跟我说那些看起来很神仙可以反弹的xss工具,这就跟物理学里面的理想环境里的实验一样不靠谱)。
在对未知的程序进行测试时,可能某些xss点发生在后台等我们未知的地方,而如果我们直接提交敏感的语句如 <script>alert()</script>等过去的时候,我们是无法知道程序的返回结果的,而且一旦程序对输入做了处理,在后台出现乱码等字符时,很容易引起别人的警觉。这个时候我们引入类似于渗透测试中经常使用的扫描的手法,在xss渗透测试时我们可以利用

  一次白盒的xss渗透测试

  因为某些原因我们想黑掉某个人的blog,该blog系统的源码我们可以从网上获取到,在简单审核一些代码之后我们没有发现明显的SQL注射之类的漏洞,但是发现了几个非常有意思的xss漏洞,该漏洞同样是反射型的xss,但是因为程序的原因可以使得exploit url变形得非常隐蔽。由于程序开源,我们通过本地搭建该环境可以轻松构造出可以加管理员,可以在后台写shell的小型exploit,并且将exploit通过远程的方式隐藏在前面的exploit url里。通过分析该程序发现在评论回复时只有登录才可以回复,而目标经常性回复别人的评论,所以我们发表了一个评论并且将exploit url写在里面,通过一些手段诱使目标会访问该url。在等待几个小时之后,我们看到该评论已经被管理员回复,那么我们的exploit也应该是被顺利执行了。上后台用定义好的账户登录,很顺利,shell也已经存在。OK,最后就是涂首页:)

  对于这部分没有什么特别好说的,因为所有的数据和逻辑都是公开的,但是非常重要的一点依然是我们的场景。在某些应用程序里,因为前台的交互比较多,发生xss的点是前台,大部分用户的操作也都是前台发生的,但是这部分的权限非常没有意义,我们往往需要特定目标先访问后台,然后从后台访问我们的xss点才能获取相应的权限。这部分的攻击就变得比较困难了,而上面的攻击里,由于目标肯定会先访问后台然后访问该xss点,所以xss变得有趣多了。

  总结

  xss的利用是一件非常有意思的事情,甚至可以独立于xss的查找成为一门学问,最关键的一点是所有的xss都不要脱离场景,脱离场景地谈论漏洞很不负责任。我给出的例子都是比较简单的,希望可以与大家更多地讨论更多的有意思的攻击。
1
0
分享到:
评论

相关推荐

    搜索框——不能忽视的XSS漏洞—搜索框所引起的XSS漏洞

    **搜索框的XSS漏洞分析** 许多网站,尤其是知名的电子商务平台,如淘宝、当当和亚马逊中国,其搜索功能可能存在过滤不足的问题。攻击者可以利用搜索关键词,使得搜索结果页面展示恶意脚本。例如,通过在搜索框输入...

    XSS漏洞挖掘及利用教程

    【XSS漏洞挖掘及利用教程】 XSS,全称为跨站脚本攻击(Cross-Site Scripting),是一种常见的网络安全漏洞,允许攻击者在用户的浏览器上注入恶意脚本。本教程将深入探讨XSS漏洞的挖掘和利用方法,通过实例解析其...

    xss简单渗透测试

    本文将深入解析XSS漏洞的基本概念、分类、如何进行渗透测试,以及如何利用XSS进行更深入的攻击。 ### XSS(Cross-Site Scripting)简述 XSS是一种Web应用安全漏洞,攻击者通过注入恶意脚本,当用户浏览被攻击的...

    XSS攻击实例1

    XSS(Cross-site scripting)攻击是一种常见的网络安全威胁,它利用了网站对用户输入的不适当处理,使得攻击者能够在网页中注入恶意脚本,从而影响其他用户。在本实例"XSS攻击实例1"中,我们将探讨这种攻击的原理、...

    xss攻击语句大全。。

    #### 二、XSS漏洞分类 XSS漏洞通常可以分为三种类型: 1. **存储型XSS**:恶意脚本被永久或临时存储在目标服务器上,并且每次受害者请求该页面时都会加载并执行恶意脚本。 2. **反射型XSS**:恶意脚本通过URL参数...

    XSS跨站脚本攻击方法初探

    - **利用XSS漏洞**:确保恶意网页能够通过某种方式嵌入到存在XSS漏洞的合法网站中。 例如,可以创建一个简单的PHP页面用于存储偷盗的Cookie信息。一个基本的实现方法如下: ```php // save_cookie.php if (isset...

    xss跨站脚本攻击

    以Beef为例,可以构建一个简单的应用场景:攻击者通过XSS漏洞注入一段JavaScript代码,该代码会将用户的浏览器与Beef服务器连接起来。当用户访问包含恶意脚本的页面时,他们的浏览器就会被hook,进而成为攻击者的...

    XSS跨站总结

    - **定义**:DOM-XSS与前两种类型不同,它不依赖于服务器端的脚本执行,而是利用客户端(浏览器端)的JavaScript处理机制。 - **示例**:用户访问一个URL,该URL包含恶意JavaScript代码片段,这些代码在浏览器解析...

    Web应用安全:简单XSS测试脚本(实验).docx

    - DOM型XSS:发生在客户端,攻击者利用JavaScript的DOM(文档对象模型)来修改页面动态内容,导致恶意脚本执行。 2. **危害**: - 用户数据窃取:通过弹窗、重定向、伪造登录页面等方式获取用户敏感信息。 - ...

    xss完整版插件keepsenins-king

    描述中的 "xss完整版插件keepsenins-king" 暗示这是一个功能齐全的XSS测试工具,可能包含了多种探测和利用XSS漏洞的方法。"keepsenins-king" 可能是该工具的特定名称,表明它在XSS检测领域具有较高的地位或能力。 ...

    XSS跨站脚本攻击在Java开发中防范的方法

    XSS(Cross-Site Scripting)跨站脚本攻击是一种常见的安全威胁,它利用Web应用程序的安全漏洞,将恶意脚本注入到合法的网页中,进而攻击最终用户。XSS攻击主要分为以下两种类型: 1. **存储型XSS**(Persistent ...

    XSS跨域攻击讲义

    - **会话劫持**:攻击者可以利用XSS漏洞接管用户的会话,执行任意操作,如非法转账等。 - **强制弹出广告**:恶意脚本可以自动弹出广告页面,干扰用户体验。 - **网页挂马**:通过XSS漏洞植入恶意软件,危害用户设备...

    存储型Xss成因及挖掘方法

    如果脚本被返回且在浏览器中执行,则可能存在存储型XSS漏洞。 4. **深入测试**:如果初步测试成功,继续尝试更复杂的脚本,以确定哪些特殊字符或代码结构会被服务器过滤或修改。 5. **构造利用代码**:根据服务器的...

    第04篇:XSS三重URL编码绕过实例1

    总之,这个实例展示了黑盒渗透测试中可能遇到的复杂情况,以及如何通过深入分析和实验来识别和利用漏洞。在进行渗透测试时,保持耐心和细心,勇于质疑,持续学习,是提升安全能力的关键。时刻关注安全最佳实践,确保...

    SpringBootXSS攻击过滤插件使用XSS是什么解决方案.docx

    XSS(Cross Site Scripting),即跨站脚本攻击,是一种常见的Web安全漏洞。这种攻击方式利用了Web应用未能正确过滤用户提交的数据,导致恶意脚本被嵌入到网页中,并在其他用户的浏览器上被执行。为了避免与CSS...

    NET编程中的安全漏洞分析

    例如,SQL注入攻击和跨站脚本(XSS)攻击就是典型的利用这一漏洞的手段。SQL注入可以通过向应用程序提交恶意SQL语句来实现,而XSS攻击则是通过插入恶意脚本到Web页面中,从而在用户浏览器上执行。 **解决方案**:...

    DVWA下的XSS

    每个级别的防护机制不同,下面详细介绍各个级别的特点及如何利用这些漏洞。 1. **Low级别** - 防护机制:无过滤检查。 - 攻击方式:可以直接输入`&lt;script&gt;alert('haha')&lt;/script&gt;`进行测试。 - 分析:由于没有做...

    有漏洞代码的几个例子

    3. **跨站脚本(XSS)攻击**:XSS漏洞允许攻击者在用户的浏览器上注入可执行的JavaScript代码。这通常发生在Web应用未充分过滤或编码用户提交的内容。比如: ```html &lt;script&gt;alert('XSS Attack!'); ``` 4. **整数...

    xssshell-rqndx

    【xssshell-rqndx】是一个集合了XSS(跨站脚本攻击)利用工具和管理功能的资源包。这个包包含了一些关键文件,如`admin.php`、`cook.html`、`clear.php`、`c.php`以及`xss.txt`,它们各自承载着不同的功能,对于理解...

    自己动手编写SQL注入漏洞扫描工具

    SQL注入是一种常见的网络安全威胁,...通过分析和调试给定的代码,我们可以学习到如何识别和利用SQL注入漏洞,同时也能提高对Web安全的认识。但请记住,任何安全工具的使用都应以教育和防御为目的,不得用于非法活动。

Global site tag (gtag.js) - Google Analytics