0x00前言

本篇文章作者YanXia,本文属i春秋原创奖励计划,未经许可禁止转载。地址https://bbs.ichunqiu.com/thread-63302-1-1.html
去年的时候,想给学弟刷一点CNVD证书,遂去审计了些漏洞。今天与大家分享其中一个例子。

本文所采用的方法是黑盒+白盒审计来挖掘出漏洞。至于源码是怎么来的,方法有很多,本文不进行阐述。

0x01正文

首先,我先来到了一个软件升级的功能
43340-9j3t6ux4gae.png

正常来说,如果我们遇到了这种功能点一般会考虑到这里可能存在文件上传漏洞,所以我们来尝试上传一下
23744-x4it2nfp75.png

83439-g4ojy2rid6o.png

欧,连jpg文件这里看上去都上传失败了。如果正常我们黑盒测试的话,可能就认为这里可能是白名单的文件上传。只能上传特定的配置文件。但是没关系,我们去定位下他的源码
18513-7hw1dr2ve82.png

if(isset($_POST['mode'])) $mode=$_POST['mode'];
if($mode=="set")
{
    $type=$_POST['ck'];
    if($type == "radhttp") //http

这里先通过post传参mode来确定上传的模式

{
    set_time_limit(0); //表示页面将持续运行
    $http_os_dir = "/home/"; //设定了文件上传到的路径
    chdir($http_os_dir); // //改变当前的目录到$http_os_dir
    exec("rm -rf osVersion*"); 
    $upload_file = $_FILES['file_upload']['tmp_name'];  
    $upload_file_name = $_FILES['file_upload']['name']; 
    if(!copy($upload_file,$http_os_dir.$upload_file_name))//将$upload_file的文件复制到/home/底下
    {
        add_optlog($sess_username,"osupload",GetIp(),"$LANG_HTTPUPOS_FAILD");
        alert("$LANG_UPOS_FAILD","updateos.php");
    }

82906-os0ns6xf0vo.png

所以说根据上面的逻辑来说,这里没有对上传的文件名进行如何校验。而是直接将文件利用copy函数复制到/home底下。
那么,我们上传后我们去访问一下文件试试。
80489-qajmah2qmo9.png

91117-mqk98g4xur.png

可以发现,虽然提示的时候会提示失败,其实这里还是成功上传了的。
所以说,代码审计的好处在这里就可以体现出来了。如果我们直接黑盒的话,这个地方就挖不到了。
最后附上波学弟的cnvd
87147-7olb5tq8ozr.png

43542-x7spi3d2qmc.png

0x03 文末

挖CNVD证书其实还是挺容易的。先挑好一个5000w注册资金的厂商,然后想办法弄到他们产品的源码去审计就好了~~~
有机会的话,欢迎各位师傅们来我们学校~

已有 2 条评论

  1. 不是上传到了服务器的/home/下了吗,为啥web能访问到呢,还是说/home/是网站根目录下的

    1. @1

      在网站路径底下哈。文章里有提到访问路径

发表评论