Destoon B2B...

- AV AC AU C I A
发布: 2025-04-13
修订: 2025-04-13

### 简要描述: destoon某加密函数缺陷可破解导致注入 由于字符串加密,所以自带的全局strip_sql gpc等直接无视了 使用不安全的“随机数”的实例 搬个小凳子吧,这个一时半会儿说不完。。。 ### 详细说明: 出问题的是用于cookie加解密的encrypt和decrypt函数 首先看一下函数内容include/global.func.php 122行 ``` function encrypt($txt, $key = '') { $key or $key = DT_KEY; //DT_KEY是在安装时生成的一个15位随机字符串 $rnd = md5(microtime());//缺陷 下面说 $len = strlen($txt); $ren = strlen($rnd); $ctr = 0; $str = ''; for($i = 0; $i < $len; $i++) { $ctr = $ctr == $ren ? 0 : $ctr; $str .= $rnd[$ctr].($txt[$i] ^ $rnd[$ctr++]); //只是简单的按位异或 } return str_replace('=', '', base64_encode(kecrypt($str, $key))); } function decrypt($txt, $key = '') { $key or $key = DT_KEY; //这里才用到key $txt = kecrypt(base64_decode($txt), $key); $len = strlen($txt); $str = ''; for($i = 0; $i < $len; $i++) { $tmp = $txt[$i]; $str .= $txt[++$i] ^ $tmp; //也是异或 } return $str; } ``` 粗看有随机数、有随机时间值、还做md5hash再异或好像很安全的样子 因为有两个未知key md5(microtime())和DT_KEY 等等 真的是两个么?搜一下microtime()的定义 定义和用法 microtime() 函数返回当前 Unix 时间戳和微秒数。 例子 ``` <?php echo(microtime()); ?> ``` 输出 ```...

0%
暂无可用Exp或PoC
当前有0条受影响产品信息