A quick and easy to use security reconnaissance webapp tool, does OSINT, analysis and red-teaming in both passive and active mode. Written in nodeJS and Electron.

Overview

ᵔᴥᵔ RedJoust

Twitter Follow GitHub issues GitHub closed issues GitHub license GitHub forks GitHub stars

A quick and easy to use security reconnaissance webapp tool, does OSINT, analysis and red-teaming in both passive and active mode. Written in nodeJS and Electron.

RedJoust


Join the community

Join the community of Kawaiipantsu / THUGS(red) and participate in the dev talk around Redjoust or simply just come visit us and chat about anything security related :) We love playing around with security. Also we have ctf events and small howto events for new players.

THUGS(red) Discord: https://discord.gg/Xg2jMdvss9

Its beginning to take shape !! I now have almost all internal logic in place, so i can now begin to develop a bit more on the actual intel gathering items.

Come back later :)

What it looks like (what i'm going for)

I have included 2 screenshots, i will update them regularly :)

  • First is just the main webapp default page where you can see i have set TARGEt and MODE and then relevent gather info items are shown and also target is parses and split out into other menu sections with each their own relevent gather info items!
  • Second is just other cases i wanted to show off, this is etc the Toolbox view of Base64

Main view

DNS Deep dive view

Showing of the internal whois client

Toolbox Base64 view

Toolbox Hashes view

Status on whats done

  • Boiler plate layout done (How i want the app to look)
  • Support for Light / Dark OS theme
  • Styled scrollbar (Not using OS dependent functionality)
    • Now working for menu sidebar and main window on overflow
  • User and system information
  • Fetching remote/public IP
  • Making sure its at least a bit secure
    • webSecurity on
    • devTools disabled (not doing development)
    • nodeIntegration enabled
    • contextIsolation enabled
    • Privacy mode (enable shading the window for privacy)
  • Privacy/lock screen mode
  • Menu/File bar with shortcuts and icons
  • About window
  • Links to github, wiki (help) and issues
  • Make logic to set "mode" ie. passive or active
  • Figure out how i want my "modules" logic
  • Make "mode" logic, modules should follow this
  • Make modules to handle recon/analysis/red-team functions (dropped)
  • Deciding on storage/settings node module
  • Initiating default settings/config
  • Reading config settings
  • Getting "theme" from config settings, only dark/light/system supported
  • Storing config states from session to session (like mode/target)
  • Honing in how i want to run items/collecting data
  • Functional statusbar (text/icon)
  • Statusbar keeps track on running items
  • Silly idle quotes in statusbar (for play and show)
  • Added debug toggle in config settings (etc hiding all console.log)
  • New Preferences window (To etc change config settings values)
  • showpage func to provide easy page logic with not found also
  • Item click logic, able to do different things depending on state (ready, working, done)
  • Simple spin animation on some of the statusbar icon presets (looks fun)
  • Cleaned up renderer.js to keep it minimal and everything in preload stage
  • New "is done" logic, and tried to comment on how to make "items" for this
  • 3 new menu sections, target ip, target hostname, target domain name will show on target selection
  • Reset functionallity to whipe slate clean so you can rerun jobs
  • Utilizing html data attributes to store item settings for easy implementation
  • Showing the config settings in preference window but just for show
  • New defaults scheme, no need for cutom defualtsettings writer function
  • Next page (goto next) continue logic, will itterate though mode, target and run if they are not set
  • Make default first page show easy 3 button layout - Set mode, set target, run
  • Default page done
  • Added target history, save last 50 targets for future options like autocomplete
  • Target history cleanup logic
  • Default item page layout/template
  • Add "safety" features as, toggle alerting if red-team mode is active
  • Make logic to set your target (ip, hostname or domain)
    • setTarget()
      • Show/hide the propper menu sections
      • Should be able to be run onload as well
      • update global vars
      • update conf settings storage
      • Needs to parse/detect if its hostname or ip
      • Enable to find domain name from hostname
      • if ip generate ip subnet info
      • Read from pagetarget
  • Target page, history autocomplete
  • Added toggle for external tools menu
  • Added toggle for streamer-mode (just removes obvious things like public ip)
  • Preparing for more config settings
    • default NS server to use (static or system)
  • Target logic done
  • updateItem visibility logic done
  • updateItem states logic done
  • Now able to set target via "enter" or "continue" on target page
  • Custom DNS NS server for resolver supported
    • Supports system (use system default ns servers)
    • Multiple custom via array
    • Single custom via string
  • Make simple DNS lookup module (json return) to test output for page
  • Complete toolbox tool: Base64 convertion
  • Complete toolbox tool: Hashes (Live hashing)
  • External URL link in toolbox logic (Used for CyberChef etc)
  • Toolbox can be toggled show/hide via View menu
  • WHOIS function done, using proper sockets and talk to whois query services (OS independent)
  • Domain name WHOIS item done
  • IP address WHOIS item done
  • IP address WHOIS now supports own specific whois server based on ip-net
  • Fixed FQDN bug where etc www.amazon.co.uk would think the domain was co.uk :) (classic!)
  • Up to date whois server list in json format (updated via a php script by me so semi auto)
  • hostname / domainname / ip menu font-size now autoscales to fit!
  • New target logic
    • if TARGET = IP ( Set IP + Reverse IP and set Hostname + Parse Hostname for Domainname and set )
    • if TARGET = HOSTNAME ( Set Hostname + Parse Hostname for Domainname and set + Resolve IP for Hostname and set )
    • if TARGET = DOMAINNAME ( Set Domainname + Resolve IP for Domainname and set + Reverse IP for Hostname and set )
  • Getting PowerMonitor to work, so i can attach to System OS idle/suspend events
  • Supports new "idle" mode, lockscreen for privacy when idle time is hit, unlocks when active again

