php代码审计篇二——ZbzCMS

有段时间没有更新了,这段时间一直在对一些项目重点保护,所以学习有些滞后,但是审代码一直是我比较感兴趣的事,这次也是选择用自己学到的方法结合网上一些已知的漏洞进行审计,希望我的文章也能给想做代审的小伙伴提供思路。

环境搭建

  • 环境部署好后,访问localhost/zbzcms.com



  • 发布后才有前台


XSS漏洞

  • echo全局搜索函数,优先找前台产生漏洞的地方



  • search.php里面无漏洞

  • cms/api/difangzhan.php里也无漏洞:$difang_json受到$url影响,$url也是写死的ip

  • 关注到一个post地方,传入$neirong

  • post['neirong']受到变量$neirong控制

  • 可以看到这段代码要求$run='liuyan',才能往下触发,核心代码解释:
if(count($_POST)>0){
        $neirong='';
        foreach($_POST as $k=>$v){
            if($neirong==''){$neirong=$k.':'.$v;}
            else{$neirong.="<br/>".$k.':'.$v;}
        }
    }

第一行:if(count($_POST)>0)来检查$_POST数组中是否有数据被提交。如果有数据被提交,代码会执行下面的逻辑。

第二行:定义了一个空字符串变量$neirong,用于存储生成的留言内容。

第三行:代码使用foreach循环遍历$_POST数组中的每个键值对。在循环中,$k表示当前键,$v表示当前值。

第四行:代码使用条件语句判断$neirong是否为空。如果为空,说明是第一个键值对,代码会将当前键和值拼接成一个字符串,并赋值给$neirong变量。

第五行:如果$neirong不为空,说明已经有之前的键值对存在,代码会在已有的字符串后面添加一个换行符和新的键值对。

总结:通过这个循环,代码会将$_POST数组中的所有键值对拼接成一个字符串,每个键值对之间用换行符分隔。最后,生成的留言内容存储在$neirong变量中。

  • 找到页面:http://127.0.0.1/zbzcms.com/cms/common/php/ajax.php?run=liuyan,post相关payload


  • 还是个存储型的,后台留言框被插入了

SQL注入

  • 全据搜索select语句,查看有没有sql语句,也是重点先看前台的注入。

  • 这里找到一处select的sql语句,并且id变量是可控的

  • 尝试sqlmap跑一下: python3 sqlmap -u "http://127.0.0.1/zbzcms.com/cms/common/php/ajax.php?run=ad&id=3" --dbs

任意文件写入

  • 同样的我们全局搜索一下容易出现任意文件写入漏洞的函数,比如file_put_contents

  • 但是这里漏洞就是在后台了,尝试构造payload:http://127.0.0.1/zbzcms.com/cms/cms/admin/run_ajax.php?run=wenjian_edit,post方式请求



  • 成功写入后台

  • 写入1.php文件中

  • 访问1.php,成功解析

任意文件删除

  • 这里可以自动审计一下

  • 可以看到这里使用了unlink函数,并且变量没有任何过滤

  • 构造payload验证一下,定位路由位置:cms/cms/include/up.php,创建test.txt

  • 尝试删除test.txt


  • test.txt被成功删除

后记

代码审计其实就是找危险函数的调用关系,看是否存在可控变量的调用链。纯白盒的方式大概就是这样,但是现实挖漏洞更多的也要结合黑盒与断点调试的方式。这次就先写到这里,后面我们再会。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值