賽博地球杯線下賽WEB_RCE Write_up

這次參與賽博地球杯線下賽出題,看到巨佬們強還是強啊,先膜一下,然後獻上自己的出題思路,萌新出題,輕噴 !!!

第一步、登錄

查看網站發現網站無法登錄,並且根據robots.txt能發現hint.php和hack.php

這裏寫圖片描述

不過可以注意到cookie中存在isLogin=0,設置cookie,isLogin=1,發現成功登錄

這裏寫圖片描述

第二步、文件包含

成功登錄,發現一個管理頁面admin/admin.php?file=index&ext=php,推測存在文件包含,可以發現存在過濾,不過可以繞過,訪問

admin/admin.php?file=….//….//….//….//….//….//etc/passwd&ext=

可以成功包含文件

這裏寫圖片描述

不過嘗試hint.php會發現是文件包含,不能顯示源代碼,僞協議也無法使用

這裏寫圖片描述

第三步、審計nginx配置

不過可以讀取一些配置文件,比如讀取nginx配置文件

admin/admin.php?file=….//….//….//….//….//….//etc/nginx/sites-enabled/default&ext=

可以發現配置文件中存在問題

這裏寫圖片描述

存在一個location是/web-img,使用alias指向了/images/,不過location的後面沒有/,alias的後面有斜槓,存在隱患

訪問/web-img../,發現列出了根目錄

這裏寫圖片描述

由於這個location不解析php,

訪問/web-img../usr/share/nginx/html/hint.php獲得flag的重要信息

這裏寫圖片描述

hint.php中提示我們flag存在於FLAGFLAGFLAGFLAG.pcapng中,我們嘗試訪問/web-img../usr/share/nginx/html/FLAGFLAGFLAGFLAG.pcapng發現403 forbidden,無法獲取FLAGFLAGFLAGFLAG.pcapng。這裏我們有兩種方式獲取FLAGFLAGFLAGFLAG.pcapng。

一種是通過文件包含對FLAGFLAGFLAGFLAG.pcapng源碼數據包進行分析:

訪問:/admin/admin.php?file=….//FLAGFLAGFLAGFLAG.pcapng&ext=得到數據包源碼

這裏寫圖片描述

第二種是利用題目中給的hack.php的webshell進行連接,下載數據包進行查看。這裏主要說明第二種方式:

第四步、根據hack.php進行webshell連接RCE

最初robots.txt還提示了我們一個hack.php,我們根據上面數據包分析也可以發現hack.php就是利用weevely生成的webshell,

通過最前的方法,下載hack.php,查看hack.php,我們可以看到webshell加了混淆和替換,將這些混淆替換掉,就可以看到webshell的源碼了,

這裏寫圖片描述

這裏寫圖片描述

利用weevely連接webshell,但是我們發現源碼中並沒有給我們weevely連接的密碼,但是源碼中有兩個變量$kh="42f7"$kf="e9ac"

審計weevely源碼,我們會知道weevely生成的webshell進行連接時密碼的驗證方式是將我們輸入的密碼進行md5加密然後取md5加密後的字符串後8位,即就是我們源碼中的42f7和e9ac

這裏寫圖片描述

所以在我們不知道連接密碼的時候,我們可以直接修改weevely源碼,強行讓他的share_key等於我們的webshell的42f7e9ac然後不論我們輸入什麼密碼都可以直接連接webshell

這裏寫圖片描述

成功RCE

這裏寫圖片描述

第五步、數據包分析

成功連接shell,利用weevely的file_download命令下載FLAGFLAGFLAGFLAG.pcapng數據包。

查看數據包,跟蹤tcp流,我們可以看出這是weevely的數據包,題目提示,flag在數據包中,所以我們需要解密這個webshell。

這裏寫圖片描述

第六步、weevely源碼分析

從github中下載weevely3並分析weevely3的源碼,我們可以知道weevely執行命令操作的加密方式

這裏寫圖片描述

根據這個加密函數,編寫自己的解密方法,直接解密得到flag:

這裏寫圖片描述

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章