PHP相关系列 - 某开源php软件的一个安全漏洞所想

早上看到某开源php软件爆出这么一个漏洞:

http://www.xxxx.net//index.php?m=search&c=index&a=public_get_suggest_keyword&url=asdf&q=../../phpsso_server/caches/configs/database.php

以上网址为phpcms的应用程序

然后基本你的数据库密码就沦陷了。


public_get_suggest_keyword 这个函数:

/phpcms/modules/search/index.php中

	public function public_get_suggest_keyword() {
		$url = $_GET['url'].'&q='.$_GET['q'];  
		
		$res = @file_get_contents($url);
		if(CHARSET != 'gbk') {
			$res = iconv('gbk', CHARSET, $res);
		}
		echo $res;
	}

$url = $_GET['url'].'&q='.$_GET['q'];
url没有任何白名单,没有任何过滤就杀进代码中

$res = @file_get_contents($url);
又一个这个函数,如果弄一个大文件,那么直接可以把服务器搞垮

搜索了一圈,只有在一个JS中用到这个代码:

    $(document).ready(function() {
        $("#q").suggest("?m=search&c=index&a=public_get_suggest_keyword&url="+encodeURIComponent('http://www.google.cn/complete/search?hl=zh-CN&q='+$("#q").val()), {
            onSelect: function() {
				alert(this.value);
			}
        });

	});


警示:

1. 传递进来的参数一定要进行安全过滤

2. 如果进行url,路径操作,一定要进行路径过滤

3. 对外少用@file_get_contents 怎么死都不知道

4. 上面那种情况一定要做域名白名单

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值