国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 網(wǎng)站 > 建站經(jīng)驗(yàn) > 正文

Ecshop密碼找回功能漏洞與修復(fù)詳解

2024-04-25 20:38:14
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  Ecshop提供了密碼找回功能,但是整個(gè)密碼找回流程中存在一些設(shè)計(jì)上的安全隱患

1. Ecshop程序使用了MD5不可逆加密算法,但是計(jì)算密文的生成元素都有可以很輕易地被黑客拿到

/*

if (md5($adminid . $password) <> $code)

1. $adminid: 黑客顯式指定

2. $password: 暴力枚舉

*/

2. 對(duì)重復(fù)失敗次數(shù)沒(méi)有做限制

1. 漏洞觸發(fā)條件

HTTP Package Repeater

2 漏洞影響范圍

1. ecshop 2.7.2

2. ecshop 2.7.3

3. ...

3. 漏洞代碼分析

admin/get_password.php

...

/* 驗(yàn)證新密碼,更新管理員密碼 */

elseif (!empty($_POST['action']) && $_POST['action'] == 'reset_pwd')

{

$new_password = isset($_POST['password']) ? trim($_POST['password']) : '';

$adminid = isset($_POST['adminid']) ? intval($_POST['adminid']) : 0;

$code = isset($_POST['code']) ? trim($_POST['code']) : '';

if (empty($new_password) || empty($code) || $adminid == 0)

{

ecs_header("Location: privilege.php?act=login/n");

exit;

}

/* 以用戶的原密碼,與code的值匹配 */

$sql = 'SELECT password FROM ' .$ecs->table('admin_user'). " WHERE user_id = '$adminid'";

$password = $db->getOne($sql);

/*

這里是漏洞的關(guān)鍵

1. $adminid:黑客想要爆破攻擊重置密碼的對(duì)象

2. $password:黑客通過(guò)密碼暴力枚舉

3. $code:黑客可以在本地使用相同的算法進(jìn)行計(jì)算得到

*/

if (md5($adminid . $password) <> $code)//www.zuimoban.com

{

//此鏈接不合法

$link[0]['text'] = $_LANG['back'];

$link[0]['href'] = 'privilege.php?act=login';

sys_msg($_LANG['code_param_error'], 0, $link);

}

....

4. 防御方法

這個(gè)漏洞屬于密碼學(xué)的抗窮舉設(shè)計(jì)缺陷,要對(duì)這個(gè)漏洞進(jìn)行修復(fù),同時(shí)要能保證對(duì)原有的業(yè)務(wù)進(jìn)行平滑兼容,我們可以從以下幾個(gè)方面去思考

1. 增加密鑰空間,提供攻擊者的攻擊成本:容易實(shí)現(xiàn)

2. 改變加密算法,間接地提高了密鑰空間:需要對(duì)原有舊的密碼進(jìn)行全量地升級(jí),改造成本大

admin/get_password.php

/* 以用戶的原密碼,與code的值匹配 */

$sql = 'SELECT password FROM ' .$ecs->table('admin_user'). " WHERE user_id = '$adminid'";

$password = $db->getOne($sql);

if (md5($adminid . $password) <> $code)

{

//此鏈接不合法

$link[0]['text'] = $_LANG['back'];

$link[0]['href'] = 'privilege.php?act=login';

sys_msg($_LANG['code_param_error'], 0, $link);

}

//更新管理員的密碼

/*

這里是pathc code的關(guān)鍵

代碼中增加了隨機(jī)數(shù)的鹽,這極大地增加了黑客爆破的密鑰空間,提供了攻擊成本

*/

$ec_salt=rand(1,9999);

$sql = "UPDATE " .$ecs->table('admin_user'). "SET password = '".md5(md5($new_password).$ec_salt)."',`ec_salt`='$ec_salt' ".

"WHERE user_id = '$adminid'";

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 建德市| 郁南县| 新营市| 溆浦县| 五峰| 赤峰市| 台山市| 临西县| 雷波县| 前郭尔| 喀喇沁旗| 长丰县| 远安县| 民丰县| 鹤庆县| 永济市| 武清区| 宁河县| 宜都市| 河津市| 定南县| 宣武区| 赤水市| 临清市| 巍山| 郓城县| 汝南县| 星座| 乡城县| 阜平县| 宁海县| 巫溪县| 白玉县| 湖南省| 黄浦区| 台北市| 即墨市| 富宁县| 涞水县| 崇礼县| 兰州市|