Xcheck之PHP代码安全检查

枫少@KillBoy
枫少@KillBoy
管理员
219
文章
0
粉丝
资源分享746,500字数 919阅读3分3秒阅读模式
AI智能摘要
当权威代码审计工具RIPS都漏掉致命漏洞,你的PHP安全防线是否形同虚设?本文深度剖析国产新秀Xcheck如何逆袭:它不仅能精准捕捉RIPS错过的SSRF、文件上传等高危漏洞(附wpdiscuz实战案例),更以自定义规则和框架适配优势,破解ThinkPHP、Laravel等主流框架的审计困局。告别误报率高、规则僵化的传统方案,150+漏洞类型全覆盖的实战指南,助你构建真正无死角的代码安全护城河——安全工程师必备的审计利器,就藏在这场新老工具的硬核对决中。
— AI 生成的文章内容摘要

1616378737_6057fb7114422e5018868.png!small?1616378737392

1 PHP安全检查引擎

Xcheck的php引擎支持原生php的安全检查,也支持对国内主流框架编写的web应用进行安全检查,覆盖包括Thinkphp,Laravel,CodeIgniter,Yii,Yaf等web框架,对尚未覆盖的框架如果有需求,Xcheck也可迅速适配。覆盖漏洞类别包括但不限于以下:

  • 命令注入
  • SQL注入
  • XSS
  • XXE
  • URL跳转
  • 路径穿越
  • 反序列化
  • 代码执行
  • 变量覆盖
  • ...

2 简单聊一下RIPS

Xcheck之PHP代码安全检查-图片1

说到PHP代码工具化安全审计,就不得不提RIPS。RIPS是国外一家专门做代码安全检查的科技公司,凭借PHP代码安全检查出名。这里说的并不是RIPS的开源版本,因为RIPS的开源版本是不支持面向对象的,上个开源版本0.55已经是2017年的事情,所以说的是RIPS的商业化版本,了解到前段时间RIPS也已经被SonarSource收购。

1616378807_6057fbb7ccf409a45bf3e.png!small?1616378808144

我们通过一些渠道接触使用到了RIPS的商用版本,从目前的一些检测结果来看,不得不承认,RIPS相比一些其他我们已经接触使用过的商业化代码安全审计产品,如某marx,RIPS在误报率、速度上都是有一定优势。但尽管RIPS在PHP代码安全审计这一领域研究可能超过10年(10年推出开源0.32版本),还是会在一些地方有疏漏,盲目地迷信权威并不可取

举个简单的例子,这是pikachu靶场里的一段ssrf漏洞代码,RIPS并未检测出这个简单漏洞。

<?php
$URL = $_GET[1];
$CH = curl_init($URL);
curl_setopt($CH, CURLOPT_HEADER, FALSE);
curl_setopt($CH, CURLOPT_SSL_VERIFYPEER, FALSE);
$RES = curl_exec($CH);
curl_close($CH) ;
echo $RES;

当然,这个例子只是为了说明即使是大家公认的权威,也可能存在着不足

至于Xcheck相较于RIPS,我们已知的是Xcheck速度和自定义规则具备一定优势,RIPS并不支持自定义规则,也就不支持自研框架,例如thinkphp项目对RIPS来说是难以理解的。

3 Wpdiscuz任意文件上传漏洞分析与检测

Xcheck之PHP代码安全检查-图片2

wpdiscuz是一个wordpress使用较广泛的插件,8月份时爆出一个任意文件上传漏洞。使用RIPS扫描带有漏洞的源码,但并没有发现问题。这里将使用7.0.3带漏洞的版本源码进行分析。

先看下xcheck的检测结果。

Xcheck之PHP代码安全检查-图片3

  1. 污染传入, combineArray函数取出$_FILES当中的数据,传递给$files1616378918_6057fc26982285c5c0eee.png!small?1616378919836
  2. $files中取出数据,并获取了后缀。但是这里 $this->getMimeType并没有对后缀进行判断,而是只是获取了memetype. 下面有对memetype进行安全校验。getMimeType函数的代码如下。1616378940_6057fc3ca9b55e15af683.png!small?1616378941023
