WordPress XSS 漏洞修复(屏蔽)通用傻瓜方法

文章目录[隐藏]

缘起

此为 WordPress 搜索跨站脚本攻击(XSS)漏洞修复方法(感谢 360,让我发现此漏洞)的后续。

前些日子,收到 360 的提醒,说我的网站竟然高危,仅仅获得 2 分,速度打开,一看,满屏幕的跨站脚本攻击漏洞(WEB2.0),细细查看,愣了我半天。主要是说我的网站的 s 参数(搜索参数)和 replytocom 参数(回复参数)存在漏洞。可是,我不知道 360 得出的这个结果从何而来,我反复访问所谓的漏洞页面和正常页面进行检测,发现(也许是我眼花)毫无漏洞。而且那个搜索参数漏洞我之前才修复,并且进过检测确认没有已漏洞了,真不知道那个漏洞从何而来。

360 提示的漏洞截图:

 

wordpress replytocom xss 300x193

wordpress s xss 300x194

为了防止有人看不清楚,我把文字也发上来:

漏洞上线时间:2011-07-02

漏洞名称:跨站脚本攻击漏洞(WEB2.0)

漏洞类型:跨站脚本攻击(XSS)

所属服务器类型:通用

漏洞风险:

  1. 存在 “非法读取用户信息” 风险
  2. 安全性降低40%
  3. 7个站长进行了讨论

检测时间:2014-02-20 18:29:13

漏洞证据:<script>

漏洞地址:https://www.nikbobo.net/about/

解决方案:

方案一:站在安全的角度看,必须过滤用户输入的危险数据,默认用户所有的输入数据都是不安全的,请根据自身网站程序做代码修改。

方案二:使用开源的漏洞修复插件。( 需要站长懂得编程并且能够修改服务器代码 )

漏洞上线时间:2011-07-02

漏洞名称:跨站脚本攻击漏洞(WEB2.0)

漏洞类型:跨站脚本攻击(XSS)

所属服务器类型:通用

漏洞风险

存在 “非法读取用户信息” 风险

安全性降低40%

7个站长进行了讨论

检测时间:2014-02-20 18:37:28

漏洞证据:<script>

漏洞地址:https://www.nikbobo.net/

解决方案:

方案一:站在安全的角度看,必须过滤用户输入的危险数据,默认用户所有的输入数据都是不安全的,请根据自身网站程序做代码修改。

方案二:使用开源的漏洞修复插件。( 需要站长懂得编程并且能够修改服务器代码 )

纳闷

令人感到纳闷的是,我尝试过一些操作,比如对 replytocom 参数(回复参数)进行 intval() 过滤等等,可是依旧报漏洞,这次我真不知道 360 这个漏洞从何而来到底该如何修复。

被逼无奈之下,只好采取了一个下下之策,这回终于不报漏洞了。

分析

仔细观察 360 的漏洞地址,推断 360 的漏洞测试方法,发现主要集中在 alert()confirm() 这两个 JavaScript 函数上,那么,能不能针对这几个函数进行过滤,如果一有发现,直接拦截掉,这样就起到了修复(屏蔽)的作用了。

但是,要警惕的是,这个方法也许是掩耳盗铃之举,毕竟 360 测试都是用比较温和的函数,不会导致太多的风险,而真正的恶意攻击者可不会那么仁慈,他们所使用的,肯定是极为恶劣的函数和极为危险的动作。

解决

终上所述,再了解到恶意 URL 通常包含 eval() base64 等等危险字符和函数,一份 XSS 漏洞修复(屏蔽)通用傻瓜方法就出来了,在你的主题的 Functions.php 添加以下内容:

<?php
if (strpos($_SERVER['REQUEST_URI'], "eval(") ||
    strpos($_SERVER['REQUEST_URI'], "base64") ||
    strpos($_SERVER['REQUEST_URI'], "alert(") ||
    strpos($_SERVER['REQUEST_URI'], "confirm(")
) {
    wp_die('您输入的内容包含危险字符,安全起见,已被本站拦截', '恶意请求防火墙', array('response' => '403'));
}
?>

