Discuz!X3.x全版本后台UC漏洞SQL注入写文件[截至X3.4 R20191201]
1、简述
报错注入:
写文件:
4、漏洞分析
Discuz! X系列全版本 截止到 Discuz! X3.4 R20191201 UTF-8
二次注入
利用条件有限,还是挺鸡肋的。
2、复现环境同上
3、漏洞复现报错注入:
写文件:
4、漏洞分析
漏洞原因:经过addslashes存入文件中,从文件中取出字符,转义符号丢失,造成二次注入
由前几个的分析已经明白了dz的路由形式,此处的路由解析如下:?action=xxx => ../admincp_xxx.php
跟进source/admincp/admincp_setting.php,2566行,接收参数修改UC_APPID值。
- $configfile = str_replace("define('UC_APPID', '".addslashes(UC_APPID)."')", "define('UC_APPID', '".$settingnew['uc']['appid']."')", $configfile);
- $fp = fopen('./config/config_ucenter.php', 'w');
- if(!($fp = @fopen('./config/config_ucenter.php', 'w'))) {
- cpmsg('uc_config_write_error', '', 'error');
- }
- @fwrite($fp, trim($configfile));
- @fclose($fp);
成功写入恶意UC_APPID后,执行更新读取新的配置信息,3415行:
- if($updatecache) {
- updatecache('setting');
最后在uc_client/model/base.php的note_exists方法中触发注入
- function note_exists() {
- $noteexists = $this->db->result_first("SELECT value FROM ".UC_DBTABLEPRE."vars WHERE name='noteexists".UC_APPID."'");
- if(empty($noteexists)) {
- return FALSE;
- } else {
- return TRUE;
- }
- }