Dolibarr ERP CRM < v7.0.3代码注入漏洞分析
0x00 漏洞影响分析
关于Dolibarr这次产生的漏洞,版本比7.0.3老的系统都会受影响。
攻击者可利用此漏洞在网站服务器插入木马后门,从而控制服务器。会对用户重要数据和内网安全造成重大威胁。
建议及时修复,修复方案下面已给出。
exploit-db地址:
https://www.exploit-db.com/exploits/44964/
0x01 Dolibarr简介
Dolibarr 是一款开源的企业ERP和CRM管理软件,拥有一个活跃的用户社区,商业模式类似苹果iTunes应用商店。在FOFA上搜了一下大概有2.7k+用户。
0x02代码注入漏洞分析
昨天看到exploit-db上发的,然后想在FOFA上提交个POC,发现直接用exploit-db的POC复线不了,来胡乱分析一下。先看下exploit-db上的介绍,然后点击‘下一步’来创建配置文件‘conf.php’,然后向/install/step1提交POST请求,再去访问check.php。大概意思是,把POST的db_name参数写入到配置文件'conf.php',然后'check.php'应该是包含了'conf.php',触发漏洞。
这里我试了下跳过安装步骤,直接访问step4.php,发现好多老版本是可以直接进行第4步创建后台用户密码的,官方只是在后台提醒了下
吐槽下, 为什么不在安装后自动加锁。还有国外90%Dolibarr都把install删除了,国内使用的Dolibarr70%是没有删除install的。安全意识差异可见一斑。
直接进入到POST提交数据,刚代码,step1.php里有一个$error变量,初始值为0,这里会验证$error的值,不能大于0
第一个条件如下图代码,提交的参数除了数据库密码外不能为空,否则error会大于0,报错,这个很好满足
第二个条件,必须能包含$main_dir."/core/db/".$db_type.'.class.php',这里$main_dir用户可控,$db_type用户也可控,$main_dir在exploit-db是文件根路径,但在实际中很难知道根目录,但相对路径是不变的,所以这里我试了一下,可以用"../"来跳目录,实现包含。$db_type这个是数据库类型,没啥要改的。
第三个条件,看下面代码,可以选择创建数据库或选择已有数据库,条件是必须可以根据用户提交的数据库地址,端口,用户,密码等信息连到数据库,否则$error++,这个条件需要一个公网的MySQL数据库。
这里可以看到把db_name转义掉单引号后写入conf.php中了,漏洞出现在这部分,只是转义单引号,如果提交" \' "的话,就会插入" \' ",还是出现闭合情况,导致代码注入。
伪造下POST请求
然后查看conf.php,发现写入了的代码
查看check.php,这里$conffile是conf.php,可以看到包含了conf.php文件
到这里,复现成功
0x03 后记
建议:
- 单个字符转义可以绕过,可以用addslashes对用户提交数据进行处理。
- 可以部署waf等防护设备,对一些敏感数据进行过滤。
目前官方已修复该漏洞,可以去gayhub下载最新版。
https://github.com/Dolibarr/dolibarr
求轻点喷!
最新评论