提示的文字可以自己修改,分别为提示内容、提示标题、返回 HTTP 状态码,我这里返回 403。

其实恶意 URL 还有一个特征,那就是长度 > 255,你也可以针对这个特征添加以下内容到 Functions.php,但是,这个拦截可能会和 WordPress 一些功能产生冲突,会导致这些功能不可用,目前已知会导致的冲突有后台常用的批量操作,清空操作等,你可以酌情考虑是否使用。

<?php
if (strlen($_SERVER['REQUEST_URI']) > 255) {
    wp_die('您您请求的 URL 长度 > 255,安全起见,已被本站拦截', '恶意请求防火墙', array('response' => '414'));
}
?>

哎,再次吐槽一下 360 网站安全检测,你能不能非要拦截了才能确认已经修复了这个漏洞?我觉得,漏洞修复的不应是对这个漏洞进行拦截,而是当你访问所谓的漏洞地址时,情况和正常地址一样,一切如常,这才是真正高明的漏洞修复。就像我有一次在朋友家,需要使用他的电脑,他给我用,然后就出去了,我用完后,百无聊赖的打开他那个杀毒软件,好像叫 ClamAV 吧,记得不是很清楚了,全盘杀毒,杀出了一堆病毒,这时正好他回来了,我跟他说你的电脑怎么一堆病毒,他笑了,默默地打开发现病毒的文件夹,找到那个病毒,双击,顿时,我一下子就跳了起来,你怎么能双击病毒呀!可是,结果出乎我的意料,病毒没有运行,而是弹出“选择程序运行”,那时,我才知道有 Linux 这个玩意儿(后来学习知道,他的电脑没有安装 Wine),这个不怕病毒的小众玩意儿。这才是真正高明的,电脑一堆病毒,可是病毒却跑不起来,只能留下尸体。咳~好吧,扯远了~

此文章是由nikbobo发表在WordPress分类目录的。将固定链接加入收藏夹。

关于 nikbobo

Nikbobo,本名刘永强,记忆空间站长,男,1998 年出生于广东茂名,至今(2020 年)21 岁,目前(2020 年)就读于广州大学华软软件学院,常以“nikbobo”这个网名混迹互联网。如无特殊注明,Nikbobo 在本站发表的文章,遵循 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议。详情请参阅关于页面的作者介绍。

WordPress XSS 漏洞修复(屏蔽)通用傻瓜方法》上有13个想法

  1. Superb website you have here but I was wondering if you knew of
    any community forums that cover the same topics talked about in this article?
    I’d really love to be a part of group where I can get suggestions from other knowledgeable individuals that share the same
    interest. If you have any recommendations, please let me know.
    Many thanks! 0mniartist asmr

  2. Fantastic website. A lot of useful info here. I am sending it to some friends ans
    additionally sharing in delicious. And obviously, thanks for your effort!
    0mniartist asmr

  3. Greetings! This is my first visit to your blog! We are a collection of volunteers and starting a new initiative in a community
    in the same niche. Your blog provided us useful information to work
    on. You have done a marvellous job! asmr 0mniartist

  4. Thanks for another fantastic article. Where else may anybody get that type of information in such an ideal manner
    of writing? I’ve a presentation next week, and I’m on the look for
    such info.

  5. Thanks on your marvelous posting! I actually enjoyed reading it, you’re a great author.I will make sure to
    bookmark your blog and will often come back from now on. I
    want to encourage you to continue your great work, have a nice afternoon!

  6. Howdy! I could have sworn I’ve visited your blog before but after going through some
    of the posts I realized it’s new to me. Anyhow, I’m definitely
    delighted I stumbled upon it and I’ll be book-marking it and checking
    back often!

  7. Thank you for some other fantastic post. The place else may just anyone get that kind of information in such an ideal means of writing?
    I’ve a presentation next week, and I am at the search for such information.

  8. Thanks for a marvelous posting! I certainly enjoyed reading it, you may
    be a great author. I will be sure to bookmark your blog and will come back in the
    foreseeable future. I want to encourage you
    to definitely continue your great work, have a nice
    morning!

发表评论

邮箱地址不会被公开。 必填项已用*标注