80,443 - Pentesting Web Methodology
最后更新于
最后更新于
如果您对黑客职业感兴趣并想要攻破不可攻破的系统 - 我们正在招聘!(需要流利的波兰语书面和口语表达能力)。
Web服务是最常见和广泛的服务,存在许多不同类型的漏洞。
默认端口: 80(HTTP),443(HTTPS)
在这个方法论中,我们假设您将攻击一个域名(或子域名),仅限于此。因此,您应该将此方法应用于发现的每个域、子域或IP,其中包含未确定的Web服务器。
检查运行的服务器版本是否存在已知漏洞。 响应的HTTP标头和Cookie可能非常有用,可用于识别正在使用的技术和/或版本。Nmap扫描可以识别服务器版本,但也可以使用工具whatweb、webtech或https://builtwith.com/:
一些用于查找不同知名技术中的漏洞的技巧:
请注意,同一域名可能在不同端口、文件夹和子域中使用不同的技术。 如果Web应用程序使用任何之前列出的知名技术/平台或其他任何技术,请不要忘记在互联网上搜索新的技巧(并告诉我!)。
如果应用程序的源代码在github上可用,除了自行对应用程序进行白盒测试外,还有一些信息对当前的黑盒测试可能有用:
是否有通过Web访问的变更日志、自述文件或版本信息文件?
凭证是如何保存的?是否有(可访问的)带有凭证(用户名或密码)的文件?
密码是明文、加密还是使用了哪种哈希算法?
是否使用了任何用于加密的主密钥?使用了哪种算法?
您能否利用某些漏洞访问这些文件?
在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
到这一步,您应该已经获得了客户使用的Web服务器的一些信息(如果提供了任何数据),以及在测试过程中要牢记的一些技巧。如果幸运的话,您甚至可能已经找到了一个CMS并运行了一些扫描器。
从这一点开始,我们将开始与Web应用程序进行交互。
具有有趣信息的默认页面:
/robots.txt
/sitemap.xml
/crossdomain.xml
/clientaccesspolicy.xml
/.well-known/
还要检查主页面和次要页面中的注释。
强制错误
当向Web服务器发送奇怪的数据时,Web服务器可能会表现出意外行为。这可能会打开漏洞或泄露敏感信息。
访问像/whatever_fake.php (.aspx,.html,等)这样的虚假页面
在cookie值和参数值中添加"[]", "]]"和"[["以创建错误
通过在URL的末尾输入**/~randomthing/%s
**来生成错误
尝试使用不同的HTTP谓词,如PATCH,DEBUG或错误的FAKE
如果发现WebDav已启用但您没有足够的权限在根文件夹中上传文件,请尝试:
暴力破解凭据
通过WebDav上传文件到Web页面内找到的其他文件夹。您可能有权限在其他文件夹中上传文件。
如果应用程序在任何部分没有强制使用HTTPS,那么它容易受到中间人攻击
如果应用程序使用HTTP发送敏感数据(密码)。那么这是一个高漏洞。
使用testssl.sh来检查漏洞(在Bug赏金计划中,这类漏洞可能不会被接受),并使用a2sv重新检查漏洞:
SSL/TLS漏洞信息:
在网络中启动某种爬虫。爬虫的目标是从被测试应用程序中找到尽可能多的路径。因此,应使用网络爬行和外部来源来找到尽可能多的有效路径。
gospider (go):HTML爬虫,JS文件中的LinkFinder和外部来源(Archive.org、CommonCrawl.org、VirusTotal.com、AlienVault.com)。
hakrawler (go):HML爬虫,带有JS文件和Archive.org的LinkFider作为外部来源。
dirhunt (python):HTML爬虫,还指示“juicy files”。
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,以查找并提取丑陋(压缩)文件中的相对URL。
JSFScan (bash,多个工具):使用多个工具从JS文件中收集有趣的信息。
subjs (go):查找JS文件。
page-fetch (go):在无头浏览器中加载页面并打印加载的所有URL以加载页面。
Feroxbuster (rust):混合了前述工具的几个选项的内容发现工具。
Javascript Parsing:用于在JS文件中查找路径和参数的Burp扩展。
Sourcemapper:给定.js.map URL,将获取到美化的JS代码。
xnLinkFinder:这是一个用于发现给定目标的端点的工具。
waymore**:**从wayback机器中发现链接(还下载wayback中的响应并查找更多链接)。
HTTPLoot (go):爬行(甚至通过填写表单)并使用特定的正则表达式查找敏感信息。
SpiderSuite:Spider Suite是一款专为网络安全专业人员设计的高级多功能GUI网络安全爬虫/蜘蛛。
ParaForge:ParaForge是一个简单的Burp Suite扩展,用于从请求中提取参数和端点,以创建用于模糊测试和枚举的自定义字典。
katana (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
请注意,每当在暴力破解或爬虫过程中发现新目录时,应进行暴力破解。
损坏链接检查器:查找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 等工具来发现隐藏参数。如果可以的话,您可以尝试在每个可执行的Web文件上搜索隐藏的参数。
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去混淆(包含字符:“[]!+” https://ooze.ninja/javascript/poisonjs/)
TrainFuck: +72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.
在许多情况下,您将需要理解使用的正则表达式,这将很有用:https://regex101.com/
您还可以监视检测到表单的文件,因为参数的更改或新表单的出现可能表明潜在的新易受攻击的功能。
403 Forbidden/基本身份验证/401未经授权(绕过)
403 & 401 Bypasses502 代理错误
如果任何页面以该代码响应,那么可能是配置不良的代理。如果您发送类似以下的HTTP请求:GET https://google.com HTTP/1.1
(带有主机头和其他常见头),代理将尝试访问google.com,您将发现一个SSRF。
NTLM身份验证 - 信息泄露
如果正在请求身份验证的运行服务器是Windows,或者您找到一个要求您凭证的登录(并要求域 名),您可以引发信息泄露。
发送 头部:“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”
,由于NTLM身份验证的工作方式,服务器将在“WWW-Authenticate”头部中回复内部信息(IIS版本、Windows版本...)。
您可以使用nmap插件“http-ntlm-info.nse”来自动化这个过程。
HTTP重定向(CTF)
可以在重定向中放置内容。这些内容不会显示给用户(因为浏览器将执行重定向),但其中可能隐藏着一些内容。
现在已经执行了对Web应用程序的全面枚举,是时候检查可能存在的许多漏洞了。您可以在这里找到检查清单:
Web Vulnerabilities Methodology在以下链接中查找有关Web漏洞的更多信息:
您可以使用工具如https://github.com/dgtlmoon/changedetection.io来监视页面的修改,以防止可能插入漏洞。
如果您对黑客职业感兴趣并想要攻破不可攻破的系统 - 我们正在招聘!(需要流利的波兰语书面和口语表达能力)。