前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP跨站脚本攻击(XSS)漏洞修复方法(一)

PHP跨站脚本攻击(XSS)漏洞修复方法(一)

作者头像
张戈
发布2018-03-23 14:32:45
3.8K0
发布2018-03-23 14:32:45
举报
文章被收录于专栏:张戈的专栏

今天又做了一回奥特曼(out man),居然才发现 360 的综合搜索变成了好搜!前几天,其实看到过一次好搜,但是以为又是 DNS 劫持出现的流氓搜索。

今天细看了下,居然是 360 综合搜索改头换面后的独立品牌:好搜(怎么读都有点山寨)。

一、惊现漏洞

好了,暂且不研究这名称到底咋样,顺手 site 了一下我 2 个网站:张戈博客和中国博客联盟。

结果,site 中国博客联盟的结果吓我一跳:

PHP跨站脚本攻击(XSS)漏洞修复方法(一)
PHP跨站脚本攻击(XSS)漏洞修复方法(一)

很久没理过 360 搜索了,一看还真吓一跳!急忙进去看了下,y 原来是 XSS 跨站攻击漏洞!之前听无主题的博主小武提到过一次,当时是 WordPress 开启颜色评论后造成的 XSS 漏洞,因为我懒得折腾就放弃了带颜色评论的功能,避免出现 XSS 漏洞。没想到,中国博客联盟居然出现这么多!

二、现身说法

什么叫 XSS 跨站攻击漏洞?专业理论性的解释我也懒得说,自己去百度。我就举个实际的例子来说明这玩意的危害好了!

就拿之前 WordPress 留言来举例好了。

默认状态下,WordPress 是不允许带颜色评论的,但是我们可以通过在 functions.php 里面插入这 2 行代码,强行允许评论开放所有 HTML 代码:

代码语言:javascript
复制
// 允许评论开放所有html代码
remove_action('init', 'kses_init');
remove_action('set_current_user', 'kses_init');

这样修改之后,WordPress 确实可以留言带颜色了,比如<font color="red">红色</font>。

但是,XSS 漏洞也随机而来!最简单的演示就是在博客如下带上代码留言:

代码语言:javascript
复制
我来测试以下XSS漏洞啦啦啦啦
<script>window.location.href='http://www.baidu.com';</script>

留言生效后,页面一加载就会自动跳到百度首页了!

这只是 XSS 漏洞的一个最简单的攻击例子之一而已,上次中国博客联盟就被一个小人挂过一次黑链!看了上面的例子,你应该很猜出是怎么挂的了吧?他注册了中国博客联盟的会员,然后在提交博客时额外提交了一段 js 代码,后台审核时,这个 js 就会操作我的数据库,在首页加入对方的友链。

这种 SQL 注入就更加危险了!所以,如果你的网站有 XSS 漏洞,最好还是修复一下,避免被小人利用!

三、修复方案

好了,下面说一下简单修复方法。

先来看下 360 给出的修复方案:

方案一:避免 XSS 的方法之一主要是将用户所提供的内容输入输出进行过滤,许多语言都有提供对 HTML 的过滤: 可以利用下面这些函数对出现 xss 漏洞的参数进行过滤 PHP 的htmlentities()或是htmlspecialchars()。 Python 的 cgi.escape()。 ASP 的 Server.HTMLEncode()。 ASP.NET 的 Server.HtmlEncode() 或功能更强的 Microsoft Anti-Cross Site Scripting Library Java 的 xssprotect(Open Source Library)。 Node.js 的 node-validator。 方案二:使用开源的漏洞修复插件。( 需要站长懂得编程并且能够修改服务器代码 ) 具体可以参考:http://webscan.360.cn/group/topic/tid/4571

之前小武就提到过,可以写代码过滤。能写代码当然好,但是自己写代码不但很麻烦,而且一个人能想到的正则过滤也可能会存在漏掉的风险,毕竟一个人考虑问题总是不会那么的全面和完善。既然 360 安全团队已经推出了修复插件,那不妨先试试。

我下载并部署了 360 写的 PHP 插件,感觉不错!而且 WordPress 颜色代码又可以安全的打开了,现在来分享一下,建议所有 PHP 网站都部署一下,有备无患!

四、部署方法

①、下载插件

360 提供的是专站专用的插件,插件代码会有和网站对应的 KEY,所以下载前请修改下面的域名部分:

代码语言:javascript
复制
http://webscan.360.cn/protect/down?domain=yourdomain.com

将上面下载地址中的 yourdomain.com 改为你的域名,然后浏览器访问即可下载专用插件:

PHP跨站脚本攻击(XSS)漏洞修复方法(一)
PHP跨站脚本攻击(XSS)漏洞修复方法(一)

②、上传插件

解压后,得到 360safe 文件夹,并上传至服务器根目录:

PHP跨站脚本攻击(XSS)漏洞修复方法(一)
PHP跨站脚本攻击(XSS)漏洞修复方法(一)

