Vtiger CRM 几处SQL注入漏洞分析,测试工程师可借鉴

qcloudcommunity · · 1994 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

> 本文由云+社区发表 ## 0x00 前言 干白盒审计有小半年了,大部分是业务上的代码,逻辑的复杂度和功能模块结构都比较简单,干久了收获也就一般,有机会接触一个成熟的产品(vtiger CRM)进行白盒审计,从审计的技术难度上来说,都比公司内的那些业务复杂得多,而真正要提高自己技术水平,更应该看的也是这些代码。 vtiger CRM是一个客户关系管理系统。 ## 0x01 分析整体结构 `https://www.vtiger.com/open-source-crm/download-open-source/`代码下载下来,本地搭建。使用phpstorm进行审计。 1. 主目录下的vtigerversion.php可以查看当前版本。 ![img](https://ask.qcloudimg.com/http-save/2359520/r6wti40kqr.jpeg?imageView2/2/w/1620) 1. 整体代码目录 ![img](https://ask.qcloudimg.com/http-save/2359520/d3u6a1gbh4.jpeg?imageView2/2/w/1620) 其中主要得功能实现就在modules目录当中,也是我们重点审计的地方。libraries目录是使用到的第三方的一些东西,includes目录是路由加载,封装系统函数的地方。 整个系统代码量确实很多,真要审计完估计没有十天半个月是不行的,看了一个礼拜,只发现几个问题。 ## 0x02 modules/Calender/actions/feed.php SQL注入分析 ![img](https://ask.qcloudimg.com/http-save/2359520/6atvirf2ki.jpeg?imageView2/2/w/1620) 一个成熟的产品,审计的难点就在于各种类,对象的封装和继承,A调用B,B调用C,C调用D...... Vtiger_BasicAjax_Action 这个对象,是modules下vtiger目录里的,而vtiger这个也是核心的module. 回到feed.php,直接定位有漏洞的代码,103行后。 ![img](https://ask.qcloudimg.com/http-save/2359520/bnirgzziu0.jpeg?imageView2/2/w/1620) 我图中标的,也正是注入点的位置。 $fieldName参数由逗号分割成数组,如果分成后的数组值为2则进入逻辑,然后参数进入SQL语句形成注入。虽然整个系统采用了PDO的查询方式,但是如果有SQL语句存在直接拼接的话,还是有注入的风险。 这里payload不能使用逗号,可以采用 (select user())a join的方法绕过。 ![img](https://ask.qcloudimg.com/http-save/2359520/b0l78bhd1n.jpeg?imageView2/2/w/1620) 往下走的话,SQL注入漏洞更是多不胜数。也没有再看的必要了。 ![img](https://ask.qcloudimg.com/http-save/2359520/zgrictzneb.jpeg?imageView2/2/w/1620) ## 0x03 /modules/Documents/models/ListView.php SQL注入 直接看漏洞代码 ![img](https://ask.qcloudimg.com/http-save/2359520/ws9hb4diom.jpeg?imageView2/2/w/1620) 可以看到sortorder参数又是直接拼接。此处是order by后的注入,只能用基于时间的盲注。 直接上SQLmap吧,但是sqlmap的payload会使用>,尖括号因为xss防御,已经被过滤所以需要使用绕过脚本。 `--tamper greatest` 绕过。 poc: ```js index.php?module=Documents&parent=&page=1&view=List&viewname=22&orderby=filename&sortorder=and/**/sleep(5)&app=MARKETING&search_params=[]&tag_params=[]&nolistcache=0&list_headers=[%22notes_title%22,%22filename%22,%22modifiedtime%22,%22assigned_user_id%22,%22filelocationtype%22,%22filestatus%22]&tag= ``` ![img](https://ask.qcloudimg.com/http-save/2359520/n5590drsqi.jpeg?imageView2/2/w/1620) ## 0x04 写在最后 由于时间原因,只看了前几个模块,还有好多地方没有看。 漏洞都很简单,真正花费时间的是走通逻辑,验证漏洞,不停地跳转查看函数调用,和各种类对象的继承。这也是白盒审计的头疼之处,要忍着性子看开发跳来跳去,没准哪个地方就跳错了。有点难受,还没找到getshell的地方。 **此文已由作者授权腾讯云+社区发布** ****

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1994 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传