兩臺kali
初級的功能
1. 及時通信
▲▲▲
設server的ip為192.168.0.104,在其上執行
nc –l –p port
意為綁定6666端口作為自己的通信端口
輸入命令後回車,等待client連接
設client的IP為192.168.0.105,輸入
nc serverip port
意為連接到server(IP為192.168.0.104的6666端口)
在server端和client端都搭建好了以後,就可以互相進行即時通信
此時在cliet上開始輸入信息,便可以看到server接收到了相應的信息
在server輸入,在client同樣可以看到
這便是使用netcat進行即時通信的用法
注意:在使用netcat進行即時通信的時候,要首先搭建server端然後搭建client端。否則會出現如圖所示情況
因為server的端口還沒有開放
2. 文件傳輸
▲▲▲
同樣設server為192.168.0.104,client為192.168.0.105
大部分時間中,我們都在試圖通過網絡或者其他工具傳輸文件。有很多種方法,比如FTP,SCP,SMB等等,但是當你只是需要臨時或者一次傳輸文件,真的值得浪費時間來安裝配置一個軟件到你的機器上嘛。假設,你想要傳一個文件file.txt 從server到client。
首先我們在server新建file.txt
在client端執行
意為將從本地端口8888收到的內容存到transfer.txt
接著在server端執行
以為將file.txt的內容傳到192.168.0.105的8888
此時client端回顯如下:
可以看到在client已經收到file.txt的內容,並保存在transfer.txt了
中級
3. 掃端口
▲▲▲
server:192.168.0.104
client:192.168.0.105
netcat可以用來掃描端口,為了驗證效果,我們首先在server上開啟apache服務,相當於就開發了80端口
接著在client上使用netcat掃描
可以看到掃描出了開放的80端口
4. 抓取banner
▲▲▲
在server上安裝vsftpd
開啟ftp服務
接下來來到client,連接相應端口
可以看到很輕易就抓到了banner
5.與web服務器交互
▲▲▲
server端現在已經可以作為web服務器使用
首先連接
然後運行http請求
即輸入 HEAD /HTTP/1.0回車
高級
6. shell
▲▲▲
attacker:192.168.0.104
victim:192.168.0.105
netcat反彈shell時分為正向shell和反向shell
6.1正向shell
在victim上執行:
在attacker上執行:
此時在attacker上輸入的命令,所回顯的內容其實都是在victim上執行的結果
而在victim端顯示如圖
6.2反向shell
6.2.1最普通的反向shell
在attacker上執行
在victim上執行
此時在attacker就拿到shell了
這是最普遍的一種反向shell方式,接下來在擴充下知識點~~敲黑板,劃重點啦~
當victim上沒有nc上我們怎麼反彈shell呢?下面介紹幾種方法。
第一步都一樣,都要在attacker上執行
不同的是接下來的步驟
6.2.2python
在victim上執行
此時在attacker上就收到shell了:
6.2.3ruby
在victim上執行
在attacker上拿到shell
6.2.4perl
在victim上執行
在attacker上收到shell
6.2.5php
在victim上執行
在attacker收到shell
7.web服務器
▲▲▲
server:192.168.0.104
client:192.168.0.105
在server上新建test.txt
然後輸入
開啟web服務
接著啟動
在victim上訪問
在server上可以看到如下回顯
但是這個命令開啟的服務訪問一次後就關閉了,再次訪問會如圖所示:
所以我們可以改進,將其寫入腳本提供持久化的web服務
腳本內容如下:
腳本就是講關鍵的那行代碼加入了一直為真的while循環中:
運行腳本
此時可以持久訪問了
刷新後依舊可以訪問
訪問一次,在server上就會重複回顯如下內容
拓展:使用python自制netcat--《python黑帽子》
代碼如下:
在192.168.0.105上運行
查看幫助
建立監聽
在192.168.0.104上使用nc連接,可以看到成功拿到shell
此時在105機器上回顯如下
最後附上netcat的參數中文翻譯:
-g:設置路由器躍程通信網關,最多設置8個;
-d 無命令行界面,使用後臺模式
-c 程序重定向,比如-c bash,nc傳輸過來的數據就會指向bash去執行
-e 這個也是程序重定向,用在windows下
-G:設置來源路由指向器,其數值為4的倍數;
-h:在線幫助; -i:設置時間間隔,以便傳送信息及掃描通信端口;
-l:使用監聽模式,監控傳入的資料;
-L:也是用作監聽,不過監聽端不終止nc的話,連接端終止後,監聽端依然保持監聽狀態。
-n:直接使用ip地址,而不通過域名服務器;
-o:指定文件名稱,把往來傳輸的數據以16進制字碼傾倒成該文件保存;
-p:設置本地主機使用的通信端口;
-r:指定源端口和目的端口都進行隨機的選擇;
-s:設置本地主機送出數據包的IP地址;
-u:使用UDP傳輸協議;
-v:顯示指令執行過程;
-w:設置等待連線的時間,一般掃描時加上;
-z:使用0輸入/輸出模式,只在掃描通信端口時使用。
參考:
1. https://www.cnblogs.com/r00tgrok/p/reverse_shell_cheatsheet.html
2. https://blog.csdn.net/angie_q/article/details/78768227
3. https://bitrot.sh/cheatsheet/19-12-2017-ncat/
4. http://www.cnblogs.com/hyq20135317/p/5491298.html
5. http://www.binarytides.com/netcat-tutorial-for-beginners/
閱讀更多 合天網安實驗室 的文章