private function getMimeType($file, $extension) {
$mimeType = "";
if (function_exists("mime_content_type")) {
$mimeType = mime_content_type($file["tmp_name"]);
} elseif (function_exists("finfo_open") && function_exists("finfo_file")) {
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mimeType = finfo_file($finfo, $file["tmp_name"]);
} elseif ($extension) {
$matches = wp_check_filetype($file["name"], $this->options->content["wmuMimeTypes"]);
$mimeType = empty($matches["type"]) ? "" : $matches["type"];
}
return $mimeType;
}
  1. 接着传入uploadSingleFile函数,使用pathinfo获取到上传文件的后缀就直接拼接上传了。总的来看,只有对mimetype进行校验,所以直接上传“图片马”绕过mimetype校验即可。

Xcheck之PHP代码安全检查-图片4

4 最后

Xcheck作为国内新生的代码安全审计工具,面对这些早已名声在外的前辈,会时刻保持谦逊,不断进取向前。后续我们Xcheck团队也会持续披露Xcheck发现的一些有价值的漏洞或者分享代码安全审计相关技术。

专注于代码安全 | 公众号:腾讯代码安全检查Xcheck

https://www.freebuf.com/sectool/266960.html

 
枫少@KillBoy
评论  74  访客  73  作者  1
    • 小日光
      小日光 0

      这个工具能支持Yii3吗?现在项目正在用这个框架。

        • 幽灵塔
          幽灵塔 1

          @ 小日光 Yii3应该能覆盖吧,看介绍主流框架都支持。

        • NightOwl
          NightOwl 0

          Xcheck的自定义规则功能还挺实用的,我们自研框架正好需要这种。

            • TheDuke
              TheDuke 1

              @ NightOwl 自定义规则具体怎么写?有没有文档参考下。

            • 红尘侠
              红尘侠 0

              之前用过RIPS开源版,确实有点老了,商用版不知道价格怎么样?

                • 文件夹
                  文件夹 0

                  @ 红尘侠 商用版价格不透明是通病,估计得找销售聊吧。

                • 阴司鬼差
                  阴司鬼差 0

                  感觉检测速度是个关键指标,实际扫大项目时等太久真的难受。

                    • 宇宙褶皱
                      宇宙褶皱 0

                      @ 阴司鬼差 速度优势有多大?能对比下扫同一个项目的时间吗?

                    • InfernoSoul
                      InfernoSoul 1

                      图片里的例子挺直观的,ssrf这种常见的都没扫出来确实有点那啥。

                      • 生物电子工程师
                        生物电子工程师 0

                        wpdiscuz这个漏洞分析得挺清楚,mimetype绕过算是经典手法了。

                        • SupernovaEmber
                          SupernovaEmber 1

                          工具对比挺客观的,没一味吹自己,这点不错。

                            • SunnySprinkle
                              SunnySprinkle 1

                              @ SupernovaEmber wpdiscuz那个漏洞分析挺详细,mimetype绕过确实是老生常谈的问题了。

                            • 鹦鹉彩彩
                              鹦鹉彩彩 0

                              PHP安全工具这块感觉选择不多啊,多一个竞争者总是好的。

                              • 石泉听雨
                                石泉听雨 0

                                希望能多分享点实际案例,光讲原理有点干。

                                • 不将就
                                  不将就 1

                                  期待后续更新,关注公众号了。

                                  • 话痨超人
                                    话痨超人 1

                                    我们公司之前用RIPS扫过项目,误报确实有点多,Xcheck误报率怎么样?

                                      • 霜火旅人
                                        霜火旅人 0

                                        @ 话痨超人 RIPS误报多到崩溃,希望Xcheck真能改善这块。

                                        • 迷雾之心
                                          迷雾之心 0

                                          @ 话痨超人 商业版价格要是太高小团队根本用不起,求个亲民点的方案。

                                        • 文艺小清新
                                          文艺小清新 0

                                          这种工具就怕规则库更新慢,漏掉新漏洞。

                                          • 社恐小丸子
                                            社恐小丸子 0

                                            手动审计还是少不了,工具只是辅助。

                                            • 夜魇之子
                                              夜魇之子 0

                                              wpdiscuz那个例子挺典型,很多插件都栽在文件上传上。

                                                • 烬寒
                                                  烬寒 0

                                                  @ 夜魇之子 文件上传漏洞真是一代版本一代神,防不胜防。

                                                • 夜之寂
                                                  夜之寂 0

                                                  PHP安全这块感觉越来越卷了,好事儿。

                                                    • 流星幻影
                                                      流星幻影 0

                                                      @ 夜之寂 手动审计还是不能完全替代,工具辅助能提效就行。

                                                    • 行路者日记
                                                      行路者日记 0

                                                      有没有试用版可以下载试试?

                                                      • 尸骨成书
                                                        尸骨成书 0

                                                        商业版一般怎么收费的,按项目还是按年?

                                                        • HappyDoodle
                                                          HappyDoodle 0

                                                          这个工具能支持自研框架挺关键的,我们这小众框架太难了。

                                                          • 爱蹦极的馒头
                                                            爱蹦极的馒头 0

                                                            感觉误报率低才是王道,不然每天都在看垃圾告警。

                                                            • 甩锅侠
                                                              甩锅侠 0

                                                              那个ssrf例子确实离谱,这种都能漏?🤔

                                                              • 孤月听风
                                                                孤月听风 0

                                                                我们之前也踩过mimetype校验的坑,传个png马直接打穿。

                                                                  • 懒懒羊
                                                                    懒懒羊 0

                                                                    @ 孤月听风 文件上传只校验mimetype确实不行,后缀白名单必须上。

                                                                  • 琴瑟远
                                                                    琴瑟远 0

                                                                    有没有可能出个docker镜像版?部署起来方便点。

                                                                    • 勇敢Ace
                                                                      勇敢Ace 0

                                                                      PHP安全工具确实不多,有个国产的挺好的。

                                                                      • 逐风旅人
                                                                        逐风旅人 1

                                                                        有点好奇Xcheck怎么处理动态调用的,比如call_user_func?

                                                                        • 旅途漫谈
                                                                          旅途漫谈 0

                                                                          感觉还行,我们这小公司正愁没趁手的工具呢。

                                                                          • MeteorGleam
                                                                            MeteorGleam 0

                                                                            支持自研框架是真的香,之前用别的工具老得手动补规则。

                                                                            • 流浪者云影
                                                                              流浪者云影 1

                                                                              这个价格问得好,我也想知道具体怎么收费。

                                                                              • 冬至阳生
                                                                                冬至阳生 0

                                                                                误报率低确实关键,不然天天处理假警报太累了。

                                                                                • 夜雨打芭蕉
                                                                                  夜雨打芭蕉 0

                                                                                  能不能出个社区免费版?个人开发者也想试试。

                                                                                    • 鬼语录
                                                                                      鬼语录 1

                                                                                      @ 夜雨打芭蕉 有没有详细的规则编写文档?想自己写点规则试试。

                                                                                    • 农夫吴
                                                                                      农夫吴 1

                                                                                      动态调用这块挺难搞的,call_user_func这类真容易漏。

                                                                                      • CelestialFlux
                                                                                        CelestialFlux 0

                                                                                        PHP安全工具是该卷起来,竞争多了产品才能进步。

                                                                                        • 搬砖工
                                                                                          搬砖工 0

                                                                                          mimetype校验翻车不是一次两次了,还是得加后缀白名单。

                                                                                            • 学霸君
                                                                                              学霸君 0

                                                                                              @ 搬砖工 之前搞文件上传也是栽在这,后来加了双校验才稳住。

                                                                                            • 星海旅人
                                                                                              星海旅人 1

                                                                                              公众号关注了,希望多放点实战案例hhh。

                                                                                              • 堕落星神
                                                                                                堕落星神 0

                                                                                                我们这有个老thinkphp项目,不知道Xcheck能不能吃得动?

                                                                                                • 冰霜龙裔
                                                                                                  冰霜龙裔 1

                                                                                                  Xcheck支持自研框架这个点对我们太重要了,正好在搞内部框架。

                                                                                                  • 星光守望
                                                                                                    星光守望 0

                                                                                                    RIPS被收购了啊,之前还看过他们官网。

                                                                                                    • 温柔羊小暖
                                                                                                      温柔羊小暖 1

                                                                                                      速度优势具体体现在哪?扫一个中型项目大概要多久?

                                                                                                      • 神兽
                                                                                                        神兽 0

                                                                                                        这个例子举得挺好,工具再牛也有盲区。

                                                                                                        • 夜半低语
                                                                                                          夜半低语 0

                                                                                                          我们项目用的Yaf,之前找工具适配挺麻烦的。

                                                                                                          • 无垠
                                                                                                            无垠 0

                                                                                                            误报率低是刚需,不然天天验证告警太浪费时间了。

                                                                                                            • VeraVictory
                                                                                                              VeraVictory 1

                                                                                                              期待多出点实战案例,光看功能介绍有点虚。

                                                                                                              • 甜甜小糯米
                                                                                                                甜甜小糯米 0

                                                                                                                Xcheck扫我们那套老Yaf项目能行不?

                                                                                                                • 幻心旅
                                                                                                                  幻心旅 0

                                                                                                                  误报率低的话真可以试试,现在被假警报烦死了。

                                                                                                                  • 火星来的
                                                                                                                    火星来的 0

                                                                                                                    那个ssrf例子太典型了,curl没校验url直接传参肯定出事啊。

                                                                                                                    • 琉璃珠
                                                                                                                      琉璃珠 0

                                                                                                                      mimetype绕过这招都用烂了,插件开发者咋还不长记性🤔

                                                                                                                      • 宇宙信鸽
                                                                                                                        宇宙信鸽 1

                                                                                                                        自定义规则对我们这种搞内部框架的简直是救命稻草。

                                                                                                                        • 断剑游民
                                                                                                                          断剑游民 0

                                                                                                                          有没有人试过在Laravel9上跑Xcheck?兼容性咋样?

                                                                                                                          • 喵呜
                                                                                                                            喵呜 0

                                                                                                                            RIPS连pikachu都扫不出漏洞,有点拉胯了啊。

                                                                                                                            • 未完成的诗
                                                                                                                              未完成的诗 0

                                                                                                                              这个工具对thinkphp的支持程度如何?

                                                                                                                              • 湮灭之翼
                                                                                                                                湮灭之翼 0

                                                                                                                                误报率确实关键,现在用的工具假警报太多了

                                                                                                                                • 光的絮语
                                                                                                                                  光的絮语 0

                                                                                                                                  之前也遇到过mimetype绕过的问题,太坑了

                                                                                                                                  • 茶子
                                                                                                                                    茶子 1

                                                                                                                                    有没有详细的性能对比数据?

                                                                                                                                    • 丁香紫
                                                                                                                                      丁香紫 1

                                                                                                                                      自定义规则功能对我们这种自研框架太友好了👍

                                                                                                                                      • 一剑倾城
                                                                                                                                        一剑倾城 0

                                                                                                                                        速度优势具体能快多少?扫个中型项目要多久啊

                                                                                                                                        • 社恐加载中
                                                                                                                                          社恐加载中 0

                                                                                                                                          RIPS连这么基础的ssrf都扫不出来确实有点失望

                                                                                                                                          • 蜂鸟快递员
                                                                                                                                            蜂鸟快递员 1

                                                                                                                                            能自研框架这点挺实用的

                                                                                                                                              • 枫少@KillBoy
                                                                                                                                                枫少@KillBoy

                                                                                                                                                @ 蜂鸟快递员 自研框架的支持对很多项目来说蛮关键的

                                                                                                                                              • 柚子晴
                                                                                                                                                柚子晴 1

                                                                                                                                                wpdiscuz那个案例讲得挺清楚的

                                                                                                                                                  • 梦之呓语
                                                                                                                                                    梦之呓语 1

                                                                                                                                                    @ 柚子晴 讲得挺清楚的,一看就懂

                                                                                                                                                  • Raven_渡鸦
                                                                                                                                                    Raven_渡鸦 1

                                                                                                                                                    速度这块有数据对比吗?

                                                                                                                                                    • 召唤师
                                                                                                                                                      召唤师 1

                                                                                                                                                      对thinkphp的支持还挺关键的

                                                                                                                                                      • 星愿漂流
                                                                                                                                                        星愿漂流 1

                                                                                                                                                        期待后续的漏洞披露

                                                                                                                                                      匿名

                                                                                                                                                      发表评论

                                                                                                                                                      匿名网友

                                                                                                                                                      拖动滑块以完成验证