安基网 首页 安全 安全学院 查看内容

每日漏洞|跨站脚本攻击

2018-12-27 12:25| 投稿: xiaotiger |来自: 互联网


免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!

摘要: 01 漏洞描述 当应用程序没有验证输入数据并产生输出时,这个时候就会产生XSS漏洞,攻击者可利用此漏洞进行Cookie窃取、会话劫持、钓鱼等攻击。 “一切输入都是不安全的”,Web应用的漏洞几乎都是由一个原因造成:不 ...

01 漏洞描述


当应用程序没有验证输入数据并产生输出时,这个时候就会产生XSS漏洞,攻击者可利用此漏洞进行Cookie窃取、会话劫持、钓鱼等攻击。

“一切输入都是不安全的”,Web应用的漏洞几乎都是由一个原因造成:不能在使用前正确验证输入的数据。XSS便是其中之一,攻击者可以在网页中写入恶意脚本,用户访问或点击的时候就会被执行。通常是由JavaScript编写,偶尔也会使用ActionScript、VBScript。XSS能利用到何种程度,取决于如何编写脚本,当然,和上下文环境也有关系。

02 漏洞检测


要判断系统是否存在XSS,只需要测试能否操纵应用程序参数输入,使其产生恶意输出即可,因此XSS漏洞的检测,有三大要点:输入点,输出点,以及恶意输出。

输入点,数据输入的参数位置。客户端与服务器端的交互,是通过请求和响应实现的,请求的时候往往会附带一些参数,这些参数就是数据的输入点,我们需要修改这些参数的值来影响服务器端的响应,并根据响应找出输出点。

输出点,输入数据的输出位置。有些数据输入后,经过服务器处理,往往会返回给客户端,可能出现在html标签中,也可能出现在script脚本中,我们需要根据位置的不同而使用不同的XSS构造方式。

恶意输出,在XSS中通常是指由JavaScript编写的代码。这些代码能实现一定功能和页面效果:弹框、发送Cookie、键盘记录等。

寻找输入点




页面有两个输入框,要求输入名字和姓氏,然后点击GO,姓名就会显示在下方。我们现在来检测这个功能是否存在XSS。

开启抓包工具,设置好代理,输入名字和姓氏。



点击GO,抓到如下请求包。请求行中有三个参数,其中两个参数正好对应两个输入框,这三个参数都是潜在的XSS输入点,特别是输入框对应的firstname参数和lastname参数。



寻找输出点

输出点我们可以通过在响应中查找输入点的值来找到。以firstname为例,我们在响应中查找bwapp这个值的位置。



发现响应中有8个匹配的值,难道有8个输出点?很多时候,为了更快速、准确的找出输出点,我们通常会将输入点的值修改为独一无二的值,如1234567,abcde等,以保证不会和系统其他参数值雷同。



这样就准确找到了firstname这个输入点的输出点。

恶意输出

最终XSS的检测需要结合输入点和输出点。在输入点的值中加入恶意代码,查看输出点是否会产生恶意输出。




发现服务端没有对用户输入做任何处理就直接输出到页面上,弹出一个警告框。这就证明firstname参数存在XSS。依此流程检测,发现lastname同样存在XSS,但form参数不存在XSS。

03 漏洞修复


输入过滤;对用户的输入进行检测,过滤掉输入中的非法字符。

输出编码;在将输入输出到页面之前,将输入中未过滤的特殊字符进行转义,使其以文本形式展示,而不是被解析成页面结构或脚本。

04 PS


在这里要申明一下,每日漏洞系列旨在告诉大家发现漏洞的最基本操作,每日学会一个漏洞的检测方法。就比如做菜,每日漏洞系列会教你第一步点火,第二步放油,第三步炒菜,第四步出锅,但不会教你用多大的火,放多少油,炒多久,这些细节我会在其他文章里深入介绍,所以如果只看这篇文章,我只能保证你会做菜,这菜能不能吃,只能交给命运了。



小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!

本文出自:https://www.toutiao.com/a6639290983789888004/

免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

 最新
返回顶部