TODO list (what i want to get done short term)

  • Way to find childs/processes of async things running
  • Make Preferences window useful
  • Preparing for more config settings
    • proxy usage
    • tor usage
    • specific item options
  • proxy/tor/socks logic
Comments
  • DNS Deep dive - Host fuzz broken shows

    DNS Deep dive - Host fuzz broken shows "failed" on all hosts even "found"

    So when running the deep dive on a target where i know that one of the fuzz words should resolve they are all marked as failed. I did change something previously about string sanitizing related to injection. Maybe i did something or changed something.

    But now when it resolves it's not getting the correct classes set. Therefore breaking the functionality.

    bug item-collector-passive 
    opened by kawaiipantsu 1
  • New toolbox item and bugfixes

    New toolbox item and bugfixes

    Added new toolbox item "Hash Attacking" that lookup a hash it can detect and tries to find the reverse text. Also known as hash brute forcing. We don't actually do any brute forcing as we use an external site.

    This is not yet hook into the "privacy mode" so even if privacy mode is enabled this tool will still work. This needs to be fixed in a future update.

    Also we fixed some problems with the resource monitor showing wrong numbers for "MEM Used"

    opened by kawaiipantsu 0
  • Crackfoo.net look up toolbox item

    Crackfoo.net look up toolbox item

    We need to have a toolbox lookup item for crackfoo.net. The do have an api interface but to keep the app free of api key settings for every e terns service for now I would rather have we parsed the results directly on the sites.

    Included is example in such solution

    curl -sX POST "http://crackfoo.net/?algo=$2" -d "hash=$1&sa=Search" | grep SUCCESS | awk '{print$9":"$13 }'

    new-item task item-collector-toolbox 
    opened by kawaiipantsu 0
  • Dev merge latest features and fixes

    Dev merge latest features and fixes

    So whats new ?

    • TXT records now do fingerprinting for vendor verification strings !
    • Fingerprint json file completion
    • Adding new fingerprint issue for (things not added yet)
    • Internal whois client bug fixes (now supports timeout and tells you about it)
    • Added Discord community link to README
    • Changed Streamer mode to Privacy mode. Better name. (For anyone who dont know, privacy mode disabled any api calls the application makes. Not the "intel" items but public ip api call etc.)
    opened by kawaiipantsu 0
  • Dev

    Dev

    New overhaul on store defaults/scheme validation. Now there is proper config validation and default values to return if config file is out of sync etc.

    opened by kawaiipantsu 0
  • Dev

    Dev

    More work on DNS deep dive redjoust item. It now does Host subdomain fuzzing ! With a static limited list and also custom list via config file. So you can have your own custom fuzz words you always fuzz for even if i change up the static list.

    In the Fuzz grid output list, you can see if a subdomain resolves to IPv4 (A) and/or IPv6 (AAAA). Also if you click one that resolves you will set that "subdomain/fuzz".oldtarget as your new target ! Makes it easy to traverse down the rabbit hole :D

    Also the MX lookup is now done.

    opened by kawaiipantsu 0
  • Target History (Max hist-target cleanup, wrong order)

    Target History (Max hist-target cleanup, wrong order)

    When adding more than 50 (default) targets next time you start Redjoust it's supposed to clean up the history list of old targets. Removing so there is only the last 50 targets saved. Obviously it should remove old-targets first :)

    Behavior expected / Reproduce

    • Add "target 1"
    • Add 49 more
    • Add "target 51"
    • Expect on next startup that "target 1" is removed

    Actual behavior

    • "target 51" is removed
    bug 
    opened by kawaiipantsu 0
  • Make a iknowwhatyoudownload.com item lookup

    Make a iknowwhatyoudownload.com item lookup

    I know that iknowwhatyoudownload.com requires API, so i will instead build a crawler and parse the site live. This will no doubt mean more work and things fail when ever they change up their site :) But it also means that i can keep the application from the need to etc share an api key or that the "user" suddenly is responsible for getting an API key in order for that item-lookup to work.

    This is still just a "nice to have" idea. Would obviously be a "passive" item under "IP target".

    item-collector-passive new-item task 
    opened by kawaiipantsu 0
  • Make a abuseipdb.com item lookup

    Make a abuseipdb.com item lookup

    I know that abuseipdb.com requires API, so i will instead build a crawler and parse the site live. This will no doubt mean more work and things fail when ever they change up their site :) But it also means that i can keep the application from the need to etc share an api key or that the "user" suddenly is responsible for getting an API key in order for that item-lookup to work.

    This is still just a "nice to have" idea. Would obviously be a "passive" item under "IP target".

    item-collector-passive new-item task 
    opened by kawaiipantsu 0
  • Overall

    Overall "Recon Items" list for needed startup passive,active and redteam items

    Overall "Recon Items" list for needed startup passive,active and redteam items

    Ths is the overall list that we want to fufill before releaseing the first beta test client of Redjoust. We want a few items in each category before we start up. Please remember we have 3 target types and 3 item types. So if we list it as seen from item types then you need to provide what target types it supports

    PASSIVE items

    For now we start with a total of 5 passive items showing

    • [ ] DNS Deep-Dive ( #23 )
      • Show on domain target
      • Show on host-name target
    • [ ] Certificate Transparency (CT) Lookup ( #24 )
      • Show on domain target
    • [x] Whois
      • Show on domain target
      • Show on IP target

    image

    ACTIVE items

    For now we start with a total of 4 active items showing

    • [ ] Simple service detector (port-scanning)
      • Build up overview of each target and save result for them
      • Show on host-name target
      • Show on domain target
    • [ ] HTTP/Web Digger
      • Available if sub-target port 80,443 found in service results (Not sure how this will work)
      • Show on host-name target
      • Show on domain target

    REDTEAM items

    For now we start with a total of 1 redteam items showing

    • [ ] Web Fuzz (Simple)
      • Available if sub-target port 80,443 found in service results (Not sure how this will work)
      • Show on host-name target
      • Show on domain target
    item-collector-passive item-collector-active item-collector-redteam new-item task 
    opened by kawaiipantsu 0
  • Certificate Transparency (CT) Searching/Lookup item

    Certificate Transparency (CT) Searching/Lookup item

    Certificate Transparency (CT) Searching/Lookup item

    I need to construct the last passive item module i need for the first beta test release. Then i need to move on to the active items. But for now we need a CT lookup item.

    I will try to make it so that at least it's showing the same as my recon-ct script.

    item-collector-passive new-item task 
    opened by kawaiipantsu 0
  • Fingerprinting vendor verification strings

    Fingerprinting vendor verification strings

    Fingerprinting vendor verification strings

    This might be a long "task" as it's ever growing. All fingerprints i find along the way will be added here and once added to the JSON file with regexp, descriptions and a title it can be checked as done for each one. This list does not include the already 25 fingerprints i have added. So please before adding new string here, check if it's already in the file by doing a:

    Want to contribute ? This is the file we are working on: https://github.com/kawaiipantsu/redjoust/blob/dev/assets/json/online-service-provider-fingerprint.json

    The steps to help: Basically the task is to choose a verification-string from below and then do the following research:

    • Figure out who it belongs to
    • Figure out the specific service/product it belongs to
    • Figure out the simplest regex to uniqliy identify it
        1. a test regexp
        1. a match regexp (that matches the hash/data)
    • Use the JSON template and add it to the file :)

    JSON Template for new fingerprint

    {
        "fingerprintName": "<short 40-70chars detailed output string for fingerprint>",
        "inCategoeries": [0],
        "serviceProvider": {
            "name": "<company name>",
            "desc": "<company short info>",
            "url": "<company/product link>"
        },
        "serviceHash": {
            "original": "<verification string as seen in the wild/from the task list)>",
            "comment": "",
            "regexp": {
                "test": "/^<regexp-test>/i",
                "match": "/^<regexp-match (.+)>/i"
            }
        }
    }
    
    # To list all known test strings
    cat online-service-provider-fingerprint.json | jq '.knownFingerprints[].serviceHash.regexp.test'
    
    # To search for a specific string
    cat online-service-provider-fingerprint.json | jq '.knownFingerprints[].serviceHash.regexp.test' | grep "string"
    

    Vendor verification strings seen in the wild

    This is the list of evergrowing strings seen in the wild that i would love to be able to fingerprint :) So digg in !!

    • [ ] _spf.q4press.com.
    • [ ] 126953328-4422040
    • [ ] 688162515-4422037
    • [ ] 8RPDXjBzBS9tu7Pbysu7qCACrwXPoDV8ZtLfthTnC4y9VJFLd84it5sQlEITgSLJ4KOIA8pBZxmyvPujuUvhOg==
    • [ ] 9rHeUd6AiQ30jFgENxeGX6CKgbSmFB/NeV5oCOQS5PbafVN66NOLFLcsuixmOo1krFPgHLMt7TCEL3iJOUF1mQ==
    • [ ] d1xTs9+kADZZSz3bPphLpkMXXxBGjqn5vsQHhi2M6lo0r8AdIbm6j8LfQXPujsywVgeGSP+AXWX0vO9Iep5cUg==
    • [ ] zpSH7Ye/seyY61hH8+Rq5Kb+ZJ9hDa+qeFBaD/6sPAAg+2POkGdP0byHb1pFVK9uZgYF2AIosUSZq4MB17oydQ==
    • [ ] SUyD3kNWX8BcKENoplaQAU6nSMzvEsoota+RWH5YYE3xC7oadZybEhbiad16zkVvg0H/hifubMBuZS50OVuBgQ==
    • [ ] 907D-6CE2-7BD0-FF0C-7E83-E21D-AD2B-DD27
    • [ ] 926723159-3188410
    • [ ] adobe-aem-verification=www-idev-cloud.cisco.com/24859/366204/1b990ef7-ff88-4938-bdd9-8458cc152f57
    • [x] adobe-idp-site-verification=c900335b8b825859b51473b9943a3880ae795df47426483b0a67630377a902f5
    • [ ] aliyun-site-verification=47b62ce6-8506-41f0-bb2f-07b3a645d506
    • [ ] apple-domain-verification=qOInipPgso3W8cmK
    • [ ] asv=ac90e11808e87cfbf8768e69819b1aca
    • [ ] bugcrowd-verification=4cb12e80d1cc53286a15726ee4bf8f6e
    • [ ] c900335b8b825859b51473b9943a3880ae795df47426483b0a67630377a902f5
    • [ ] campaign.dev.lcorigins.lego.com=l8qgvnfp0t9totd0c69s4t988i
    • [x] cloudhealth=1659ead7-5c47-4817-a0d3-94b456169734
    • [ ] d365mktkey=4d8bnycx40fy3581petta4gsf
    • [ ] docker-verification=c9680cb5-881b-4f8b-a803-42a918cdcf57
    • [ ] duo_sso_verification=ntfsmAmvYMYMnwjgk6SpssPl5t7hZADsv9NCBLtCS7AnylaapsIfsFB9k6PItJVr
    • [ ] Dynatrace-site-verification=e1eb3fe5-f14a-4a0c-b8b6-1c5f380cb804__dfadqbk4o2ngu8n8bho3kom0t
    • [x] fastly-domain-delegation-w049tcm0w48ds-341317-20210209
    • [ ] identrust_validate=JnSSfW+y58dEQju6mVBe8lu1MGFepXI50P27OE1ZZQmL
    • [ ] intercom-domain-validation=8806e2f9-7626-4d9e-ae4d-2d655028629a
    • [ ] mailigen-site-verification=58788cc4908d5697c6ea4801a7fea3f6
    • [ ] mbnfb6mopftl3f3t2it9tbev6e
    • [ ] miro-verification=53bf5ccd47cb6239fe5cf14c3b328050dd5679ac
    • [ ] mixpanel-domain-verify=2c6cb1aa-a3fb-44b9-ad10-d6b744109963
    • [ ] mixpanel-domain-verify=612e2914-a7fb-4965-95d5-19acc02797df
    • [ ] mongodb-site-verification=mtrxHeW3jOzWtwEwnOLpeQo9NXh6Lqas
    • [ ] MS=B03F616C5688CE657CC2FA94EF4E72109431092B
    • [ ] NS_monitor
    • [ ] onetrust-domain-verification=20345dd0c33946f299f14c1498b41f67
    • [ ] OSSRH-65508
    • [ ] pbcpcw84sfk7w4nhm7dwyg2k3gx0t4xr
    • [ ] prod-bec-dk.azurewebsites.net
    • [ ] QuoVadis=94d4ae74-ecd5-4a33-975e-a0d7f546c801
    • [ ] SFMC-o7HX74BQ79k7glpt_qjlF2vmZO9DpqLtYxKLwg87
    • [ ] site24x7-signals-domain-verification=df57290b9f0e5eb1fbcaca5849cc43b5
    • [ ] sonatype-verification=OSSRH-58518
    • [ ] sprig-site-verification=p7Xa5X9lnBvzD3plB6lcrXfhabY2uX3NAwyEGPm4C98
    • [ ] stripe-verification=c52e56dae78932924b24e718a7850f861712da65458f8c40bab37393ccb56854
    • [ ] t7sebee51jrj7vm932k531hipa
    • [ ] teamviewer-sso-verification=db1a05bb09054296b4fad49caec6cdc9
    • [ ] wiz-domain-verification=af241e6396696eedf1b361891435f6b21bdebb5621941d99279298c076b5bf5f
    • [ ] wrike-verification=MzI3NzM2ODo2NDk5MjE4NjQ2MWJmOTEwMGMxM2MzNzJmNWJlY2U5ZDU4MmVlNzQ2NWU4MTY5OWJjMjlmYjQ4Mjc5M2JiMzky
    • [ ] ZOOM_verify_PeuZagN7TzybBaD-uxsGAw
    • [ ] Zoom=13284637
    enhancement item-collector-passive task 
    opened by kawaiipantsu 0
  • Preferences windows (Make useful)

    Preferences windows (Make useful)

    The current preferences window is not very useful, so far i have only made it so that it shows the users config file directly as it's loaded by the electron-storage module. We need to make the preferences page into an actual thing that can change the settings.

    Task

    • It should be able to change all config options (that are use related)
    • Dynamically applied, no need for "apply/save"
    • Show what is default values
    • Extra things that might be cool
      • Option to open config directly in editor for "advanced" operation
      • Import / Export features
    enhancement task 
    opened by kawaiipantsu 0
