Translated ['network-services-pentesting/pentesting-ftp/README.md'] to c

This commit is contained in:
Translator 2023-11-05 15:05:07 +00:00
parent 81572a4d9e
commit 8af2c08ced

View file

@ -4,11 +4,11 @@
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 YouTube 🎥</strong></a></summary>
* 你在一家**网络安全公司**工作吗想要在HackTricks中**宣传你的公司**吗?或者你想要**获取PEASS的最新版本或下载HackTricks的PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 你在一家**网络安全公司**工作吗想要在HackTricks中看到你的**公司广告**吗?或者你想要**获取PEASS的最新版本或下载HackTricks的PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品——[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或者**关注**我在**推特**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **通过向[hacktricks仓库](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud仓库](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**。
* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**。
</details>
@ -32,11 +32,11 @@ PORT STATE SERVICE
```
### 主动连接和被动连接
在**主动FTP**中FTP **客户端**首先从其端口N向FTP服务器的命令端口端口21**发起**控制**连接**。然后,**客户端****监听**端口**N+1**并将端口N+1发送给FTP服务器。FTP **服务器**然后从其端口M**向FTP客户端的端口N+1**发起数据**连接**。
在**主动FTP**中FTP **客户端**首先从其端口N向FTP服务器的命令端口端口21**发起**控制**连接**。然后,**客户端****监听**端口**N+1**并将端口N+1发送给FTP服务器。FTP **服务器**然后从其端口M向FTP客户端的端口N+1**发起**数据**连接**。
但是如果FTP客户端设置了控制来自外部的传入数据连接的防火墙则主动FTP可能会有问题。因此被动FTP是一个可行的解决方案。
在**被动FTP**中客户端从其端口N向FTP服务器的端口21**发起**控制**连接**。之后,客户端发出**passv命令**。服务器然后向客户端发送其一个端口号M。然后**客户端**从其端口P**向FTP服务器的端口M**发起数据**连接**。
在**被动FTP**中客户端从其端口N向FTP服务器的端口21**发起**控制**连接**。之后,客户端发出**passv命令**。服务器然后向客户端发送其一个端口号M。然后**客户端**从其端口P向FTP服务器的端口M**发起**数据**连接**。
来源:[https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/](https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/)
@ -162,6 +162,10 @@ ftp://anonymous:anonymous@10.10.10.98
wget -m ftp://anonymous:anonymous@10.10.10.98 #Donwload all
wget -m --no-passive ftp://anonymous:anonymous@10.10.10.98 #Download all
```
如果您的用户名/密码包含特殊字符,可以使用[以下命令](https://stackoverflow.com/a/113900/13647948)
```bash
wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
```
## 一些FTP命令
* **`USER username`**
@ -171,41 +175,41 @@ wget -m --no-passive ftp://anonymous:anonymous@10.10.10.98 #Download all
* **`EPRT |2|127.0.0.1|80|`** 这将指示FTP服务器在IP 127.0.0.1的80端口建立TCP连接_由"2"表示_。此命令**支持IPv6**。
* **`LIST`** 这将发送当前文件夹中的文件列表
* **`LIST -R`** 递归列出(如果服务器允许)
* **`APPE /path/something.txt`** 这将指示FTP将从**被动**连接或**PORT/EPRT**连接接收的数据存储到文件中。如果文件名存在,它将追加数据。
* **`STOR /path/something.txt`** 类似于`APPE`,但它覆盖文件
* **`APPE /path/something.txt`** 这将指示FTP将从**被动**连接或**PORT/EPRT**连接接收的数据存储到文件中。如果文件名存在,它将追加数据。
* **`STOR /path/something.txt`** 类似于`APPE`,但它覆盖文件
* **`STOU /path/something.txt`** 类似于`APPE`,但如果文件存在,则不执行任何操作。
* **`RETR /path/to/file`** 必须建立被动或端口连接。然后FTP服务器将通过该连接发送指定的文件
* **`RETR /path/to/file`** 必须建立被动或端口连接。然后FTP服务器将通过该连接发送指定的文件
* **`REST 6`** 这将指示服务器在使用`RETR`发送数据时从第6个字节开始。
* **`TYPE i`** 设置传输为二进制
* **`PASV`** 这将打开一个被动连接,并指示用户可以连接到哪里
* **`PASV`** 这将打开一个被动连接,并告知用户可以连接的位置
* **`PUT /tmp/file.txt`** 将指定的文件上传到FTP
![](<../../.gitbook/assets/image (227).png>)
## FTP反弹攻击
一些FTP服务器允许使用PORT命令。该命令可用于指示服务器您希望连接到其他FTP服务器的某个端口。然后您可以使用此功能通过FTP服务器扫描主机的哪些端口是开放的
一些FTP服务器允许使用PORT命令。该命令可用于指示服务器您希望连接到其他FTP服务器的某个端口。然后您可以使用此功能通过FTP服务器扫描主机的开放端口
[**在此了解如何滥用FTP服务器以扫描端口。**](ftp-bounce-attack.md)
您还可以滥用此行为使FTP服务器与其他协议交互。您可以**上传包含HTTP请求的文件**并使易受攻击的FTP服务器**将其发送到任意HTTP服务器**_也许是为了添加新的管理员用户_甚至上传FTP请求并使易受攻击的FTP服务器从不同的FTP服务器下载文件。\
理论很简单:
1. **将请求(在文本文件中)上传到易受攻击的服务器。**请记住如果您想与其他HTTP或FTP服务器通信您需要更改带有`0x0d 0x0a`的行
2. **使用`REST X`避免发送不想发送的字符**(也许要上传请求到文件中,您需要在开头放置一些图像头)
1. **将请求(在文本文件中)上传到易受攻击的服务器。**请记住如果您想与其他HTTP或FTP服务器通信您需要更改带有`0x0d 0x0a`的行
2. **使用`REST X`避免发送不想发送的字符**(也许要上传请求到文件中,您需要在开头放置一些图像头
3. **使用`PORT`连接到任意服务器和服务**
4. **使用`RETR`将保存的请求发送到服务器。**
由于连接不足以使用`RETR`发送数据,这很可能会引发类似**Socket not writable**的错误。尝试避免此错误的建议是:
* 如果要发送HTTP请求请**将相同的请求连续发送一次**,直到至少达到**\~0.5MB**。像这样:
* 如果要发送HTTP请求请**重复相同的请求**,直到至少达到**\~0.5MB**。像这样:
{% file src="../../.gitbook/assets/posts (1).txt" %}
posts.txt
{% endfile %}
* 尝试**使用与协议相关的“垃圾”数据填充请求**与FTP通信时可能只是垃圾命令或重复`RETR`指令以获取文件)
* 只是**使用大量空字符或其他字符填充请求**(分行或不分行)
* 尝试使用与协议相关的**"垃圾"数据填充请求**与FTP通信时可能只是垃圾命令或重复`RETR`指令以获取文件)
* 只需使用大量的空字符或其他字符填充请求(分行或不分行)
无论如何,这里有一个[关于如何滥用此功能使FTP服务器从不同的FTP服务器下载文件的旧示例。](ftp-bounce-download-2oftp-file.md)