`
seomine
  • 浏览: 43606 次
  • 性别: Icon_minigender_1
社区版块
存档分类

合租服务器禁用 fsockopen 函数,部分程序不正常的解决办法。

阅读更多

近期黑客利用程序漏洞注入后使用 fsockopen 进行PHPDDOS 攻击,导致部分服务器不稳定,现在将危险函数 fsockopen 暂时禁用,部分程序功能可能有问题,以下列出已知问题及通用解决方法:

通用解决方法:
找到程序里的 fsockopen 函数,替换为:pfsockopen,即可解决所有问题,两个函数的区别在于 pfsockopen 保持 keep-alive,使得黑客无法进行 连接数攻击。

已知使用 fsockopen 函数的程序文件路径(在fsockopen 前加 p, 即fsockopen 修改为 pfsockopen  即可 )[其他程序可通过错误提示的文件路径查看更改]:

Discuz X2  安装提示不支持fsockopen:
将 /include/install_var.php  文件里的
$func_items = array(‘mysql_connect’, ‘fsockopen ‘, ‘gethostbyname’, ‘file_get_contents’, ‘xml_parser_create’);
替换为:
$func_items = array(‘mysql_connect’, ‘pfsockopen ‘, ‘gethostbyname’, ‘file_get_contents’, ‘xml_parser_create’);
即可正常安装。
X2全部包含fsockopen的文件(如果用邮件只修改邮件即可,其他文件都是自动判断 pfsockopen):

\api\manyou\Manyou.php
\api\trade\api_alipay.php
\install\include\install_function.php
\install\include\install_lang.php
\install\include\install_var.php
\source\admincp\admincp_addons.php
\source\admincp\admincp_checktools.php
\source\admincp\admincp_cloud.php
\source\admincp\admincp_misc.php
\source\admincp\cloud\cloud_doctor.php
\source\class\class_image.php
\source\class\class_sphinx.php
\source\class\block\xml\block_xml.php
\source\function\function_connect.php
\source\function\function_core.php
\source\function\function_filesock.php
\source\function\function_importdata.php
\source\function\function_mail.php      邮件相关
\source\function\function_plugin.php
\source\include\portalcp\portalcp_upload.php
\source\language\lang_admincp_cloud.php
\source\module\forum\forum_ajax.php
\source\module\misc\misc_manyou.php
\uc_client\client.php
\uc_client\lib\sendmail.inc.php         邮件相关
\uc_client\model\misc.php
\uc_server\install\func.inc.php
\uc_server\install\lang.inc.php
\uc_server\lib\sendmail.inc.php         邮件相关
\uc_server\model\misc.php

 Discuz 品牌空间不能安装,提示UC地址不正确:
修改 /install/func.inc.php 里的 fsockopen函数为 pfsockopen

Discuz 7.2:(非首次安装,可以只改绿色部分。)
问题:使用 uc 不能登录  , fsockopen 函数位于:

include\global.func.php(240): $fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);


include\sendmail.inc.php(54):  if(!$fp = fsockopen($mail['server'], $mail['port'], $errno, $errstr, 30)) {
install\func.inc.php(803):  $fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);
install\var.inc.php(70): $func_items = array('mysql_connect', 'fsockopen', 'gethostbyname', 'file_get_contents', 'xml_parser_create');
uc_client\client.php(211): $fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);


uc_client\lib\sendmail.inc.php(40):  if(!$fp = fsockopen($mail_setting['mailserver'], $mail_setting['mailport'], $errno, $errstr, 30)) {
uc_client\model\misc.php(97): $fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);


uc_server\lib\sendmail.inc.php(40):  if(!$fp = fsockopen($mail_setting['mailserver'], $mail_setting['mailport'], $errno, $errstr, 30)) {
uc_server\model\misc.php(94): $fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);

 

DEDECMS 问答积分功能出现 service.dedecms.com:
修改   /ask/data/scores.inc.php 里的 fsockopen 为 pfsockopen
附带dedecms 全部含 fsockopen 的文件列表:

./include/dedehttpdown.class.php:        $this->m_fp = @fsockopen($this->m_host,                                                      $this->m_port, $errno, $errstr,10);
./include/sphinxclient.class.php:                       $fp = @fsockopen ( $host                                                     , $port, $errno, $errstr );
./include/sphinxclient.class.php:                       $fp = @fsockopen ( $host                                                     , $port, $errno, $errstr, $this->_timeout );
./include/dedecollection.func.php:    $m_fp = fsockopen($ghost, 80, $errno, $err                                                     str,10);
./include/dedecollection.func.php:    $m_fp = fsockopen($ghost, 80, $errno, $err                                                     str,10) or die($ghost.'<br />');
./include/mail.class.php:        //is used in fsockopen()
./include/mail.class.php:        $this->sock = @fsockopen($this->relay_host, $th                                                     is->smtp_port, $errno, $errstr, $this->time_out);
./include/mail.class.php:            $this->sock = @fsockopen($host, $this->smtp                                                     _port, $errno, $errstr, $this->time_out);
./ask/data/scores.inc.php:    $fp = fsockopen($host,80,$errno,$errstr,30);
./dede/module_main.php:        $fp = fsockopen('www.dedecms.com',80,$errno,$errs                                                     tr,30);
./dede/api_ucenter.php: $fp = @fsockopen(($host ? $host : $ip), $port, $errno, $                                                     errstr, $timeout);
./dede/plus_bshare.php:    if (!$fp=@fsockopen($parse['host'],$parse['port'],$er                                                     rnum,$errstr,$timeout)) {
./plus/bshare.php:    if (!$fp=@fsockopen($parse['host'],$parse['port'],$errnum,                                                     $errstr,$timeout)) {

 UC通信不正常,DEDE整合UC连接不上的解决办法:
修改:
uc_client/client.php
uc_client/model/misc.php
替换里面的 fsockopen  为 pfsockopen

SHOPEX:
./install/svinfo.php:                    $fp = @fsockopen(“unix://”.DB_HOST);
./install/svinfo.php:                    $fp = @fsockopen(“tcp://”.$host, $port, $errno, $errstr,2);
./install/svinfo.php:        $rst = is_callable(‘fsockopen’);
./install/svinfo.php:        $items['fsockopen支持'] = array(
./install/svinfo.php:            $fp = fsockopen(isset($_SERVER['SERVER_ADDR'])?$_SERVER['SERVER_ADDR']:$_SERVER['HTTP_HOST'], $_SERVER['SERVER_PORT'], $errno, $errstr, 2);
./plugins/payment/pay.paypal_cn.php:        $fp = fsockopen (‘www.paypal.com’, 80, $errno, $errstr, 30);
./plugins/payment/pay.paypal_cn.php:        $fp = fsockopen (‘ssl://www.paypal.com’, 443, $errno, $errstr, 30);
./plugins/payment/pay.nochek.php:        $fp = fsockopen (‘www.nochex.com’, 80, $errno, $errstr, 10);
./plugins/payment/pay.paypal.server.php:        $fp = fsockopen (‘www.paypal.com’, 80, $errno, $errstr, 30);
./plugins/payment/pay.paypal.php:        $fp = fsockopen (‘www.paypal.com’, 80, $errno, $errstr, 30);
./plugins/passport/passport.ucenter.php:            $fp=@fsockopen(($ip ? $ip : $host),$port,$errorno,$errorstr,$timeout);
./core/lib/nusoap.php:        $this->debug(‘calling fsockopen with host ‘ . $host . ‘ connection_timeout ‘ . $connection_timeout);
./core/lib/nusoap.php:            $this->fp = @fsockopen( $host, $this->port, $this->errno, $this->error_str, $connection_timeout);
./core/lib/nusoap.php:            $this->fp = @fsockopen( $host, $this->port, $this->errno, $this->error_str);
./core/lib/uc_client/client.php:    $fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);
./core/func_ext.php:    $fp = pfsockopen($url['host'], isset($url['port'])?$url['port']:80, $errno, $errstr, 2);
./core/func_ext.php:    $fp = pfsockopen( $host, $port, $errno, $errstr, $timeout );
./core/api/include/api_utility.php:        $process = fsockopen($this->host, $this->port, $errno, $errstr, 10);
./core/api/include/api_utility.php:        $process = fsockopen($host, 80, $errno, $errstr, 10);
./core/api/tools/1.0/api_b2b_1_0_tools.php:    $fp = fsockopen( $host, $port, $errno, $errstr, $timeout );

 

http://help.vit.cn/item/113.html

 

 

分享到:
评论

相关推荐

    不支持fsockopen函数 的通用解决办法

    下载此文件,解压并上传到网站源码根目录。然后访问这个文件【例如您网站的源码是直接放在abc.com的根目录,则访问http://abc.com/pfsockopen.php】,直接点【开始执行替换操作】,即可。

    浅析虚拟主机服务器php fsockopen函数被禁用的解决办法

    然而,出于安全或者其它管理上的考虑,有时候服务器管理员可能会禁用fsockopen函数。 一、禁用fsockopen的方法 通常情况下,禁用fsockopen函数可以通过修改服务器的配置文件php.ini实现。具体方法如下: 1. 使用...

    fsockopen pfsockopen函数被禁用,SMTP发送邮件不正常的解决方法

    近期黑客利用程序漏洞注入后使用 fsockopen 进行PHPDDOS 攻击,导致部分服务器不稳定,现在将危险函数 fsockopen 暂时禁用,部分程序功能可能有问题,以下列出已知问题及通用解决方法

    PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法

    也许fsockopen、pfsockopen函数的确存在着安全的隐患,但是我们却已经无从考证,这都是IDC商说的,不管是什么原因吧,反正他们是把这两个函数禁用了,那么如何解决呢,下面是小编整理的方法,希望对用到的同学有一定...

    fsockopen用法.txt

    ### fsockopen函数详解 在PHP中,`fsockopen`是一个非常强大的函数,用于创建一个网络连接(套接字)到指定的主机和端口。这个函数在处理网络通信时特别有用,尤其是在进行HTTP请求、FTP操作或任何需要与远程服务器...

    php使用fsockopen函数发送post,get请求获取网页内容的方法

    通过fsockopen函数,PHP开发者能够使用HTTP协议以GET或POST方式向服务器发送请求,并接收服务器响应的内容。 fsockopen函数的典型用法如下: ```php resource fsockopen ( string $hostname [, int $port = -1 [, ...

    php fsockopen中多线程问题的解决办法[翻译]

    传统的PHP网络编程中,fsockopen函数通常用于创建一个TCP连接,并与远程服务器交互。然而,当面对需要同时向多台服务器发送请求的场景时,fsockopen由于其同步阻塞的性质,导致效率低下,无法满足高并发的需求。本文...

    phpmailer在服务器上不能正常发送邮件的解决办法

    然而,由于安全原因,一些托管服务器可能会禁用fsockopen函数,以防止潜在的未授权连接尝试。 在服务器上遇到phpmailer不能正常发送邮件时,开发者需要先检查服务器的安全设置,查看fsockopen是否被禁用。如果确实...

    Liunx 连接不上SMTP服务器解决方案

    在Linux环境中,遇到无法连接SMTP服务器的问题,通常是由于多种因素导致的。这涉及到网络配置、安全设置、PHP配置以及PHPMailer库的使用等。以下是一些详细的解决方案: 首先,检查网络连接和SMTP服务器的地址。...

    一个PHP Whois域名检查函数代码_.docx

    该函数囊括了大部分的域名后缀,将依据后缀的不同连接到不同的查询服务器。 知识点1:Whois 查询 Whois 查询是一种用于查询域名注册信息的协议。它可以提供域名的所有权、注册日期、到期日期、域名服务器等信息。 ...

    一些需要禁用的PHP危险函数(disable_functions)

    在PHP编程环境中,为了保障服务器的安全,有时需要禁用一些潜在危险的函数。这些函数由于它们的特性,可能被恶意用户利用来进行攻击或者执行未经授权的操作。以下是一些常见的需要禁用的PHP危险函数及其详细解释: ...

    织梦管理模块空白问题解决

    问题三是整个模块管理页面完全空白,这可能是因为服务器禁用了`fsockopen()`函数。`fsockopen()`用于从远程获取信息,如果被禁用,会导致模块管理无法加载。解决办法有两种:一是使用问题二中的方法阻止织梦尝试从...

    LINUX 服务器端PHP客户端 TCP 聊天程序

    2. **接受连接**:当客户端发起连接请求时,服务器会通过`accept()`函数接收连接。 3. **数据收发**:通过`read()`和`write()`函数与客户端交换数据。 4. **多路复用**:如果需要同时处理多个客户端,可以使用`...

    php源码 fsockopen获取网页内容实例详解

    这样fsockopen函数才能正常工作。 接下来,我们来看看具体的代码实例: ```php $host = "***"; // 目标网站 $page = "/index.htm"; // 指定要获取的页面路径 // 打开一个网络连接 $fp = fsockopen($host, 80, $...

    服务器不支持curl_exec的解决办法.docx

    本篇文章将详细阐述如何在Windows和Linux环境下解决服务器不支持`curl_exec`的问题。 ### Windows环境下开启curl支持 1. **复制必需的动态链接库(DLL)文件**:首先,你需要从PHP安装目录中复制`libeay32.dll`, `...

    fsockopen get/post 表单及上传文件例子

    首先,`fsockopen`函数的基本语法如下: ```php fsockopen($hostname, $port, $errno, $errstr, $timeout); ``` - `$hostname`:要连接的服务器的域名或IP地址。 - `$port`:服务器上服务运行的端口号。 - `$errno...

Global site tag (gtag.js) - Google Analytics