PHPCMS破绽剖析合集(下) | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

PHPCMS破绽剖析合集(下)

申博_安全防护 申博 36次浏览 未收录 0个评论

本篇详细剖析了 PHPCMS 的部份汗青破绽。个中多是以猎取到破绽点为场景,反向发掘至破绽触发进口(假定本身发明了破绽点,模仿怎样找寻全部进击链及其进口点),旨在进步本身代码审计才能。当中包括一些收集上未公开的触发点,以及补丁对照剖析与绕过。

v9.6.1恣意文件读取

这个版本的 恣意文件读取 破绽和上个版本的 SQL注入 破绽道理是相似的,且出题目的文件均在 phpcms/modules/content/down.php 中。在该文件的 download 要领中末了一行调用了 file_down 文件下载函数,我们可以看到其第一个参数是要读取的文件途径。

PHPCMS破绽剖析合集(下)

我们再来看看 download 要领中有哪些限定前提。可以看到其开首部份的代码,和上一个版本的 SQL注入 相似,唯一差别的是这里加解密的 key 变成了 $pc_auth_key ,我们等下就要来找找运用 $pc_auth_key 举行加密的可控点。继承看 download 要领,里面临要下载的文件后缀举行了黑名单校验,然则末端又对 >< 字符举行替代,这就致使后缀名正则可被绕过,比方: .ph<p 。(下图对应文件位置:phpcms/modules/content/down.php)

PHPCMS破绽剖析合集(下)

如今我们就要来找找运用 $pc_auth_key 作为加密 key 的可控点。经由历程搜刮关键字,我们可以看到有三处处所。但是前两处处所是不可以应用的,因为都有登录检测。而第三个点就可以应用,我们看个中 $i、$d、$s 作为明文字符串被加密。(下图对应文件位置:phpcms/modules/content/down.php)

PHPCMS破绽剖析合集(下)

有了加密字符串,我们怎样可以从前台猎取呢,这里其实在末了一行包括模板文件时,将加密字符串 $downurl 输出了,如许也就处理了我们猎取的题目。

PHPCMS破绽剖析合集(下)

$i、$d、$s 这三个变量从哪里来?我们往前看,代码有无相称熟习?这里只对 $i 举行了 intval 过滤,其他两个变量照样可以应用。而且加密字符串 $a_k 的猎取,就和上个版本的 SQL注入 破绽进击链的前2步是一样的,这里不再赘述。(下图对应文件位置:phpcms/modules/content/down.php)

PHPCMS破绽剖析合集(下)

我们在组织 payload 的时刻,我们要注意全部进击历程会经由两次 safe_replace 、两次 parse_str 、一次 str_replace(array(‘<‘,’>’), ”,$fileurl) ,而顺序对 ..php 字符举行了检测。所以我们要想接见 php 文件或举行途径穿越,后缀可以设置成 ph>p ,途径符可以变成 .>. 。然则 safe_replace 函数会 str_replace(‘>’,’>’,$string) ,所以 > 字符须要编码两次,变成 %25253e

PHPCMS破绽剖析合集(下)

我们可以将全部破绽的触发历程整理成下图:

PHPCMS破绽剖析合集(下)

末了来看一下官方宣布的 PHPCMS v9.6.2 中是怎样修复这个破绽的,补丁以下:

从零开始学PowerShell渗透测试

从零开始学PowerShell渗透测试 前言 win7以后,powershell默认安装在windows上,这是一个非常强大的渗透测试利器 主要用于后渗透的过程中,扩大攻击面,原来没有怎么接触过这玩意,最近发现了几款ps渗透框架才意识到了powershell的强大。所以,还是准备好好学学。从零开始的那种。 基本语法入门 启动 直接通过启动栏输入powershell就好 简单命令 Get-Help 主题
Window

PHPCMS破绽剖析合集(下)

可以看到补丁将后缀婚配划定规矩放在离下载文件近来的处所,貌似能防备划定规矩中的文件被读取,然则我们可以应用 windows 的特征,在 windows 下绕过这个正则,这也是网传的一种 PHPCMS v9.6.2恣意文件下载 破绽。

PHPCMS破绽剖析合集(下)

v9.6.2前台SQL注入

这个版本的的注入,是建立在恣意文件读取破绽存在的情况下才可应用。经由历程恣意文件读取破绽取得加解密的 key 值,我们可以用这个 key 加密我们的 SQL注入payload 。因为顺序对解密后的数据并未过滤,终究致使破绽发作。严厉上来说 v9.6.2 版本的注入只能在 windows 上应用,详细缘由在上面的恣意文件读取破绽剖析时也说了。下面我们来详细剖析一下这个破绽。

破绽文件位于 phpcms/modules/member/classes/foreground.class.php ,代码以下图。我们可以显著看到下图第33行,顺序直接将解密后的数据未经由滤直接带入查询。而待解密数据 $phpcms_auth 和解密秘钥 $auth_key 都可组织。

PHPCMS破绽剖析合集(下)

我们先来看一下待解密数据 $phpcms_auth 怎样组织。从下图中,可以看出顺序将从 cookie 中的 xxx_auth 字段经由 sys_auth 函数解密后,返回给了 $phpcms_auth ,而默许情况下运用 pc_base::load_config(‘system’, ‘auth_key’) 作为加解密的 key 值。

PHPCMS破绽剖析合集(下)

pc_base::load_config(‘system’, ‘auth_key’) 的值在网站搭建好后,会存储在 caches/configs/system.php 中,我们可以经由历程恣意文件读取来取得这个值。

PHPCMS破绽剖析合集(下)

如今 $phpcms_auth 已搞定了,我们再来看看 $auth_key = get_auth_key(‘login’) 怎样组织,跟进 get_auth_key 的代码。我们可以看到 $auth_key$prefix、pc_base::load_config(‘system’,’auth_key’)、ip() 三个元素决议。前两个都是已知的,而第三个猎取用户IP的函数存在IP捏造的题目,也可所以牢固的。

PHPCMS破绽剖析合集(下)

所以 get_auth_key(‘login’) 的值也是我们可以组织的,剩下的事变只需我们将 payload 传给加密函数加密两次即可。我们末了再来看一下 PHPCMS v9.6.3 中是怎样修复这个破绽的,补丁以下:

PHPCMS破绽剖析合集(下)

可以显著看到,补丁将解密后取得的 $userid 举行了强转。

结束语

剖析汗青破绽优点在于,可以使本身对这个 CMS 更熟习,摸清该 CMS 普遍存在的题目,甚至有时机经由历程 bypass 补丁来发明新的 0day 。有些补丁只是临时修复了破绽,安全隐患依然存在。跟着 CMS 功用越来越多,我们可以将新功用中的应用点,连系之前的风险点,打出一条美丽的进击链,期待下个 0day 的降生。


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明PHPCMS破绽剖析合集(下)
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址