Owner
Dave
Packages comes in all shapes and sizes, Wireshark is like Santa's magic bag! (:
Dave
Infoooze is an Open-source intelligence (OSINT) tool in NodeJs.

Infoooze is an Open-source intelligence (OSINT) tool in NodeJs. It provides various modules that allow efficient searches.

Prateek Singh 259 Jan 4, 2023
Security tool + attack database used to take quick action against newly-discovered vulnerabilities in the blockchain.

SolidGuard Version: v1.0.1 SolidGuard is a Blockchain Security tool catered towards organizations who manages decentralized applications on the Ethere

Team SolidGuard 4 Jan 3, 2023
LunaSec - Open Source Security Software built by Security Engineers. Scan your dependencies for Log4Shell, or add Data Tokenization to prevent data leaks. Try our live Tokenizer demo: https://app.lunasec.dev

Our Software We're a team of Security Engineers on a mission to make awesome Open Source Application Security tooling. It all lives in this repo. Here

LunaSec 1.2k Jan 7, 2023
Sachit Yadav 6 Nov 3, 2022
MDN-Dark-Mode - Simple extension to add a dark mode with different themes to the MDN Web Docs website

MDN-Dark-Mode Information Chrome and Firefox extension that adds a dark mode wit

Santiago Galán Barlo 2 Mar 18, 2022
🌓 Add dark mode/night mode custom elements to your website.