③、部署插件

按照 360 的部署教程,是要在网站的一个公用文件(如数据库的连接文件)中加入代码:

代码语言:javascript
复制
if(is_file($_SERVER['DOCUMENT_ROOT'].'/360safe/360webscan.php')){
    require_once($_SERVER['DOCUMENT_ROOT'].'/360safe/360webscan.php');
} //注意文件路径
PHP跨站脚本攻击(XSS)漏洞修复方法(一)
PHP跨站脚本攻击(XSS)漏洞修复方法(一)

所以,WordPress 网站可以选择添加到网站根目录下的 index.php 或数据库连接文件 wp-config.php 当中:

但是,玩 WordPress 的朋友都知道,这玩意更新频繁,每次版本更新,index.php 这个文件十有八九是会替换的!所以最靠谱的方法是将以上代码添加到 wp-config.php 文件的第一个<?php 之后:

PHP跨站脚本攻击(XSS)漏洞修复方法(一)
PHP跨站脚本攻击(XSS)漏洞修复方法(一)

而且,任意建站程序都建议加到数据库连接文件当中,可谓一夫当关,万夫莫开!

五、最后验证

部署完插件了,咱们就来试试效果吧!

①、最简单的验证方法

直接在 WordPress 原生搜索带 XSS 特性的代码,比如搜索:

代码语言:javascript
复制
<scirpt>alert(123);</script>

就会出现如下拦截页面:

PHP跨站脚本攻击(XSS)漏洞修复方法(一)
PHP跨站脚本攻击(XSS)漏洞修复方法(一)

②、带 XSS 攻击特征留言验证

依然和本文开头提到的那样,来测试留言:

代码语言:javascript
复制
我来测试以下XSS漏洞啦啦啦啦
<script>window.location.href='http://www.baidu.com';</script>
PHP跨站脚本攻击(XSS)漏洞修复方法(一)
PHP跨站脚本攻击(XSS)漏洞修复方法(一)

结果显然可以猜到:

PHP跨站脚本攻击(XSS)漏洞修复方法(一)
PHP跨站脚本攻击(XSS)漏洞修复方法(一)

更令人欣慰的是,带颜色是可以评论的:

PHP跨站脚本攻击(XSS)漏洞修复方法(一)
PHP跨站脚本攻击(XSS)漏洞修复方法(一)

六、发现缺憾

本以为能全部修复了,结果再次扫描了下中国博客联盟,360 自己打脸的现象出现了:

PHP跨站脚本攻击(XSS)漏洞修复方法(一)
PHP跨站脚本攻击(XSS)漏洞修复方法(一)

点进去看了下,发现已不是原来的攻击特征了:

PHP跨站脚本攻击(XSS)漏洞修复方法(一)
PHP跨站脚本攻击(XSS)漏洞修复方法(一)
PHP跨站脚本攻击(XSS)漏洞修复方法(一)
PHP跨站脚本攻击(XSS)漏洞修复方法(一)

特意试了下 WordPress 的评论是否会拦截,结果依然失望:

PHP跨站脚本攻击(XSS)漏洞修复方法(一)
PHP跨站脚本攻击(XSS)漏洞修复方法(一)

看来 360 写的正则过滤也不全面啊!最终还得靠自己!

七、下篇预告

在测试 360 的 XSS 防护插件存在缺憾之后,只能感叹 360 也就这样,真是失望哟!

于是,我决定自己写代码解决。几经折腾测试,最终搞定了这个问题!

先来 2 张效果预览:

PHP跨站脚本攻击(XSS)漏洞修复方法(一)
PHP跨站脚本攻击(XSS)漏洞修复方法(一)
PHP跨站脚本攻击(XSS)漏洞修复方法(一)
PHP跨站脚本攻击(XSS)漏洞修复方法(一)

鉴于本文篇幅已经过长,所以打算另开一篇文章,来分享一下最终 XSS 修复方法!

对 XSS 漏洞修复感兴趣的童鞋,敬请期待!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015年01月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、惊现漏洞
  • 二、现身说法
  • 三、修复方案
  • 四、部署方法
    • ①、下载插件
      • ②、上传插件
        • ③、部署插件
        • 五、最后验证
          • ①、最简单的验证方法
            • ②、带 XSS 攻击特征留言验证
            • 六、发现缺憾
            • 七、下篇预告
              • 先来 2 张效果预览:
              相关产品与服务
              脆弱性检测服务
              脆弱性检测服务(Vulnerability detection Service,VDS)在理解客户实际需求的情况下,制定符合企业规模的漏洞扫描方案。通过漏洞扫描器对客户指定的计算机系统、网络组件、应用程序进行全面的漏洞检测服务,由腾讯云安全专家对扫描结果进行解读,为您提供专业的漏洞修复建议和指导服务,有效地降低企业资产安全风险。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档