別人說最危險的地方最安全,我說最安全的地方最危險。。。
相信你們也沒有想到這個最常見,常常會在各種教程出現的地方會存在sql注射。。。
需 gpc off
首先,我們看登陸的地方。。最常見了吧。。。
預設安裝情況下,會使有 v9自帶的使用者中心。
$synloginstr = ''; //同步登陸js**
if(pc_base::load_config('system', 'phpsso'))
public function auth_data($data) [$k2]=".$this->_ps_stripslashes($v2);
$sep2 = '&';
}$s .= $sep.$s2;
} else
$sep = '&';
} $auth_s = 'v='.$this->ps_vsersion.'&appid='.appid.'&data='.urlencode($this->sys_auth($s));
return $auth_s; }
_ps_stripslashes
private function _ps_stripslashes($string) else
}還原了 gpc,傳引數給 api。
我們再看看 api 方的處理方式
phpsso_server\phpcms\modules\phpsso\classes\phpsso.class.php
if(isset($_post['data']))
} else
parse_str 函式預設是根據 gpc情況過濾。
再到phpsso_server\phpcms\modules\phpsso\index.php
public function login() else
phpsso_server\phpcms\libs\classes\model.class.php
final public function get_one($where = '', $data = '*', $order = '', $group = '')
/*** 將陣列轉換為sql語句
* @param array $where 要生成的陣列
* @param string $font 連線串。
*/final public function sqls($where, $font = ' and ')
return $sql;
} else
}可以看到全程沒有對字串進行過濾。。。
因此,在gpc為 off 時,存在sql注入。
可能沒說清楚問題在那裡
兩個:1、auth_data 引數拼接
2、api中沒有對資料進行過濾
可以做什麼?盲注,任意使用者登陸。。。其實還有很多利用的地方。。
測試如下:
修復方案:
過濾
PHPCMS V9 注射利用
在用bugscan 白帽子神器 檢測朋友 的時候碰到這個authkey。順便把利用 給大家分享下。本指令碼僅供白帽子安全測試使用,如有用於非法途徑,與作者無關 小白第一次寫東西,大牛勿噴 獲取檢測網域名稱 domain url domain url post url echo 判斷網域名稱是否為空,...
PHPCMS V9 加密規則
phpcms v9 加密規則 加密方式 md5 md5 password encrypt 第一步 對輸入的密碼32位小寫 md5 對輸入的密碼進行trim過濾 第三步 第二步結果密碼32位小寫 md5 例子 密碼 123456 encrypt vcmkn3 如下 a md5 123456 echo ...
PHPCMS V9 加密規則
phpcms v9 加密規則 加密方式 md5 md5 password encrypt 第一步 對輸入的密碼32位小寫 md5 對輸入的密碼進行trim過濾 第三步 第二步結果密碼32位小寫 md5 例子 密碼 123456 encrypt vcmkn3 如下 a md5 123456 echo ...