XSS漏洞原理

注入型漏洞的本质都是服务端分不清用户输入的内容是数据还是指令代码,从而造成用户输入恶意代码传到服务端执行。

00x01js执行

Js是浏览器执行的前端语言,用户在存在xss漏洞的站点url后者能输入数据的部分插入js语言,服务器接收到此数据,认为是js代码,从而返回的时候执行。因此,攻击者可利用这个漏洞对站点插入任意js代码进行窃取用户的信息。

00x02 xss攻击

XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被黑客用来编写危害性更大的网络钓鱼(Phishing)攻击而变得广为人知。

对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。

00x03 XSS攻击的危害

  • 1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号
  • 2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
  • 3、盗窃企业重要的具有商业价值的资料
  • 4、非法转账
  • 5、强制发送电子邮件
  • 6、网站挂马
  • 7、控制受害者机器向其它网站发起攻击(重定向语句)
  • 8、窃取cookie的sessionid,冒充登录。

XSS攻击利用到最大就需要自己有台服务器用于窃取信息,还要利用一点社工,骗取别人点击恶意的链接。

00x04 XSS漏洞的分类

1.  DOM型(不经过服务器,前端js代码的利用):

本地利用漏洞,这种漏洞存在于页面中客户端脚本自身。其攻击过程如下所示:

Alice给Bob发送一个恶意构造了Web的URL

Bob点击并查看了这个URL。

恶意页面中的JavaScript打开一个具有漏洞的HTML页面并将其安装在Bob电脑上。

具有漏洞的HTML页面包含了在Bob电脑本地域执行的JavaScript。

Alice的恶意脚本可以在Bob的电脑上执行Bob所持有的权限下的命令。

2.反射型:

这种漏洞和类型A有些类似,不同的是Web客户端使用Server端脚本生成页面为用户提供数据时,如果未经验证的用户数据被包含在页面中而未经HTML实体编码,客户端代码便能够注入到动态页面中。

其攻击过程如下:

Alice经常浏览某个网站,此网站为Bob所拥有。Bob的站点运行Alice使用用户名/密码进行登录,并存储敏感信息(比如银行帐户信息)。

Charly发现Bob的站点包含反射性的XSS漏洞。

Charly编写一个利用漏洞的URL,并将其冒充为来自Bob的邮件发送给Alice。

Alice在登录到Bob的站点后,浏览Charly提供的URL。

嵌入到URL中的恶意脚本在Alice的浏览器中执行,就像它直接来自Bob的服务器一样。此脚本盗窃敏感信息(授权、信用卡、帐号信息等)然后在Alice完全不知情的情况下将这些信息发送到Charly的Web站点。

3.存储型(长久型,危害最大):

该类型是应用最为广泛而且有可能影响到Web服务器自身安全的漏洞,骇客将攻击脚本上传到Web服务器上,使得所有访问该页面的用户都面临信息泄漏的可能,其中也包括了Web服务器的管理员。其攻击过程如下:

Bob拥有一个Web站点,该站点允许用户发布信息/浏览已发布的信息。

Charly注意到Bob的站点具有类型C的XSS漏洞。

Charly发布一个热点信息,吸引其它用户纷纷阅读。

Bob或者是任何的其他人如Alice浏览该信息,其会话cookies或者其它信息将被Charly盗走。

类型A直接威胁用户个体,而类型B和类型C所威胁的对象都是企业级Web应用。

上一篇:C#实现发送邮件——核心部分代码


下一篇:有两组随机生成的(0~99999)Int32数据A和B,将A按顺序判断在B中是否存在并记录在Boolean型的C中