快速修复 smarty 站点 XSS问题

栏目: 编程工具 · 发布时间: 6年前

内容简介:最近一朋友,网站被频繁挂马(JS判断百度来路,跳转到博彩)。帮朋友分析了下,这套程序年代久远有庞大,最老的代码写于10年前。朋友自己开发的系统,不支持上传,没发现什么的漏洞。想到XSS的问题,排查工单系统,证明猜测正确。系统过于庞大(超过5万行…),而且没有,全部检查一遍不太现实。看到了 smarty 的 assign(),批量查找出来,替换 过滤 后的数据就可以了。实际操作中有出现了点小问题,assign 传递的数据,有数组、有字符串,帮朋友写了个 适应任意数据格式的 过滤函数给朋友,解决了问题:代码如

最近一朋友,网站被频繁挂马(JS判断百度来路,跳转到博彩)。帮朋友分析了下,这套程序年代久远有庞大,最老的代码写于10年前。朋友自己开发的系统,不支持上传,没发现什么的漏洞。想到XSS的问题,排查工单系统,证明猜测正确。系统过于庞大(超过5万行…),而且没有,全部检查一遍不太现实。看到了 smarty 的 assign(),批量查找出来,替换 过滤 后的数据就可以了。

实际操作中有出现了点小问题,assign 传递的数据,有数组、有字符串,帮朋友写了个 适应任意数据格式的 过滤函数给朋友,解决了问题:代码如下:

<?php
//Author: miaoqiyuan.cn
function html_safe($val) {
	if (is_string($val)) {
		//如果是字符串,需要过滤

		$val = preg_replace('/<br[^>]*>/', "\n", $val); //所有 
 换行换成 \n
		$val = htmlspecialchars($val); //过滤 HTML 代码
		$val = str_replace("\n", '
', preg_replace("/((\r\n)|\n)+/", "\n", $val)); //将 \n 换回 
	} elseif (is_array($val)) {
		foreach ($val as $key => $value) {
			$val[$key] = html_safe($value);
		}
	} else {
		//数字或其他
	}
	return $val;
}

测试下效果还不错

<?php header('Content-Type: text/palin'); require 'html_safe.php'; $data = array( 'name' => '测试用户',
	'title' => 'XSS测试<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%3Ealert(0)%3B%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="<script>" title="<script>" />
',
	'contents' => array(
		array(
			'title' => '测试下XSS <img onerror=alert("x")', 'name' => '用户',
		),
		array(
			'title' => '请不要非法测试',
			'name' => '管理员',
		),
		array(
			'title' => '继续测试 <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%3Ealert(%22%E6%88%91%E4%B8%8D%22)%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="<script>" title="<script>" />',
			'name' => '用户',
		),
		array(
			'title' => '您的测试记录已经记录了,请不要测试哦',
			'name' => '管理员',
		),
		array(
			'title' => '继续测试 <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%3Ealert(%22%E6%88%91%E4%B8%8D%22)%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="<script>" title="<script>" />',
			'name' => '用户',
			'uploads' => array(
				'filename' => '<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%3Ealert(%22XSS%22)%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="<script>" title="<script>" />.jpg',
			),
		),
	),
);

print_r(html_safe($data));

快速修复 smarty 站点 XSS问题


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Namo Webeditor5.5一看就懂.

Namo Webeditor5.5一看就懂.

吳聲毅 / 金禾資訊 / 20040214 / NT$ 169

一看就懂系列書全以初學者的角度切入,全書以STEP BY STEP方式撰寫,並以豐富的圖片搭配教學,在最後更加上日常生活實例運用講解,一路學來一氣呵成。為了增進學習的效率更採用高級紙品全彩印刷,這麼好的書,您還在等什麼,一看就懂系列書保證是您最佳入門學習好伙伴。 本書特色: 1、一看就懂:Step by Step操作詳盡說明、讓您一看就懂 2、精選範例:精彩實務範例生動活......一起来看看 《Namo Webeditor5.5一看就懂.》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

MD5 加密
MD5 加密

MD5 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具