FineCMS有一个缓存功能,和当初Wordpress一样,有一个缓存功能,并且缓存的文件名不是随机的并且后缀是php,就导致了可以利用后台缓存功能来getshell。
下面是Payload
FineCMS有一个缓存功能,和当初Wordpress一样,有一个缓存功能,并且缓存的文件名不是随机的并且后缀是php,就导致了可以利用后台缓存功能来getshell。
下面是Payload
首先来看一段CI内核在开启session储存在数据库选项的时候的操作.也就是
/system/core/config.php
内核配置文件设置为以下的时候
$config['sess_use_database'] = true;
呵呵,昨晚和初中同学叙旧,两个人无聊找了一款网页游戏BR大逃杀玩,今天把这个网页游戏下下来简单审计了一下源码。
由于这些漏洞都是在exploit-db上面扒下来的exp,再通过exp的作用来分析程序漏洞.所以有时候exp写的比较让人难以理解,可以通过wireshark抓包来进行分析.
这个漏洞expolit-db里的exp名称是WordPress 2.0.5 - Trackback UTF-7 - Remote SQL Injection Exploit
由于这个漏洞是注入,可以选择在wp-includes/wp-db.php的print_error()函数里面下一个断点,OS X里可以使用macGDBp配合MAMP搭建测试环境,很方便.
想要分析这个漏洞首先要了解xmlrpc
的相关知识.
xml rpc是使用http协议做为传输协议的rpc机制,使用xml文本的方式传输命令和数据调用远程的方法。
用wordpress xmlrpc.php的sayHello函数来演示一个例子
发送以下的xmlrpc数据包到wordpress的xmlrpc.php路径上,wordpress就会返回返回一个xmlrpc Response
在Wordpress调用模版时候,其功能之一是在右侧显示当前存档的类型,进行对应类型查询的时候没有使用干净的参数导致注入
首先将断点下在问题点追寻处理流程
如下:
这个漏洞问题出在WordPress生成的序列化后的缓存文件中.因为缓存文件的后缀为php
,文件的内容可控,并且文件名在一定条件下可预见,所以在一定条件下可以getshell
首先下断点在生成问题文件的地方
程序流程图
出问题的是
wp-includes/cache.php
文件中的save()函数
save()函数序列化了用户的资料之后再保存到
PHP是弱类型语言(依照laruence的说法是一种中强类型语言)
所谓的弱类型就是在申明一个变量的时候,并不需要显式指明它保存的数据的类型,在程序执行的过程中可以根据需求动态的改变变量的类型.
那PHP是如何实现这个功能的呢?
首先PHP定义了一个保存变量的结构体(C语言)
|
|
哎哎哎,老司机一言不合就爆洞啊,这个洞在之前分析CVE-2016-3714的时候也发现了,结果被捂烂了…心塞塞~那我就写一下当时是怎么发现怎么这个洞…
之前在分析CVE-2016-3714的时候想,system()
函数处理有问题,那么其他类似的有哪些函数呢?
下面是一个可以执行命令的函数列表:
|
|
那么搜索一下调用system()
函数有哪些地方?经过搜索的话,最终只有CVE-2016-3714这个漏洞点调用到了一个system()
. 那这么接下来搜索一下popen()
函数调用点