【翻译】浅析WordPress 5.2.3安全更新
最近,笔者在研究一些与WordPress漏洞相关内容。Sucuri、RISP等安全公司对WordPress有着一系列的深入研究,因此笔者计划陆续将一些有意思文章翻译出来,与大家共同学习下,祝君多挖漏洞。
这篇文章是来自Sucuri安全公司的Marc-Alexandre Montpas,他对于WordPress 5.2.3安全更新进行了diff后,对更新的内容提出了自己的见解。文章中虽然没有给出明确的利用,但是针对安全补丁分析与逆推的思路,却很好玩。
正如作者本人说的
“Reversing security patches is an interesting challenge”
下面翻译稿正文开始
前言上周,WordPress发布了5.2.3版本,此版本是一个安全维护更新版本,因此包含许多安全修复程序。我们日常工作的一部分是分析这些安全版本,发现它正在修复的安全问题,并为进一步的内测制作poc。
基于我们的分析,此版本并没有高危漏洞被修复。已修复的漏洞都需要某种程度的限制,像是需要用户交互或拥有高权限帐户。在某些情况下,这些漏洞这只能由目标主动触发,在这种情况下,为了成功利用它们, ...
【翻译】浅析WordPress5.0存储型XSS漏洞
最近,笔者在研究一些与WordPress漏洞相关内容。Sucuri、RIPS、Fortinet等安全公司对WordPress有着一系列的深入研究,因此笔者计划陆续将一些有意思文章翻译出来,与大家共同学习下,祝君多挖漏洞。
这篇文章是来自FortiGuard Labs,本文介绍了存在于wordpress5.0版本中的xss漏洞。经我个人验证,从wordpress5.0版本起,由于强制使用古腾堡(Gutenberg)编辑器,内部存在不少xss漏洞,而本文中的漏洞,一直存在至5.0.5版本,而非文中所说的5.0.4。
下面翻译稿正文开始
前言WordPress 是世界上最受欢迎的内容管理系统 (CMS),它的全球CMS市场份额已达60.4%,远远高于排名第二的Joomla!(后者仅有5.2%市场份额)。因此,互联网上超过三分之一的网站是使用WordPress搭建的。
近日,FortiGuard Labs团队在 WordPress 中发现了一个存储型跨站点脚本 (XSS)0day漏洞。此 XSS 漏洞是由 WordPress 5.0 中的新内置编辑器 Gutenberg 引起的,编辑器无法 ...
Struts2 框架分析
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。
Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开
首先我们来看下Struts2的架构图
上图中的Key,介绍如下:
Servlet Filters:过滤器链,客户端的所有请求都要经过Filter链的处理。
StrutsCore:Struts2的核心部分,但是Struts2已经帮我们做好了,我们不需要去做这个
Interceptors,Struts2的拦截器。Struts2提供了很多默认的拦截器,可以完成日常开发的绝大部分工作;而我们自定义的拦截器,用来实现实际的客户业务需要的功能。
UserCreated,由开发人员创建的,包括struts.xml、Action、Template,这些是每个使用Struts2来进行开发的人员都必须会的。
上图中的各个元素,介绍如下
FilterDispatche ...
从一个简单的wordpress插件漏洞研究一下wordpress插件原理
在AdRotate Plugin5.2以及5.2之前的版本中,存在一处sql注入漏洞,该漏洞为FortiGuard实验室发现
漏洞位于AdRotate Plugin的\dashboard\publisher\adverts-edit.php
可见上图中,存在着多出sql查询语句
但是位于25行处,明显可见存在sql注入隐患
位于上图红框处,在拼接sql语句时,$ad_edit_id变量被拼接在id值部分。但是在这里,并没有用单引号将其值闭合
$ad_edit_id变量值可以通过get请求的方式传入,如下图
位于上图173行,可见$ad_edit_id = esc_attr($_GET[‘ad’]);
esc_attr方法是用来过滤HTML标签的,对sql注入无影响
esc_attr方法见下图
这样就导致了一个简单的sql注入的产生
具体的payload如下
1http://127.0.0.1/wordpress/wp-admin/admin.php?page=adrotate-ads&view=edit&ad=-1+UNION+SELECT+1%2CUSER%2 ...
从某cmsV4.1.0 sql注入漏洞看程序开发安全隐患
为了大致了解此cms,首先来看看这个cms为了防止sql注入,都做了哪些防护
一、程序入口处定义了过滤方法首先,程序通过set_globals方法,将get与post传入的参数,赋值到$GLOBALS数组中:
在赋值过程中,使用gpc_stripslashes来处理传入的键值
gpc_stripslashes方法的作用是,当MAGIC_QUOTES_GPC开启时,去除MAGIC_QUOTES_GPC所添加的转义符
这里的操作很奇特,在一般的cms中,在进行这样为伪全局变量赋值时,往往会判断MAGIC_QUOTES_GPC是否开启,当MAGIC_QUOTES_GPC为off时,程序会履行MAGIC_QUOTES_GPC的功能,为伪全局变量进行转义过滤。
如下图,另一款cms中的操作:
但是在本文中分析的cms中,正好反向操作,如果MAGIC_QUOTES_GPC开启,则去除其转义效果,这个cms为什么要这样做呢?接着往下看。
可见该cms存在input方法,该方法对$GLOBALS数组中的值通过sql_replace方法进行sql过滤
分析一下sql_replace方法
可 ...
MyBB 1.8.20 从存储型XSS到RCE漏洞深度分析
MyBB是国际上非常优秀的免费论坛软件,最大的特色是简单但是功能却出奇的强大,支持多国语言,可以分别设置前台后台的语言。
MyBB作为一个开源项目,拥有活跃的社区环境,项目的管理,发展由社区志愿者支持。用户量广泛,在github上的项目拥有609 个star,79个releases。
MyBB <= 1.8.20存在一处从存储的XSS到RCE组合利用漏洞,攻击者可以先通过xss获得管理员权限,再通过rce达到远程代码执行。这套利用流程不仅隐蔽而且利用难度低,只要私信给mybb管理员发出一条包含payload的消息即可。
该漏洞由RIPS 团队安全研究人员Simon Scannell发现并纰漏。但截止目前,并未公布利用poc
我们试图从Simon Scannell简单的漏洞披露中深入分析该漏洞,并尝试还原出poc
首先分析下mybb xss漏洞
0x01 XSS漏洞
此漏洞为mybb对BBCode的错误解析而造成的
首先了解下BBCode:
BCode是Bulletin Board Code的缩写,属于轻量标记语言(Lightweight Markup Lan ...
Webmin远程命令执行漏洞(CVE-2019-15107)深入分析
近日Webmin被发现一处远程命令执行漏洞,经过分析后,初步猜测其为一次后门植入事件。
Webmin是目前功能最强大的基于Web的Unix系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作。据统计,互联网上大约有13w台机器使用Webmin。当用户开启Webmin密码重置功能后,攻击者可以通过发送POST请求在目标系统中执行任意命令,且无需身份验证。
0x01 漏洞分析
首先分析msf给出的插件
根据插件,还原出poc如下:
当poc执行后,回像password_change.cgi发送POST请求
接下来看下password_change.cgi
位于37行到188行处,存在if-else语句
他们分别是
1、if ($wuser)
2、elsif ($gconfig{'passwd_cmd'})
3、elsif ($in{'pam'})
4、else
我们需要确认,程序到底进入那个if分支了
我们先print $wuser
从上图打印结果看,wu ...
GetSimpleCMS-Unauthenticated 远程代码执行漏洞分析
GetSimple是一款基于XML的开源的内容管理系统。Getsimple cms的使用量较为广泛,从官方给出的统计数据来看,GetSimple拥有超过12万次的下载量
在GetSimple 3.3.15版本中,攻击者可以通过伪造管理员cookie,绕过身份验证登陆后台,进而通过后台编辑模板功能模块写入php代码,造成远程代码执行漏洞
0x01 漏洞描述
在GetSimple 3.3.15版本中,攻击者可以通过伪造管理员cookie,绕过身份验证登陆后台,进而通过后台编辑模板功能模块写入php代码,造成远程代码执行漏洞。
Metasploit针对此次漏洞,也推出相应的利用插件
详情可见packet storm链接:
https://packetstormsecurity.com/files/152961/GetSimpleCMS-3.3.15-Remote-Code-Execution.html
0x02 受影响的系统版本
GetSimple<=3.3.15
0x03 漏洞编号
CVE-2019-11231
  ...
Struts2 S2-046漏洞——045的同分异构体分析
Apache Struts2存在远程代码执行漏洞,使用恶意的Content-Disposition值或者使用不合适的Content-Length头将payload传递给存在漏洞的服务器,将导致任意代码执行漏洞
漏洞分析本次漏洞与S2-045(CVE-2017-5638)极其的相似,S2-046与S2-045都是在请求中构造错误的数据,触发struts2的异常处理机制(buildErrorMessage),而buildErrorMessage又会将报错信息中的ognl表达式进行执行,从而产生了漏洞
但不同的是S2-045是通过错误的Content-Type字段,而S2-046利用的则是错误的上传文件信息
因此这里着重讲一下S2-046与S2-045的不同之处。关于最终执行代码的执行点,二者是完全一样的,因此可以参考我之前的分析文章,在这里就不详细说明了
S2-046漏洞的poc如下
从poc中可见,构造了一个含有payload的上传文件名,并且文件名中含有”\x00”
我们首先在StrutsPrepareFilter中doFilter方法中下断,执行poc并发送本次漏洞的利用请求
...
从某cmsV9.9四个漏洞看程序开发安全
近日,对某cmsV9.9版本进行代码审计,发现了4处漏洞。
这4处漏洞漏洞比较基础,也很经典。从这4处漏洞,可以反应了在程序开发过程中一些容易忽略的问题,下面分享下本次审计过程。
审计之旅在开发程序时,如果没有正确的过滤单引号(’)、双引号(”)、反斜杠(\)等特殊字符,往往会产生代码/sql注入漏洞。
在针对这些特殊字符,开发者经常使用如下方式进行过滤:
使用addslashes进行过滤
使用str_replace对单引号等进行替换操作
使用is_numeric等方法对数字类型的输入进行判断与过滤
审计此cms时发现,以上3种方式,在此程序的开发过程中,都有使用。但是,不严谨的使用,使得注入漏洞仍然存在
首先分析下此cms,来看下\include\common.php文件
如上图,在common.php文件中require filter.inc.php
在filter.inc.php文件中,存在如下图代码此cms使用伪全局变量的模式,使用foreach从’_GET’,’_POST’,’_COOKIE’中遍历数组中的值,然后再将获取到的数组键名作为变量,数组中的键值过滤后作 ...