攻防練習1 ssh私鑰泄露數組
靶場鏡像:連接: https://pan.baidu.com/s/1xfKILyIzELi_ZgUw4aXT7w 提取碼: 59g0瀏覽器
首先安裝打開靶場機緩存
沒辦法登陸,也無法獲取ip地址,怎麼辦呢?ssh
打開kalithis
進入控制檯
使用netdiscover命令 netdiscover -r ip/子網掩碼 命令來探測靶機spa
netdiscover -r 192.168.32.152/243d
掃描開放的端口orm
咱們能夠看到靶場開放的端口和對應的服務,此靶場機器上開啓了ssh服務和兩個http服務,blog
接下來咱們分析特殊端口,尤爲對開放http服務的大端口(本靶機上31337端口開放了http服務)ip
怎麼探測http端口信息?咱們能夠使用瀏覽器來瀏覽http服務的信息
探到5個隱藏文件
訪問ssh和robots的目錄
在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