80,443 - Pentesting Web Methodology
Last updated
Last updated
学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
从黑客的角度看待您的网络应用、网络和云
发现并报告具有实际商业影响的关键可利用漏洞。 使用我们 20 多个自定义工具来映射攻击面,查找让您提升权限的安全问题,并使用自动化漏洞利用收集重要证据,将您的辛勤工作转化为有说服力的报告。
Web 服务是最 常见和广泛的服务,存在许多 不同类型的漏洞。
默认端口: 80 (HTTP),443(HTTPS)
在这个方法论中,我们假设你将攻击一个域(或子域)而仅此而已。因此,你应该将此方法论应用于每个发现的域、子域或具有不确定网络服务器的IP。
检查正在运行的服务器版本是否存在已知漏洞。 HTTP响应的头部和cookie可能非常有用,以识别所使用的技术和/或版本。Nmap扫描可以识别服务器版本,但工具whatweb、webtech或https://builtwith.com/也可能有用:
Search for web应用程序版本的漏洞
一些技巧用于查找不同知名技术中的漏洞:
请注意,同一域名可能在不同的端口、文件夹和子域名中使用不同的技术。 如果web应用程序使用任何知名的技术/平台或其他任何技术,请不要忘记在互联网上搜索新的技巧(并告诉我!)。
如果应用程序的源代码在github上可用,除了进行自己的白盒测试外,还有一些信息可能对当前的黑盒测试有用:
是否有变更日志或自述文件或版本文件或任何可以通过网络访问的版本信息?
凭据是如何保存的?是否有任何(可访问的?)文件包含凭据(用户名或密码)?
密码是以明文、加密还是使用了哪种哈希算法?
是否使用任何主密钥来加密某些内容?使用了哪种算法?
你能否通过利用某个漏洞访问这些文件?
在github中是否有任何有趣的信息(已解决和未解决的)问题?或者在提交历史中(也许某个密码在旧提交中引入)?
如果使用了 CMS,别忘了 运行扫描器,也许会发现一些有价值的信息:
Clusterd: JBoss, ColdFusion, WebLogic, Tomcat, Railo, Axis2, Glassfish CMSScan: WordPress, Drupal, Joomla, vBulletin 网站的安全问题。 (GUI) VulnX: Joomla, Wordpress, Drupal, PrestaShop, Opencart CMSMap: (W)ordpress, (J)oomla, (D)rupal 或 (M)oodle droopscan: Drupal, Joomla, Moodle, Silverstripe, Wordpress
在这一点上,您应该已经获得了一些关于客户端使用的网络服务器的信息(如果提供了任何数据)以及在测试期间需要记住的一些技巧。如果您运气好,您甚至找到了一个CMS并运行了一些扫描器。
从这一点开始,我们将开始与Web应用程序进行交互。
包含有趣信息的默认页面:
/robots.txt
/sitemap.xml
/crossdomain.xml
/clientaccesspolicy.xml
/.well-known/
还要检查主页面和次页面中的评论。
强制错误
当向Web服务器发送奇怪的数据时,可能会表现出意外行为。这可能会打开漏洞或泄露敏感信息。
访问假页面如/whatever_fake.php (.aspx,.html,.etc)
在cookie值和参数值中**添加 "[]", "]]", 和 "[["**以创建错误
通过在URL的末尾提供输入为**/~randomthing/%s
**来生成错误
尝试不同的HTTP动词如PATCH、DEBUG或错误的如FAKE
如果您发现WebDav已启用但您没有足够的权限在根文件夹中上传文件,请尝试:
暴力破解凭据
通过WebDav将文件上传到网页内找到的其他文件夹。您可能有权限在其他文件夹中上传文件。
如果应用程序在任何部分不强制用户使用HTTPS,那么它容易受到中间人攻击
如果应用程序使用HTTP发送敏感数据(密码),那么这是一个高风险漏洞。
使用testssl.sh检查漏洞(在漏洞赏金计划中,这类漏洞可能不会被接受),并使用a2sv重新检查漏洞:
关于SSL/TLS漏洞的信息:
在网络中启动某种爬虫。爬虫的目标是尽可能多地找到被测试应用程序的路径。因此,应使用网络爬虫和外部资源来找到尽可能多的有效路径。
gospider (go): HTML爬虫,JS文件中的LinkFinder和外部资源(Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com)。
hakrawler (go): HML爬虫,带有JS文件的LinkFinder和Archive.org作为外部资源。
dirhunt (python): HTML爬虫,也指示“美味文件”。
evine (go): 交互式CLI HTML爬虫。它还在Archive.org中搜索。
meg (go): 该工具不是爬虫,但可能有用。您只需指示一个包含主机的文件和一个包含路径的文件,meg将获取每个主机上的每个路径并保存响应。
urlgrab (go): 带有JS渲染功能的HTML爬虫。然而,它似乎没有维护,预编译版本较旧,当前代码无法编译。
gau (go): 使用外部提供者(wayback, otx, commoncrawl)的HTML爬虫。
ParamSpider: 该脚本将找到带参数的URL并列出它们。
galer (go): 带有JS渲染功能的HTML爬虫。
LinkFinder (python): HTML爬虫,具有JS美化功能,能够在JS文件中搜索新路径。值得一看JSScanner,它是LinkFinder的一个包装器。
goLinkFinder (go): 提取HTML源代码和嵌入的JavaScript文件中的端点。对漏洞猎人、红队员、信息安全专家有用。
JSParser (python2.7): 一个使用Tornado和JSBeautifier从JavaScript文件中解析相对URL的Python 2.7脚本。对轻松发现AJAX请求很有用。看起来没有维护。
relative-url-extractor (ruby): 给定一个文件(HTML),它将使用巧妙的正则表达式从丑陋(压缩)文件中提取相对URL。
JSFScan (bash, 多个工具): 使用多个工具从JS文件中收集有趣的信息。
subjs (go): 查找JS文件。
page-fetch (go): 在无头浏览器中加载页面并打印出加载页面的所有URL。
Feroxbuster (rust): 内容发现工具,结合了之前工具的多个选项。
Javascript Parsing: 一个Burp扩展,用于查找JS文件中的路径和参数。
Sourcemapper: 一个工具,给定.js.map URL将获取美化的JS代码。
xnLinkFinder: 这是一个用于发现给定目标的端点的工具。
waymore: 从时光机发现链接(还下载时光机中的响应并寻找更多链接)。
HTTPLoot (go): 爬取(甚至通过填写表单)并使用特定正则表达式查找敏感信息。
SpiderSuite: Spider Suite是一个高级多功能GUI网络安全爬虫/蜘蛛,专为网络安全专业人员设计。
ParaForge: ParaForge是一个简单的Burp Suite扩展,用于提取请求中的参数和端点以创建自定义字典进行模糊测试和枚举。
katana (go): 这个工具很棒。
Crawley (go): 打印它能够找到的每个链接。
从根文件夹开始暴力破解,确保使用此方法暴力破解所有找到的目录以及通过爬虫(您可以递归地进行此暴力破解,并在使用的字典开头附加找到的目录名称)。 工具:
Dirb / Dirbuster - 包含在Kali中,旧(和慢)但功能正常。允许自动签名证书和递归搜索。与其他选项相比太慢。
Dirsearch (python): 它不允许自动签名证书,但允许递归搜索。
Gobuster (go): 它允许自动签名证书,不具有递归搜索。
Feroxbuster - 快速,支持递归搜索。
wfuzz wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ
ffuf - 快速: ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ
uro (python): 这不是一个爬虫,而是一个工具,给定找到的URL列表将删除“重复”的URL。
Scavenger: Burp扩展,从不同页面的burp历史记录中创建目录列表。
TrashCompactor: 删除具有重复功能的URL(基于js导入)。
Chamaleon: 它使用wapalyzer检测使用的技术并选择要使用的字典。
推荐字典:
raft-large-directories-lowercase.txt
directory-list-2.3-medium.txt
RobotsDisallowed/top10000.txt
/usr/share/wordlists/dirb/common.txt
/usr/share/wordlists/dirb/big.txt
/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
注意,在暴力破解或爬虫过程中发现新目录时,应进行暴力破解。
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 或 backup-gen.
发现新参数: 您可以使用像Arjun、 parameth、 x8 和 Param Miner 来发现隐藏参数。如果可以,您可以尝试在每个可执行的网页文件中搜索隐藏参数。
Arjun所有默认字典: https://github.com/s0md3v/Arjun/tree/master/arjun/db
Param-miner “params” : https://github.com/PortSwigger/param-miner/blob/master/resources/params
Assetnote “parameters_top_1m”: https://wordlists.assetnote.io/
nullenc0de “params.txt”: https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773
评论: 检查所有文件的评论,您可以找到凭据或隐藏功能。
如果您正在进行CTF,一个“常见”的技巧是隐藏 信息在页面的右侧的评论中(使用数百个 空格,以便在使用浏览器打开源代码时看不到数据)。另一种可能性是在网页的底部使用多个新行并在评论中隐藏信息。
API密钥: 如果您找到任何API密钥,有指南指示如何使用不同平台的API密钥:keyhacks、 zile、 truffleHog、 SecretFinder、 RegHex、 DumpsterDive、 EarlyBird
Google API密钥: 如果您找到任何看起来像AIzaSyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik的API密钥,您可以使用项目gmapapiscanner来检查该密钥可以访问哪些API。
S3存储桶: 在爬虫时查看是否有任何子域或任何链接与某些S3存储桶相关。在这种情况下,检查存储桶的权限。
在执行爬虫和暴力破解时,您可能会发现有趣的 事物,您需要注意。
有趣的文件
查找CSS文件中指向其他文件的链接。
如果您找到一个_.env_,可以找到诸如API密钥、数据库密码和其他信息。
如果您找到API端点,您也应该测试它们。这些不是文件,但可能“看起来像”它们。
JS文件: 在爬虫部分提到了一些可以从JS文件中提取路径的工具。此外,监控每个找到的JS文件也很有趣,因为在某些情况下,变化可能表明代码中引入了潜在的漏洞。您可以使用例如JSMon.
Javascript反混淆器和解包器: https://lelinhtinh.github.io/de4js/、https://www.dcode.fr/javascript-unobfuscator
Javascript美化器: http://jsbeautifier.org/、http://jsnice.org/
JsFuck反混淆 (javascript with chars:"[]!+" https://enkhee-osiris.github.io/Decoder-JSFuck/)
TrainFuck: +72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.
在多个场合,您需要理解使用的正则表达式。这将很有用:https://regex101.com/或https://pythonium.net/regex
您还可以监控检测到表单的文件,因为参数的变化或新表单的出现可能表明潜在的新漏洞功能。
403 Forbidden/Basic Authentication/401 Unauthorized (绕过)
403 & 401 Bypasses502 Proxy Error
如果任何页面响应该代码,它可能是一个配置错误的代理。如果您发送HTTP请求,如:GET https://google.com HTTP/1.1
(带有主机头和其他常见头),代理将尝试访问 google.com ,您将发现一个 SSRF。
NTLM认证 - 信息泄露
如果运行的服务器要求身份验证是Windows或您发现一个登录要求您的凭据(并要求域名),您可以引发信息泄露。
发送头:“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”
,由于NTLM认证的工作原理,服务器将响应内部信息(IIS版本、Windows版本...)在“WWW-Authenticate”头中。
您可以使用nmap插件“http-ntlm-info.nse”来自动化此过程。
HTTP重定向(CTF)
可以在重定向中放置内容。这些内容不会显示给用户(因为浏览器将执行重定向),但其中可能隐藏某些内容。
现在已经对网络应用程序进行了全面的枚举,是时候检查许多可能的漏洞。您可以在这里找到检查清单:
Web Vulnerabilities Methodology有关网络漏洞的更多信息,请访问:
您可以使用工具,例如https://github.com/dgtlmoon/changedetection.io来监控页面的修改,这可能会插入漏洞。
从黑客的角度看待您的网络应用程序、网络和云
查找并报告具有实际业务影响的关键、可利用漏洞。 使用我们20多个自定义工具来映射攻击面,查找让您提升权限的安全问题,并使用自动化漏洞利用收集重要证据,将您的辛勤工作转化为有说服力的报告。
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)