Drupal Core SA-CORE-2018-006 mail() 函数代码注入漏洞分析
近日,Drupal官方发布安全通告修复了多个安全性问题,其中包括2个严重的远程代码执行漏洞,影响Drupal 7和8的多个版本。其中一个漏洞源于在发送emai时,一些变量没有进行适当的处理就传给了shell执行,因此可能导致远程代码执行。
漏洞预警可以参考这里
http://blog.nsfocus.net/drupal/
漏洞Mail方法本次漏洞出现在PhpMail.php中
下面看下存在漏洞的mail方法
接下来可以看下drupal在8.6.2版本中修补的代码,如下两张图
通过这个补丁可以看出,8.6.2版的drupal对$message[‘Return-Path’]值进行了验证,通过后拼接”-f”赋值与$additional_headers。
PHP中的mail方法下面看下php中的mail方法:
Mail方法接收五个参数,这里我们重点关注第五个参数 $additional_parameters
从参数说明可以看出,这个$additional_parameters参数通常是用于将其他参数传递来设置发送邮件时的一些属性,比 ...
DjangoUEditor任意文件上传漏洞分析
Django是Python世界最有影响力的web框架。
DjangoUeditor是一款可以在Django应用中集成百度Ueditor HTML编辑器的插件(Ueditor HTML编辑器是百度开源的在线HTML编辑器)。
DjangoUeditor插件上存在一个漏洞,可以导致任意文件上传。
影响版本DjangoUeditor < 1.9.143
漏洞分析最近在学习分析python web框架方面的漏洞,恰好看到了WooYun 上2015年的一个关于DjangoUeditor的漏洞,就拿来分析一下。
不要看这个漏洞距今已经快两年了,笔者认为这个漏洞还是有分析的价值的,因为DjangoUeditor作为一个由百度开发的富文本编辑器Ueditor移植到Django中的组件,它的使用率还是挺高的;再者,DjangoUeditor于2015年1月17号后,再也没有更新过,见github上作者的说明:
经笔者测试,现在可以下载使用的1.9.143版本中,依然存在着这个漏洞。因此这个漏洞依然有着一定的影响的。
下面开始正式分析下这个漏洞,根据wooyun上的说明,可以在利用这个插件 ...
ThinkPHP 5.0版本 SQL注入漏洞分析
前段时间,ThinkPHP发布了V5.0.16版本的release,该版本提到了安全更新。本篇文章以此次安全更新入手,对ThinkPHP 5.0版本 SQL注入漏洞进行了详细分析。文末还有测试小问题,看看大家get到这个漏洞的精髓了吗?
前言Thinkphp V5.0.16版本的release说明如下:
说明中提到了安全更新,但并没有提到是什么安全问题。
V5.0.16的commits记录如下,可以看到在3月26日出现了一个关于安全性的提交,但26日似乎没有一次性改好,在27日又对这个inc/dec查询改动了一次
接下来看下这个inc/dec查询到底有什么问题,需要一改再改。
漏洞分析先看下26日改了什么
再看看27日改了什么
改动都在Builder.php这个文件的相同位置,而且反反复复的折腾的,就是$val[1]这个变量。
接下来看看完整的函数部分,看看$val[1]到底怎么了。
漏洞部分在parseData函数
protected function parseData($data, $options)
{
if (empty($data)) {
...
Drupal远程代码执行漏洞(CVE-2018-7600)分析
近日,流行的开源内容管理框架Drupal曝出一个远程代码执行漏洞,漏洞威胁等级为高危,攻击者可以利用该漏洞执行恶意代码,导致网站完全被控制。漏洞对应的CVE编号为CVE-2018-7600。
本篇文章对Drupal 8 - CVE-2017-7600漏洞进行了详细分析。这个漏洞看起来是一个漏洞,其实我认为,它是由两个小的鸡肋问题组成的。具体是什么呢?
CVE-2018-7600 漏洞分析这个漏洞的根本原因出在drupal对表单的渲染上:
可见,在drupal中,我们不需要直接写html表单,而是先创建一个数组,表单呈现引擎通过位于\drupal\core\lib\Drupal\Core\Form\FormBuilder.php文件中的buildForm方法构造出一个名为$form表单,然后成对应的html表单进行呈现。
通过下图buildform的定义,可以看出它是用来构造一个表单的
最终的$form是如下图这个样子:
这个漏洞,恰恰就出在了这里。
但是对于一个drupal框架的应用程序来说,后台表单数组都是开发者写好的,像这个样子
public function form( ...
PHPMailer漏洞分析
在PHPMailer 5.2.17以及之前版本中,存在着一个高危的任意文件写入漏洞,当攻击者将精心构造的恶意数据分别写入邮件内容以及发件人地址中并传递给使用了相应版本的PHPMailer web应用,就可以导致任意文件写入以及远程代码执行的攻击。
影响版本PHPMailer < 5.2.18
漏洞分析在正式的漏洞分析开始前,先来简单介绍下什么是phpmailer。
PHPMailer是一个用于发送电子邮件的php函数包。有的读者会提问,既然php本身提供了一个用于发送邮件的mail函数,通过这个函数可以直接在程序中发送邮件,那么为什么需要PHPMailer呢?
Mail函数的语法如下:mail(to,subject,message,headers,parameters),可见mail函数没法指定一台中继邮件发送服务器(及下图step2中的MDA)的功能,Mail函数需要服务器支持sendmail邮件传输代理程序。除此之外mail()函数也存在着一些其他功能上的不足,因此功能更加强大的PHPMailer函数包便诞生了。
对本次漏洞,先看一下官方有什么改动,可以通过改动来推断出漏洞 ...
Drupal 8 - CVE-2017-6926漏洞详解
近期,著名的Drupal CMS网站爆出7个漏洞,其中1个严重漏洞CVE-2017-6926,具有发表评论权限的用户可以查看他们无权访问的内容和评论,并且还可以为该内容添加评论。
本篇文章对Drupal 8 - CVE-2017-6926漏洞进行了详细分析。
CVE-2017-6926 漏洞详情先看下drupal官网的通告:
https://www.drupal.org/sa-core-2018-001
有发布评论权限的用户,可以查看他们无权访问的内容和评论。
并且还可以为此内容添加评论。
想要触发这个漏洞,必须启用评论系统,并且攻击者必须有权发布评论。
从漏洞描述来看,问题可能出在评论的权限控制上了。
但是这里有一个坑,笔者当时就掉进去了:这里的权限,指的是文章的权限?还是评论的权限呢?是攻击者可以访问他们不公开的评论呢?还是攻击者可以访问不公开的文章的公开评论呢?下面我会详细的分析这个漏洞,并给出上面问题的答案。
漏洞是在8.4.5上解决的,看一下8.4.5修改的内容:
这里在CommentController.php(评论控制器)里加上了一个对entity实体是否有vi ...
Joomla内核SQL注入漏洞(CVE-2018-8045)分析
近日Joomla又爆出sql注入漏洞(CVE-2018-8045),让我们一起分析一下这个漏洞吧!
CVE-2018-8045 漏洞简介漏洞具体情况可参见绿盟科技安全威胁周报-201812周:
http://blog.nsfocus.net/nsfocus-201812/
Joomla! Core SQL注入漏洞
NSFOCUS ID
39158
CVE ID
CVE-2018-8045
受影响版本
Joomla! Joomla! 3.5.0-3.8.5
漏洞点评
Joomla是一套网站内容管理系统,使用PHP语言和MySQL数据库开发。Joomla! 3.5.0 -3.8.5版本对SQL语句内的变量缺少类型转换,导致User Notes列表视图内SQL注 入漏洞,可使攻击者访问或修改数据等。目前厂商已经发布了升级补丁,修复了这个 安全问题,请用户及时到厂商的主页下载。
CVE-2018-8045 漏洞详情我们先看下joomla官网怎么说的:
https://developer.joomla.org/security-centre/723-2018030 ...
IPS Community Suite PHP远程代码执行漏洞分析
“IPS Community Suite “是一款在国外广泛使用的建站系统。近期被曝出在4.1.12.3版本及以下版本存在代码注入漏洞。这个漏洞通过控制content_class参数提交的请求来注入代码,以至于可以远程执行PHP代码。
影响版本IPS版本:<=4.1.12.3
漏洞分析根据纰漏的漏洞细节,可以分析出这次漏洞的问题在于content_class这个参数。经过在源文件中搜索,发现这个参数在/applications/core/modules/front/system/content.php文件中被使用。、
在content.php文件中的find()函数里,IPSRequest::i()->content_class方法获取了GET提交的content_class参数,然后通过explode函数与implode函数进行字符串分割与拼接的处理,最后组合’IPS\’字段赋值给$class。
我们接着看下一行的if语句:$class的值将传递到class_exists()函数中去,我们在这里简单的的介绍下class_exists()函数:
bool cl ...
PHP漏洞跟踪报告
由于SugarCRM 6.5.18系统没有对提交的url参数进行过滤,攻击者可以提价一个构造好的url参数,从而将恶意代码写入网站目录中的配置文件中去,配置文件进一步被其他文件包含,导致恶意代码被触发。
[![php1](http://blog.nsfocus.net/wp-content/uploads/2016/11/PHP1-300x187.jpg)](http://blog.nsfocus.net/wp-content/uploads/2016/11/PHP1.jpg)
修补情况SugarCRM **新版本中被修复**。
参考资料http://seclists.org/fulldisclosure/2016/Jun/51
技术细节现在已知的POC如下图所示:
执行POC,我们可以看到这样的结果
执行POC,我们可以看到这样的结果
下面我们就要通过poc去分析漏洞的形成原因。
找到文件\modules\Connectors\controller.php
$source = SourceFactory::getSource($source_id); 这里动态调用了函数get ...
WordPress的Display Widgets插件后门分析
Display Widgets是WordPress一款插件,大约有200,000站点在使用该插件。最近,Display Widgets被发现存在有后门代码。该后门用于上传数据到第三方服务器,上传的数据包括用户IP地址,UA标识等。本文是对此后门的技术分析。
后门分析Display Widgets安装后如下图
** **
在没有安装Display Widgets插件,Widgets原来的样子
Display Widgets插件开启后的样子
Display Widgets插件扩展了小工具的功能.
虽然这个插件是在后台进行操作配置的,但是我们在浏览wordpress前端网页时,这个插件仍然可被加载.
我们访问一下wordpress文章页面,并在后门处下断
在后门文件上下断点,访问前端文章页面,被断下,证明此时后门已经加载了。
下面我们分析下这个后门。
这个后门文件名为geolocation.php,在插件安装后位于wp-content/plugins/display-widgets/文件夹中
发现代码中有多处wp_remote_get()方法:
这个方法是用来向外发送get请求 ...