hacktricks/network-services-pentesting/pentesting-web
2024-04-27 17:16:54 +00:00
..
buckets Translated ['network-services-pentesting/11211-memcache/README.md', 'net 2024-02-09 08:58:25 +00:00
electron-desktop-apps Translated ['README.md', 'crypto-and-stego/hash-length-extension-attack. 2024-04-18 03:58:46 +00:00
php-tricks-esp Translated ['network-services-pentesting/pentesting-web/nginx.md', 'netw 2024-04-27 17:16:54 +00:00
tomcat Translated ['network-services-pentesting/pentesting-web/tomcat/README.md 2024-04-11 00:57:14 +00:00
xss-to-rce-electron-desktop-apps Translated to Chinese 2023-08-03 19:12:22 +00:00
403-and-401-bypasses.md Translated ['README.md', 'backdoors/salseo.md', 'cryptography/certificat 2024-03-29 21:06:45 +00:00
aem-adobe-experience-cloud.md Translated ['network-services-pentesting/11211-memcache/README.md', 'net 2024-02-09 08:58:25 +00:00
angular.md Translated ['a.i.-exploiting/bra.i.nsmasher-presentation/BIM_Bruteforcer 2024-02-08 22:20:49 +00:00
apache.md Translated ['network-services-pentesting/11211-memcache/README.md', 'net 2024-02-09 08:58:25 +00:00
artifactory-hacking-guide.md Translated ['network-services-pentesting/11211-memcache/README.md', 'net 2024-02-09 08:58:25 +00:00
bolt-cms.md Translated ['network-services-pentesting/11211-memcache/README.md', 'net 2024-02-09 08:58:25 +00:00
cgi.md Translated ['network-services-pentesting/11211-memcache/README.md', 'net 2024-02-09 08:58:25 +00:00
code-review-tools.md Translated ['network-services-pentesting/pentesting-web/code-review-tool 2024-04-18 02:45:20 +00:00
dotnetnuke-dnn.md Translated ['network-services-pentesting/11211-memcache/README.md', 'net 2024-02-09 08:58:25 +00:00
drupal.md Translated ['binary-exploitation/rop-return-oriented-programing/ret2lib/ 2024-04-07 22:57:42 +00:00
flask.md Translated ['network-services-pentesting/11211-memcache/README.md', 'net 2024-02-09 08:58:25 +00:00
git.md Translated ['network-services-pentesting/11211-memcache/README.md', 'net 2024-02-09 08:58:25 +00:00
golang.md Translated ['network-services-pentesting/11211-memcache/README.md', 'net 2024-02-09 08:58:25 +00:00
grafana.md Translated ['network-services-pentesting/11211-memcache/README.md', 'net 2024-02-09 08:58:25 +00:00
graphql.md GitBook: No commit message 2024-04-06 18:13:07 +00:00
gwt-google-web-toolkit.md Translated ['README.md', 'network-services-pentesting/pentesting-web/gwt 2024-02-09 00:34:08 +00:00
h2-java-sql-database.md Translated ['network-services-pentesting/11211-memcache/README.md', 'net 2024-02-09 08:58:25 +00:00
iis-internet-information-services.md Translated ['README.md', 'crypto-and-stego/hash-length-extension-attack. 2024-04-18 03:58:46 +00:00
imagemagick-security.md Translated ['network-services-pentesting/11211-memcache/README.md', 'net 2024-02-09 08:58:25 +00:00
jboss.md Translated ['forensics/basic-forensic-methodology/specific-software-file 2024-02-18 14:44:30 +00:00
jira.md Translated ['binary-exploitation/basic-binary-exploitation-methodology/t 2024-04-17 05:38:01 +00:00
joomla.md Translated ['network-services-pentesting/pentesting-web/joomla.md'] to c 2024-04-10 11:57:22 +00:00
jsp.md Translated ['network-services-pentesting/11211-memcache/README.md', 'net 2024-02-09 08:58:25 +00:00
laravel.md Translated ['network-services-pentesting/11211-memcache/README.md', 'net 2024-02-09 08:58:25 +00:00
moodle.md Translated ['forensics/basic-forensic-methodology/specific-software-file 2024-02-18 14:44:30 +00:00
nginx.md Translated ['network-services-pentesting/pentesting-web/nginx.md', 'netw 2024-04-27 17:16:54 +00:00
nodejs-express.md Translated ['a.i.-exploiting/bra.i.nsmasher-presentation/BIM_Bruteforcer 2024-02-08 22:20:49 +00:00
put-method-webdav.md Translated ['README.md', 'backdoors/salseo.md', 'cryptography/certificat 2024-03-29 21:06:45 +00:00
python.md Translated ['network-services-pentesting/11211-memcache/README.md', 'net 2024-02-09 08:58:25 +00:00
README.md Translated ['binary-exploitation/basic-binary-exploitation-methodology/t 2024-04-17 05:38:01 +00:00
rocket-chat.md Translated ['binary-exploitation/rop-return-oriented-programing/ret2lib/ 2024-04-07 22:57:42 +00:00
special-http-headers.md Translated ['generic-methodologies-and-resources/external-recon-methodol 2024-04-10 13:39:39 +00:00
spring-actuators.md Translated ['network-services-pentesting/11211-memcache/README.md', 'net 2024-02-09 08:58:25 +00:00
symphony.md Translated ['network-services-pentesting/11211-memcache/README.md', 'net 2024-02-09 08:58:25 +00:00
tomcat.md Translated ['forensics/basic-forensic-methodology/partitions-file-system 2024-03-26 15:45:57 +00:00
uncovering-cloudflare.md Translated ['generic-methodologies-and-resources/external-recon-methodol 2024-04-10 13:39:39 +00:00
vmware-esx-vcenter....md Translated ['binary-exploitation/rop-return-oriented-programing/ret2lib/ 2024-04-07 22:57:42 +00:00
waf-bypass.md Translated ['network-services-pentesting/11211-memcache/README.md', 'net 2024-02-09 08:58:25 +00:00
web-api-pentesting.md Translated ['linux-hardening/privilege-escalation/README.md', 'network-s 2024-04-16 04:03:15 +00:00
werkzeug.md Translated ['network-services-pentesting/pentesting-web/nginx.md', 'netw 2024-04-27 17:16:54 +00:00
wordpress.md Translated ['network-services-pentesting/pentesting-web/wordpress.md'] t 2024-04-27 13:39:04 +00:00

80,443 - Pentesting Web Methodology

从零开始学习AWS黑客技术成为专家 htARTEHackTricks AWS红队专家

支持HackTricks的其他方式

如果您对黑客职业感兴趣并想要攻破不可攻破的系统 - 我们正在招聘!(需要流利的波兰语书面和口语表达能力)。

{% embed url="https://www.stmcyber.com/careers" %}

基本信息

Web服务是最常见和广泛的服务,存在许多不同类型的漏洞

默认端口: 80HTTP443HTTPS

PORT    STATE SERVICE
80/tcp  open  http
443/tcp open  ssl/https
nc -v domain.com 80 # GET / HTTP/1.0
openssl s_client -connect domain.com:443 # GET / HTTP/1.0

Web API指南

{% content-ref url="web-api-pentesting.md" %} web-api-pentesting.md {% endcontent-ref %}

方法概述

在这个方法论中我们假设您将攻击一个域名或子域名仅限于此。因此您应该将此方法应用于发现的每个域、子域或IP其中包含未确定的Web服务器。

  • 识别Web服务器使用的技术开始。寻找在测试的其余部分中要记住的技巧,如果您能成功识别该技术。
  • 该技术版本有任何已知漏洞吗?
  • 使用任何众所周知的技术?有任何有用的技巧来提取更多信息吗?
  • 有任何专门的扫描工具要运行如wpscan
  • 启动通用目的扫描工具。您永远不知道它们是否会找到任何东西或者是否会找到一些有趣的信息。
  • 初始检查开始:robotssitemap404错误和SSL/TLS扫描如果是HTTPS
  • 开始爬取网页:现在是时候查找所有可能的文件、文件夹正在使用的参数。还要检查特殊发现
  • 请注意每当在Brute-Forcing或爬取过程中发现新目录时应该对其进行爬取。
  • 目录爆破:尝试对所有发现的文件夹进行爆破,以搜索新的文件目录
  • 请注意每当在Brute-Forcing或爬取过程中发现新目录时应该对其进行Brute-Forced。
  • 备份检查:测试是否可以找到发现文件备份,附加常见的备份扩展名。
  • 暴力破解参数:尝试查找隐藏参数
  • 一旦您已经识别了所有可能接受用户输入端点,请检查与之相关的各种漏洞
  • 按照此检查清单进行操作

服务器版本(存在漏洞吗?)

识别

检查运行的服务器版本是否存在已知漏洞
响应的HTTP标头和Cookie可能非常有用,可用于识别正在使用的技术和/或版本Nmap扫描可以识别服务器版本,但也可以使用工具whatwebwebtechhttps://builtwith.com/

whatweb -a 1 <URL> #Stealthy
whatweb -a 3 <URL> #Aggresive
webtech -u <URL>
webanalyze -host https://google.com -crawl 2

搜索Web应用程序版本的漏洞

检查是否有任何WAF

Web技巧

一些用于查找不同知名技术中的漏洞的技巧:

请注意,同一域名可能在不同端口、文件夹和子域中使用不同的技术。
如果Web应用程序使用任何之前列出的知名技术/平台或其他任何技术,请不要忘记在互联网上搜索新的技巧(并告诉我!)。

源代码审查

如果应用程序的源代码在github上可用除了自行对应用程序进行白盒测试外还有一些信息对当前的黑盒测试可能有用

  • 是否有通过Web访问的变更日志、自述文件或版本信息文件?
  • 凭证是如何保存的?是否有(可访问的)带有凭证(用户名或密码)的文件?
  • 密码是明文、加密还是使用了哪种哈希算法?
  • 是否使用了任何用于加密的主密钥?使用了哪种算法?
  • 您能否利用某些漏洞访问这些文件?
  • 在github的已解决和未解决的问题中是否有任何有趣的信息或在提交历史中也许在旧提交中引入了某些密码

{% content-ref url="code-review-tools.md" %} code-review-tools.md {% endcontent-ref %}

自动扫描器

通用用途的自动扫描器

nikto -h <URL>
whatweb -a 4 <URL>
wapiti -u <URL>
W3af
zaproxy #You can use an API
nuclei -ut && nuclei -target <URL>

# https://github.com/ignis-sec/puff (client side vulns fuzzer)
node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi2rVUN/?query=FUZZ"

CMS扫描器

如果使用了CMS不要忘记运行扫描器,也许会发现一些有趣的东西:

Clusterd JBossColdFusionWebLogic TomcatRailoAxis2Glassfish
CMSScan:为WordPressDrupalJoomlavBulletin网站查找安全问题GUI
VulnX Joomla Wordpress DrupalPrestaShopOpencart
CMSMap(W)ordpress (J)oomla (D)rupal (M)oodle
droopscan Drupal Joomla MoodleSilverstripe Wordpress

cmsmap [-f W] -F -d <URL>
wpscan --force update -e --url <URL>
joomscan --ec -u <URL>
joomlavs.rb #https://github.com/rastating/joomlavs

到这一步您应该已经获得了客户使用的Web服务器的一些信息如果提供了任何数据以及在测试过程中要牢记的一些技巧。如果幸运的话您甚至可能已经找到了一个CMS并运行了一些扫描器。

逐步Web应用程序发现

从这一点开始我们将开始与Web应用程序进行交互。

初始检查

具有有趣信息的默认页面:

  • /robots.txt
  • /sitemap.xml
  • /crossdomain.xml
  • /clientaccesspolicy.xml
  • /.well-known/
  • 还要检查主页面和次要页面中的注释。

强制错误

当向Web服务器发送奇怪的数据时Web服务器可能会表现出意外行为。这可能会打开漏洞泄露敏感信息

  • 访问像/whatever_fake.php (.aspx.html等)这样的虚假页面
  • cookie值参数值中添加"[]", "]]"和"[["以创建错误
  • 通过在URL末尾输入**/~randomthing/%s**来生成错误
  • 尝试使用不同的HTTP谓词如PATCHDEBUG或错误的FAKE

检查是否可以上传文件(PUT谓词WebDav

如果发现WebDav启用但您没有足够的权限在根文件夹中上传文件,请尝试:

  • 暴力破解凭据
  • 通过WebDav上传文件到Web页面内找到的其他文件夹。您可能有权限在其他文件夹中上传文件。

SSL/TLS漏洞

  • 如果应用程序在任何部分没有强制使用HTTPS,那么它容易受到中间人攻击
  • 如果应用程序使用HTTP发送敏感数据密码。那么这是一个高漏洞。

使用testssl.sh来检查漏洞在Bug赏金计划中这类漏洞可能不会被接受并使用a2sv重新检查漏洞:

./testssl.sh [--htmlfile] 10.10.10.10:443
#Use the --htmlfile to save the output inside an htmlfile also

# You can also use other tools, by testssl.sh at this momment is the best one (I think)
sslscan <host:port>
sslyze --regular <ip:port>

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):爬行(甚至通过填写表单)并使用特定的正则表达式查找敏感信息。
  • SpiderSuiteSpider Suite是一款专为网络安全专业人员设计的高级多功能GUI网络安全爬虫/蜘蛛。
  • jsluice (go)这是一个用于从JavaScript源代码中提取URL、路径、秘密和其他有趣数据的Go包和命令行工具
  • ParaForgeParaForge是一个简单的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。
  • ScavengerBurp扩展从不同页面的burp历史记录中创建目录列表
  • TrashCompactor删除具有重复功能的URL基于js导入
  • Chamaleon使用wapalyzer检测使用的技术并选择要使用的字典。

推荐字典:

请注意,每当在暴力破解或爬虫过程中发现新目录时,应进行暴力破解。

每个找到的文件要检查的内容

特殊发现

执行爬行暴力破解时,您可能会发现一些有趣的 事物,您需要注意

有趣的文件

403 Forbidden/基本身份验证/401未经授权绕过

{% content-ref url="403-and-401-bypasses.md" %} 403-and-401-bypasses.md {% endcontent-ref %}

502 代理错误

如果任何页面以该代码响应,那么可能是配置不良的代理如果您发送类似以下的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应用程序的全面枚举是时候检查可能存在的许多漏洞了。您可以在这里找到检查清单

{% content-ref url="../../pentesting-web/web-vulnerabilities-methodology.md" %} web-vulnerabilities-methodology.md {% endcontent-ref %}

在以下链接中查找有关Web漏洞的更多信息

监控页面更改

您可以使用工具如https://github.com/dgtlmoon/changedetection.io来监视页面的修改,以防止可能插入漏洞。

如果您对黑客职业感兴趣并想要攻破不可攻破的系统 - 我们正在招聘!(需要流利的波兰语书面和口语表达能力)。

{% embed url="https://www.stmcyber.com/careers" %}

HackTricks自动命令

Protocol_Name: Web    #Protocol Abbreviation if there is one.
Port_Number:  80,443     #Comma separated if there is more than one.
Protocol_Description: Web         #Protocol Abbreviation Spelled out

Entry_1:
Name: Notes
Description: Notes for Web
Note: |
https://book.hacktricks.xyz/pentesting/pentesting-web

Entry_2:
Name: Quick Web Scan
Description: Nikto and GoBuster
Command: nikto -host {Web_Proto}://{IP}:{Web_Port} &&&& gobuster dir -w {Small_Dirlist} -u {Web_Proto}://{IP}:{Web_Port} && gobuster dir -w {Big_Dirlist} -u {Web_Proto}://{IP}:{Web_Port}

Entry_3:
Name: Nikto
Description: Basic Site Info via Nikto
Command: nikto -host {Web_Proto}://{IP}:{Web_Port}

Entry_4:
Name: WhatWeb
Description: General purpose auto scanner
Command: whatweb -a 4 {IP}

Entry_5:
Name: Directory Brute Force Non-Recursive
Description:  Non-Recursive Directory Brute Force
Command: gobuster dir -w {Big_Dirlist} -u {Web_Proto}://{IP}:{Web_Port}

Entry_6:
Name: Directory Brute Force Recursive
Description: Recursive Directory Brute Force
Command: python3 {Tool_Dir}dirsearch/dirsearch.py -w {Small_Dirlist} -e php,exe,sh,py,html,pl -f -t 20 -u {Web_Proto}://{IP}:{Web_Port} -r 10

Entry_7:
Name: Directory Brute Force CGI
Description: Common Gateway Interface Brute Force
Command: gobuster dir -u {Web_Proto}://{IP}:{Web_Port}/ -w /usr/share/seclists/Discovery/Web-Content/CGIs.txt -s 200

Entry_8:
Name: Nmap Web Vuln Scan
Description: Tailored Nmap Scan for web Vulnerabilities
Command: nmap -vv --reason -Pn -sV -p {Web_Port} --script=`banner,(http* or ssl*) and not (brute or broadcast or dos or external or http-slowloris* or fuzzer)` {IP}

Entry_9:
Name: Drupal
Description: Drupal Enumeration Notes
Note: |
git clone https://github.com/immunIT/drupwn.git for low hanging fruit and git clone https://github.com/droope/droopescan.git for deeper enumeration

Entry_10:
Name: WordPress
Description: WordPress Enumeration with WPScan
Command: |
?What is the location of the wp-login.php? Example: /Yeet/cannon/wp-login.php
wpscan --url {Web_Proto}://{IP}{1} --enumerate ap,at,cb,dbe && wpscan --url {Web_Proto}://{IP}{1} --enumerate u,tt,t,vp --passwords {Big_Passwordlist} -e

Entry_11:
Name: WordPress Hydra Brute Force
Description: Need User (admin is default)
Command: hydra -l admin -P {Big_Passwordlist} {IP} -V http-form-post '/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log In&testcookie=1:S=Location'

Entry_12:
Name: Ffuf Vhost
Description: Simple Scan with Ffuf for discovering additional vhosts
Command: ffuf -w {Subdomain_List}:FUZZ -u {Web_Proto}://{Domain_Name} -H "Host:FUZZ.{Domain_Name}" -c -mc all {Ffuf_Filters}
从零开始学习AWS黑客技术成为专家 htARTEHackTricks AWS Red Team Expert

其他支持HackTricks的方式