phpStudy 隐藏后门 [漏洞插件编写]
2019-09-25 10:39:45 Author: www.secpulse.com(查看原文) 阅读量:247 收藏

0x00 漏洞描述

PhpStudy软件是国内的一款免费的PHP调试环境的程序集成包,通过集成Apache、PHP、MySQL、phpMyAdmin、ZendOptimizer多款软件一次性安装,无需配置即可直接安装使用,具有PHP环境调试和PHP开发功能,在国内有着近百万PHP语言学习者、开发者用户。

近日,使用广泛的PHPStudy环境集成程序包被公告疑似遭遇黑客攻击,程序包自带PHP的php_xmlrpc.dll模块隐藏有后门,经确认phpStudy2016、phpStudy2018的部分版本有后门。

0x01 影响组件

phpStudy_2016.11.03

  • phpphp-5.2.17extphp_xmlrpc.dll

  • phpphp-5.4.45extphp_xmlrpc.dll

phpStudy_2018.02.11

  • PHPTutorialphpphp-5.2.17extphp_xmlrpc.dll

  • PHPTutorialphpphp-5.4.45extphp_xmlrpc.dll

0x02 后门自检

phpStudy_2016.11.03版本为例

用户可以通过 phpStudy路径下 php 文件夹全局搜索文件名php_xmlrpc.dll内包含 @eval(%s('%s')) 关键字

亦可以通过以下Python脚本进行检测:

 #!/usr/bin/env python
 # -*- coding: utf-8 -*-
 __author__='安识科技安全服务团队'
 __date__='2019/09/23'
 
 import sys
 import os
 import re
 
 def check_file(filename):
     backdoor="@eval(%s('%s'))"    # 后门特征
     lines = 0
     presence = False  #默认为无
     if filename.endswith('.dll'):    # 筛选dll文件
         with open(filename, "r", encoding='utf-8', errors='ignore') as backdoors:
             for line in backdoors:
                 if backdoor in line:
                     presence = True
                     break
                 lines += 1  
     return presence, lines
 
 
 def Check_Vul(PHPStudy_DIR):
     # 检查目录
     for dirs,note, filenames in os.walk(PHPStudy_DIR):
         for filename in filenames:
             Check_File = os.path.join(dirs, filename)
             check_res, Row = check_file(Check_File)
             if check_res:
                 print("发现后门   {0}  关键字在第: {1}行".format(Check_File, Row))
     pass
 
 if __name__ == '__main__':
     if len(sys.argv) != 2:
         print("Instructions:[PHPStudy安装目录]")
         sys.exit(1)
     else:
         Check_Vul(sys.argv[1])

0x03 环境搭建

下载phpStudy_2016.11.03.zip 版本安装压缩包。安装到Windwos系统随后启动PHPStudy即可。

默认加载php-5.4.45版本,该版本存在后门,然后打开本地域名localhost。

0x04 插件编写

很多小伙伴执行命令后状态码会出现错误 408 Requests TimeOut

经过验证代码已经执行。所以内容页面是否回显不重要。那我们如何判断是否执行成功呢?

可以使用 DNSlog 接收平台  执行ping 、curl 等命令再检查DNslog 是否存在请求。

如果存在即判断漏洞存在

编写代码思路就是这么多。快来生态插件社区提交插件吧!

https://x.secpulse.com/#/

0x05 漏洞修复

删除问题版本phpstudy

植入后门版本分别为phpStudy_2016.11.03phpStudy_2018.02.11,如果是通过其它非官方下载站下载的该版本,请自行使用以上方法检查并删除其中的存在问题的版本。

在官方网站下载phpstudy

目前PhpStudy官方已发布最新版本PhpStudy v8.0,请访问官方链接更新到最新软件:

https://www.xp.cn/


文章来源: https://www.secpulse.com/archives/113209.html
如有侵权请联系:admin#unsafe.sh