XSS跨站脚本漏洞

阅读目录

    • 1 XSS漏洞原理解析
    • 2 XSS攻击类型
    • 3 反射型XSS
      • 3.1 分析反射型XSS
    • 4 存储型XSS
      • 4.1 分析存储型XSS
    • 5 DOM型XSS
      • 5.1 分析DOM型XSS
    • 参考资料

1 XSS漏洞原理解析

XSS跨站脚本攻击(Cross Site Scripting,简称为XSS) 是一种针对web网站安全的漏洞攻击技术,恶意攻击者利用网站程序对用户输入过滤不足,在网站中插入对用户有影响的恶意脚本代码(通常是js或html等脚本代码),当用户使用浏览器打开浏览该网页时,恶意代码就会在用户浏览器上执行,从而盗取用户cookie,黑掉网页,导航到恶意网站。

看起来XSS漏洞主要是攻击用户,属于客户端攻击,跟网站服务器的安全并没有直接关系,但是别忘了web网站的管理后台的用户也属于被攻击的用户之一,而管理员用户往往拥有很高的管理权限,可以对网站的后台数据库进行操作。这意味着XSS漏洞可以通过管理员作为“跳板”来达到攻击服务器的目的。

2 XSS攻击类型

XSS攻击主要有三种:

  • 反射型XSS
  • 存储型XSS
  • DOM型XSS

以上几种XSS攻击中,存储型XSS的危害是最大的,要高于反射型和DOM型。

3 反射型XSS

其实XSS漏洞大致可分为两种类型:持久型非持久型,反射型XSS就属于非持久型XSS,具有一次性攻击。

反射型XSS攻击:恶意攻击者通过电子邮件或站内信等方式欺骗诱导用户点击包含XSS代码的恶意URL链接,当用户访问该链接时服务器就会接收到目标用户请求并处理,然后服务器会把带有XSS代码的数据发送给用户的浏览器,浏览器解析了这段XSS代码后就会触发XSS漏洞。

反射型XSS代码通常是存在于URL中,攻击者需要通过欺骗或加密形式将存在恶意代码的连接发送给用户,只有在用户点击后才能触发反射型XSS攻击。

3.1 分析反射型XSS

最常见的反射型XSS就是web网站的搜索框,来看一个简单的反射型XSS漏洞,测试网址为:http://www.test1.com/search.php,输入php进行搜索:
XSS跨站脚本漏洞_第1张图片
在搜索框正常里正常输入php搜索,后台会把所有跟php相关的留言展示出来。
在搜索栏中输入: ,页面返回结果如下:
XSS跨站脚本漏洞_第2张图片
浏览器并没有搜索出对应的内容,而是把输入的这段代码当做JS脚本执行了,JS函数alert执行在浏览器弹窗。

分析反射型XSS漏洞代码,search.php文件内容:


/**
 * Created by TEST
 */
require "./lib/init.php";
header("Content-type:text/html;charset=utf-8");
session_start();
 
if(empty($_GET))
{
    echo "搜索信息为空";
    header('Location: index.php');
}else{
 
    if(isset($_GET["search"])){
 
        $search  = trim($_GET["search"]);
        $sql_comment = "select * from comment where text like '%$search%' order by comment_id";
        $commentSQL = new MySql();
        $commentData = $commentSQL->getAll($sql_comment);
 
        require "./view/search.html";
    }else{
        echo "搜索信息为空!操作失败";
        header("Refresh:3;url=index.php");
    }
}

search.html页面:
XSS跨站脚本漏洞_第3张图片
search.php文件中的PHP代码通过GET获取search参数中的值,然后通过echo函数输出到html页面中,而,点击留言提交后,当前页面显示了一个弹窗。

页面中的留言只显示了一部分,通过查看当前页面元素发现浏览器在解析html页面时,只将留言中的this a test一部分作为普通文本数据进行输出了,,然后回车,页面弹窗说明是存在DOM型XSS的。

参考资料

《Web安全深度剖析》
《Web安全攻防:渗透测试实战指南》
《XSS跨站脚本漏洞精讲/原理/绕过/防御》
《PHP网站漏洞挖掘从入门到精通》

你可能感兴趣的:(Web安全)