您可以使用 file 方案来获取服务器上文件的内容:
file://path/to/file
file:///etc/passwd
file://\/\/etc/passwd
您可以使用 ldap、git 或 dict URL 方案来创建到基于 TCP 的服务的明文连接。
$ curl -v dict://127.0.0.1:1337/HELLO
* Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to 127.0.0.1 (127.0.0.1) port 1337 (#0)
$ nc -l -v 1337
CLIENT libcurl 7.64.1
HELLO
QUIT
您可以通过使用 TFTP 协议发送几乎任意的 UDP 数据包。
这可用于制作对各种 UDP 服务的请求,如 Memcached。
Java 通过 file:// 方案列出目录,以下代码将打印目录列表:
参考:
当连接到 SMTP 时,内部域名可能会从第一行泄露。为此,连接到 http://127.0.0.1:25 或一些带有 SMTP 可用的内部 IP 地址 http://10.0.0.6:25,并从第一行获取内部域名:220 subdomain.internal-host.com ESMTP Sendmail
TLS 允许您在服务器名称指示或会话 ID 等字段中走私任意数据。您可以使用此方法将 payload 传递到 http/基于文本的服务。
参考:
您可以通过向您的服务器发送请求来枚举不同协议的版本。
Gopher 是一种为分发、搜索和检索文档而设计的通信协议。Gopher 提供了广泛的滥用选项,参见更多。
Amazon Web Services
参考:
参考:
Microsoft Azure
Docker Engine API 通常在端口 2375 和 2376(tls)上可用。您可以使用以下路径来验证 Docker Engine API 的存在:
与 dockerd 交互的简单示例(另请参见:守护进程套接字选项):
Docker 注册表通常在端口 5000 上可用。Docker 注册表可以获取对存储在容器镜像中的敏感信息的读取权限和/或修改存储的容器镜像。
对于枚举仓库/镜像,请注意以下工具:
Kubernetes etcd API 可以包含 API 密钥、内部 IP 和端口:
kubelet 通常在默认端口 10250 上可用。
kubelet 只读通常在默认端口 10255 上可用。此端口通常只在较旧的集群上看到,但如果存在,可以提供一些有用的信息泄露。它是一个 HTTP API,没有加密且没有身份验证要求,因此很容易与之交互。
最有用的端点是 /pods/:
SSRF 允许您对使用基本访问认证作为认证机制的资源进行凭证暴力破解。为此,只需使用以下链接:
有时在使用 SSRF 时,您可以依靠异常响应,如果请求执行的响应对您不可用。为此,您需要访问内部资源并测量每个请求的响应时间。响应时间是可能表示资源可用性的间接标志。发送大量请求后,您需要在其中搜索响应时间与其他所有请求不同的那些请求。这种方法允许您盲目暴力破解内部服务、开放端口、目录和文件。
您可以使用 http 方案进行端口扫描:
许多库尝试按照 DNS 记录中的顺序通过 IP 访问资源。例如,如果 DNS 记录如下所示:
首先将尝试连接到 172.16.1.1,如果出现问题,则连接到 172.16.1.2。这允许您找出哪些端口是开放的,哪些不是。
为此,您也可以使用服务 http://1u.ms。例如,如果您需要查找 127.0.0.1 上的可用端口,您可以使用
这将允许您更改端口号以确定哪个端口可用。
这表明端口 22 和 6379 在 127.0.0.1 上是开放的,因为没有对来自第二个 DNS 记录的 IP 地址的连接尝试。
值得注意的是 DNS 服务器在后端解析名称。DNS 服务器可以使用内置的轮询算法来解析域名并更改记录顺序
尝试读取 trace.axd,它保留对应用程序发出的所有 HTTP 请求的日志。此信息包括远程客户端 IP、会话 ID、所有请求和响应 cookie、物理路径、源代码信息,甚至可能包括用户名和密码。
Apache Druid 通常在端口 80、8080、8888 和 8082 上可用。您可以使用以下路径来验证 Apache Druid 的存在:
Apache Solr 通常在端口 8983 上可用。
Apache Struts 通常在端口 80、443(tls)、8080、8443(tls)上可用。
Apache Tomcat 通常在端口 80、443(tls)、8080、8443(tls)上可用。
HashiCorp Consul
Consul 通常在端口 8500 和 8501(tls)上可用。
Elasticsearch 通常在端口 9200 上可用。您可以使用以下路径来验证 Elasticsearch 的存在:
如果您可以发送 POST 请求,您可以尝试通过向以下路径发送 POST 请求来关闭 Elasticsearch 实例:
Java RMI 通常在端口 1090、1098、1099、1199、4443-4446、8999-9010、9999 上可用。允许任意字节的 SSRF 漏洞可用于对 Java RMI 默认组件执行反序列化或代码库攻击。
Jboss 通常在端口 80、443(tls)、8080、8443(tls)上可用。
Jenkins 通常在端口 80、443(tls)、8080、8888 上可用。
Memcache 通常在端口 11211 上可用。
OpenTSDB 通常在端口 4242 上可用。
Oracle PeopleSoft
PeopleSoft 通常在端口 80 和 443(tls)上可用。
Oracle WebLogic
WebLogic 通常在端口 80、443(tls)和 7001 上可用。您可以尝试利用已知的漏洞:
Redis 通常在端口 6379 上可用。