细谈Web系统安装程序安全.doc
文本预览下载声明
细谈Web系统安装程序安全
Author:Yaseng
[目录]
0x00 前言
0x01 关于程序安装文件
0x02 最土团购直接重复安装 加 getShell
0x03 跳转绕过 phpdisk header bypass getShell
0x04 全局变量覆盖绕过 sdcms
0x05 非主流 dcrcms 的非常重装
0x06 phpweb 安装会员验证绕过
0x07 其他绕过实例
0x08 安全代码的编写
0x09 总结
前言
作为一个Web系统,安装程序是必不可少的。提供安装系统,已连接数据库和初始化网站数据,当首次安装时,系统一般会生成一个lock文件以免非法重装,但我们可以通,导致系统重装,系统数据丢失甚至getShell,本文以多个实例浅谈web系统安装程序的安全。
关于程序安装文件
web系统安装在第一次访问程序入口的会自动安装, 以笔者熟悉的php为例,一般是install.php 或者根目录下的install文件夹,安装流程如下
开始
开始
已安装
已安装
提示 跳转
环境检测
环境检测
提示
连接数据库
连接数据库
提示
提示
初始化网站数据
初始化网站数据
安装成功
图一
围观以上内涵图先,接下来我们用多个案例细谈之。
最土团购直接重复安装 加 getShell
参考 HYPERLINK http://www.0855.tv/post/46.htm http://www.0855.tv/post/46.htm
1.访问/install.php (有的人懒,并没有删除这个文件)2.填写自己本机搭建好的Mysql帐户和IP,重新安装之。3.注册一个帐户,第一个注册的默认为管理员。4.访问/manage/index.php
5.点击 设置--模版---选择about_job.html 添加PHP一句话6.用菜刀链接/about/job.php
Phpdisk header 绕过
参考http://yaseng.me/phpdisk-header-bypass-getshell-exp.html
图二
如图二,已安装检测时,直接 header跳转,而php中的 header 函数跳转之后还可以执行,而为了安装方便去掉gpc,导致重复安装直接getShell.
图三
xdcms 全局变量覆盖绕过重装
参考 HYPERLINK http://yaseng.me/xdcms-open-code-audit.html http://yaseng.me/xdcms-open-code-audit.html
看 install下的 index.php 文件
foreach(Array(_GET,_POST,_COOKIE) as $_request){
foreach($$_request as $_k = $_v) ${$_k} = _runmagicquotes($_v);
}
经典的全局变量覆盖,代码的意思是把传入的变量数组遍历赋值,比如 $_GET[‘a’] 赋值为 $a Ok 继续往下看已安装检测代码
$insLockfile = dirname(__FILE__)./install_lock.txt; //在全局数据遍历之前
if(file_exists($insLockfile)){
exit( 程序已运行安装,如果你确定要重新安装,请先从FTP中删除 install/install_lock.txt!);
}
这里的 insLockfile是我们可控的(全局变量覆盖),随便传入一个参数
HYPERLINK /install/index.php?insLockfile=1 /install/index.php?insLockfile=1
显示全部