dark-mode A custom element that allows you to easily put a Dark Mode ?? toggle. so you can initially adhere to your users' preferences according to pr

小弟调调™ 12 Oct 20, 2022
RedEye is a visual analytic tool supporting Red & Blue Team operations

RedEye Red Team C2 Log Visualization RedEye is an open-source analytic tool developed by CISA and DOE’s Pacific Northwest National Laboratory to assis

Cybersecurity and Infrastructure Security Agency 2.1k Jan 3, 2023
🗺 A map of OSINT tools.

?? ️‍ Malfrat's OSINT Map ?? Available here ! Malfrat's OSINT Map is an online tree of selected useful tools made for OSINT purposes, made to help you

Malfrats Industries 252 Dec 30, 2022
OSINT - Data Visualization - Blockchain - Awareness - Scam

poorSKeme OSINT - Data Visualization - Blockchain - Awareness - Scam Install Go to this site and click on the downdload button Or go to release sectio

Kenn Brothers Org 15 Dec 9, 2022
A quick and powerful plugin for your pull-to-refresh needs in your webapp.

PulltoRefresh.js • Demos A small, but powerful Javascript library crafted to power your webapp's pull to refresh feature. No markup needed, highly cus

Box Factura 3.9k Jan 6, 2023
A CLI tool to create a NodeJS project with TypeScript CTSP is a CLI tool to make easier to start a new NodeJS project and configure Typescript on it.

