一、漏洞简介
二、漏洞影响
三、复现过程
代码分析
安装漏洞
其实一般代码审计都是从安装文件开始审计,一般安装脚本主要存在如下漏洞:
无验证功能,任意重装覆盖
表单不做过滤写入config.php导致getshell $_GET['step']跳过限制步骤
漏洞文件:install.php
首先我们直奔第一个点能否任意重装,我们可以看到必须常量DEL_INSTALLER为1的时候才会触发删除install.php,那么我们追踪DEL_INSTALLER看看
这里可以看到DEL_INSTALLER默认值就是0,所以一般情况下这里是可以任意重装的,我们从黑盒的测试也可以印证这一点。同时表单也做了过滤所以这里也没有后面两种情况。
越权漏洞
在安装完毕后打开config.php看到两个比较奇怪的常量定义:AUTH_KEY和AUTH_COOKIE_NAME从名字来看这连个常量肯定是有一定联系的。如下图:
我们在抓包时候发现了AUTH_COOKIE_NAME这个常量,说明这是一个cookie名。我们继续再代码中追踪这个常量。
我们可以看到在登录验证cookie中使用了这个常量,我们追踪一下cookie值是如何构造的
这里可以看到,调用了emHash这个类方法,并且这里使用了AUTH_KEY这个常量,这里说明这两个常量是有联系的。我们在继续追踪hash_hmac()到底使用key做了什么。
这里对传入的$key也就是AUTH_KEY进行了md5加密到一个二进制字符串中而后分割为64个字节与一个字符*64次的字符串进行异或最后得到两个字符串$ipad,$opad最后再将他们打包拼接用md5加密返回给上级调用。我们再回到上级。
我们知道generateAuthCookie方法中的 $key、$hash是由AUTH_KEY加密而成。最终的cookie是由$user_login 、 $expiration $hash拼接而成,而$expiration是cookie的生存时间,$user_login是用户名。这里可以得知$key、$user_login、$expiration都是固定的那么只要知道AUTH_KEY就有伪造cookie造成越权的可能。
例如我们准备两个靶机,一个靶机登陆,获取这个靶机的cookie即可越权登陆另外一个靶机。前提是两个靶机的AUTH_KEY得一致。这里有点鸡肋但是还是有利用的可能。我们将两个靶机的cookie拿出来比较确实是一样的。
后台getshell(一)
其实上诉两个漏洞已经能够让我们进入后台了,现在的任务就是如何Getshell了。这里我随便看了一下发现后台有设置上传附件后缀的功能。
但是测试发现,加入php后缀你发现会将phpt替换为X,从源码中可有很直观看到这点。
此时我注意到了备份功能,这个后缀是保存在数据库中的,既然我不能直接将后缀写入数据库,那么我能不能通过数据备份恢复的方法写入数据库呢。 这里直接备份所有表,下载下来然后找到写入后缀的语句,加上php,如下
导入备份后发现设置中的上传后缀有php
直接在文章发表出上传PHP文件即可getshell
后台getshell(二)
我们还发现这个cms中上传插件的地方可以上传zip,这里我们想如果在插件中插入一句话木马是不是也能getshell?我们找到插件上传的脚本,发现使用了一个叫emUnzip的函数。
我们继续追踪这个函数,发现这个解压函数是使用ZipArchive()类来实现解压缩的。我们可以看到代码755行中获取了压缩包的内部目录/文件的名称 ,并将其分割为数组将第一个元素赋值给了$dir,我们看到switch中plugin选项,这里又将获取的第一个文件夹名称赋值给$plugin_name,使用getFromName方法获取了压缩包是否存在$dir . $plugin_name . '.php'这个文件。综上这里就是检测压缩包中文件夹里面是否存在一个与文件夹名称一致的PHP文件,最后在再压。这里也没对文件进行其他校验操作。因此我们只要再构造 文件夹名和文件名相同的内容的压缩包,同时由上方代码也可以知道,文件将会被解压到 /content/plugins/a/a.php(文件夹名称a)
构建压缩包上传插件:
四、参考链接
猜你还喜欢
- 07-08九年专业安全团队承接渗透入侵维护服务
- 08-06SQLMAP的注入命令以及使用方法
- 08-03白帽故事汇:网络安全战士从来不是「男生」的专利
- 07-27编辑器漏洞手册
- 07-12web安全之如何全面发现系统后台
- 02-22常见Web源码泄露总结
- 07-25网站后台登陆万能密码
- 07-23破解emlog收费模板“Begin”
- 03-21黑客如何破解wifi密码
- 01-12批量检测SQL注入
- 最新文章
- 随机文章
-
- Window应急响应(一):FTP暴力破解
- Window应急响应(二):蠕虫病毒
- Window应急响应(三):勒索病毒
- Linux内核本地提权漏洞预警分析(CVE-2019-8912)
- CANalyzat0r :一款可以对专用汽车协议进行安全分析的强大工具
- TrackRay:一个开源的微服务渗透测试框架
- ThinkPHP5核心类Request远程代码漏洞分析
- Metinfo 6.1.3 XSS漏洞分析
- 从一道ctf题学习mysql任意文件读取漏洞
- Fibratus:一款功能强大的Windows内核漏洞利用和跟踪工具
- 在Linux宿主机审计docker进程和网络连接
- 挖洞经验 | 一次对GitHub Wiki页面的把玩测试
- 个人总结的漏洞管理流程分享
- DNS-Shell:一款通过DNS信道来实现交互式Shell的强大工具
- 探究PHP中的Mkdir函数
- WordPress插件Easy WP SMTP反序列化漏洞分析
- 如何使用SQLMap脚本绕过Web应用防火墙
- 奇思妙想之用JS给图片加口令
- 奇淫技巧之Metasploit远程代码执行“冲击波”
- Apache 提权漏洞(CVE-2019-0211)
- 热门文章
-
- 九年专业安全团队承接渗透入侵维护服务
- Stuxnet纪录片-零日 Zero.Days (2016)【中文字幕】
- Emlog黑客站模板“Milw0rm”发布
- SQLMAP的注入命令以及使用方法
- 白帽故事汇:网络安全战士从来不是「男生」的专利
- 编辑器漏洞手册
- web安全之如何全面发现系统后台
- 常见Web源码泄露总结
- 深入理解JAVA反序列化漏洞
- cmseasy前台无需登录直接获取敏感数据的SQL注入(有POC证明)
- 网站后台登陆万能密码
- 黑客怎样简单入侵别人手机,黑客是如何入侵手机的?
- 黑麒麟2016渗透培训系列教程
- 破解emlog收费模板“Begin”
- 那些强悍的PHP一句话后门
- Android平台渗透测试套件zANTI v2.5发布(含详细说明)
- 渗透工具BackTrack与KaliLinux全套视频教程
- Python列为黑客应该学的四种编程语言之一 初学者该怎么学
- CVE-2017-11882漏洞复现和利用
- 恶意程序报告在线查询工具
- 文章标签
-