CTF—攻防練習之ssh私鑰泄露


攻防練習1 ssh私鑰泄露


靶場鏡像:鏈接: https://pan.baidu.com/s/1xfKILyIzELi_ZgUw4aXT7w 提取碼: 59g0

首先安裝打開靶場機

 

沒辦法登錄,也沒法獲取ip地址,怎么辦呢?

打開kali

進入控制台
使用netdiscover命令 netdiscover -r ip/子網掩碼 命令來探測靶機


netdiscover -r 192.168.32.152/24

 

 

 掃描開放的端口

 我們可以看到靶場開放的端口和對應的服務,此靶場機器上開啟了ssh服務和兩個http服務

接下來我們分析特殊端口,尤其對開放http服務的大端口(本靶機上31337端口開放了http服務)

 

怎么探測http端口信息?我們可以使用瀏覽器來瀏覽http服務的信息

 

探到5個隱藏文件

 


訪問sshrobots的目錄

 


taxes下發現flag1

 


再看ssh目錄:

 

 

發現rsa的私鑰和公鑰信息

id_rsa是私鑰和authorized_keys  認證關鍵字

我們發現在存在一個放私鑰要key的目錄可用下載

 

下載下來(公鑰不用下載)
這里就是泄露的私鑰

 

那么我們就去嘗試與靶機建立ssh連接
id_rsa 賦予權限 chmod 600 id_rsa

 

key文件中我們能找到主機名

 

建立ssh連接:

ssh -i id_rsa simon@192.168.32.154

 

需要密碼,那么我們可用通過破解私鑰得到密碼

ssh2john id_rsa >rsacrack

 

破解出來密碼為starwars

 

連接成功!

 

進來看一看,有一個flag文件但,需要權限,我們也沒有root權限

 

那么我們先查一下具有root權限的文件:
find / -perm -4000 2>/dev/null

 


好多東西。。

Root下也有給read_message文件打開看看

 


發現flag2一枚

int main(int argc, char *argv[]) {

    char program[] = "/usr/local/sbin/message";

    char buf[20];

    char authorized[] = "Simon";

 

    printf("What is your name?\n");

    gets(buf);

 

    // Only compare first five chars to save precious cycles:

    if (!strncmp(authorized, buf, 5)) {

        printf("Hello %s! Here is your message:\n\n", buf);

        // This is safe as the user can't mess with the binary location:

        execve(program, NULL, NULL);

    } else {

        printf("Sorry %s, you're not %s! The Internet Police have been informed of this violation.\n", buf, authorized);

        exit(EXIT_FAILURE);

    }

}

 

審計這段代碼 發現

我們要執行readmessage

然后驗證數組前5個字符,限定字符數為最多20個 ,前5個為Simon即可。

先打開

 

 

我們試着輸20多個字符使其溢出

輸入超過他緩存字符長度的字符 超出的部分為root權限的目錄路徑

獲得root權限,發現flag

 


免責聲明!

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



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