CTSP- Create TS Project A CLI tool to create a NodeJS project with TypeScript CTSP is a CLI tool to make easier to start a new NodeJS project and conf

Jean Rodríguez 7 Sep 13, 2022
Plain JavaScript version of jQuery's slideToggle(), slideDown(), & slideUp(), but does not use display: none.

dom-slider It works like jQuery's slideToggle(), slideDown(), & slideUp(), but does not use display: none. Uses CSS3 transitions and element.scrollHei

Brenton Cozby 56 Dec 27, 2022
A pleasing darker theme made mostly with complementary purple and blue colors, occasionally with a touch of pink or red.

Nebula Float away in space with a beautiful blurple oriented color theme. DISCLAIMER: ⚠️ This theme is not as high contrast as other themes. A pleasin

catgirlkelly 5 Nov 23, 2022
This document introduces an early implementation of the Node-RED runtime that runs on resource-constrained microcontrollers (MCUs).

Node-RED MCU Edition Copyright 2022, Moddable Tech, Inc. All rights reserved. Peter Hoddie Updated June 25, 2022 Introduction This document introduces

Peter Hoddie 53 Jan 3, 2023
Open Horizon service container demonstrating Node-RED Object Detection

service-node-red-object-detection Open Horizon service container demonstrating Node-RED Object Detection. This is an Open Horizon configuration to dep

null 4 Dec 25, 2022
VS Code extension that adds a red error squiggle to every word in your code.

Dumbisense Dumbisense is a VS Code extension that adds a red error squiggle to every word in your code, with an interesting error message and dino ima

Maggie Liu 9 Sep 3, 2022
Scrape tweets from Twitter search results based on keywords and date range using Playwright. Save scraped tweets in a CSV file for easy analysis

Tweet Harvest (Twitter Crawler) Tweet Harvest is a command-line tool that uses Playwright to scrape tweets from Twitter search results based on specif

Helmi Satria 33 Aug 9, 2023
A fast and powerful http toolkit that take a list of domains to find active domains and other information such as status-code, title, response-time , server, content-type and many other

HTTPFY curently in beta so you may see problems. Please open a Issue on GitHub and report them! A Incredible fast and Powerful HTTP toolkit Report Bug

DevXprite 44 Dec 22, 2022
JavaScript Express.js app serving static vanilla JS. This sample app is used in Microsoft Docs to demonstrate how to integrate Azure Storage, Azure Cosmos DB, and Azure Active Directory.

JavaScript on Azure Learn Path - Module 2 - Deploying a basic app to Azure This Learn module requires the following Azure resources to deploy correctl

Azure Samples 13 Dec 31, 2022