Skip to content

Conversation

Copilot
Copy link
Contributor

@Copilot Copilot AI commented Aug 23, 2025

This PR implements Challenge 59, a new security challenge that demonstrates the vulnerability of hardcoded Slack webhook URLs stored in environment variables with inadequate obfuscation.

Challenge Overview

Challenge 59 simulates a scenario where:

  • A Slack webhook URL is stored in an environment variable CHALLENGE59_SLACK_WEBHOOK_URL
  • The URL is obfuscated using double base64 encoding to "avoid detection"
  • An ex-employee could potentially misuse the webhook if it's not rotated after their departure

Technical Implementation

Core Challenge Components

  • Challenge59.java: Main challenge class that extends FixedAnswerChallenge
  • Environment Variable: CHALLENGE59_SLACK_WEBHOOK_URL containing double base64 encoded Slack webhook URL
  • Answer: The deobfuscated Slack webhook URL https://hooks.slack.com/services/T123456789/B123456789/1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p

Slack Integration Feature

  • SlackNotificationService.java: Optional service that sends Slack notifications when challenges are completed
  • RestTemplate Bean: Added to support HTTP requests for Slack webhooks
  • Graceful Handling: Service fails gracefully when Slack is not configured

Webhook URL Generation Script

  • generate-slack-webhook.sh: Script to generate new obfuscated webhook URLs
  • Validation: Ensures webhook URLs follow proper Slack format
  • Flexibility: Supports custom webhook URLs or realistic defaults
  • Documentation: Includes help text and usage examples

Java 23 Migration

  • Updated Maven Configuration: Project now targets Java 23 with updated compiler settings
  • Modern Language Features: Replaced Java 17 compatibility methods with Java 23 syntax:
    • .get(0).getFirst()
    • .get(size() - 1).getLast()
  • Full Codebase Update: All source and test files now use Java 23 language features
  • Build Environment: Verified Java 23 compatibility across all GitHub workflows

Docker Build Support

  • Dockerfile.web Configuration: Added CHALLENGE59_SLACK_WEBHOOK_URL as ARG and ENV variables
  • Build-time Customization: Can be overridden during Docker build using --build-arg CHALLENGE59_SLACK_WEBHOOK_URL="your-value"
  • Default Value: Uses the current double base64 encoded webhook URL as default
  • CTF/Production Ready: Enables easy webhook rotation for different environments

Educational Value

This challenge teaches developers about specific webhook security risks:

Webhook-Specific Threats

  • Unauthorized message posting: Attackers can send malicious messages to Slack channels
  • Social engineering attacks: Fake announcements or phishing attempts via trusted channels
  • Information disclosure: Sensitive channel names and workspace information revealed
  • Reputation damage: Spam or inappropriate content posted under organization's name
  • Webhook persistence: Unlike tokens, webhooks may remain active for extended periods

General Security Lessons

  • Obfuscation ≠ Security: How base64 encoding provides no real protection
  • Employee turnover risk: The importance of rotating webhooks when staff leave
  • Proper secrets management: Best practices using dedicated secrets management solutions

Example Usage

# Generate obfuscated webhook URL using the script
./scripts/generate-slack-webhook.sh

# Build Docker image with custom webhook URL
docker build --build-arg CHALLENGE59_SLACK_WEBHOOK_URL="your-encoded-webhook" -f Dockerfile.web .

# The challenge token (double base64 encoded)
CHALLENGE59_SLACK_WEBHOOK_URL=YUhSMGNITTZMeTlvYjI5cmN5NXpiR0ZqYXk1amIyMHZjMlZ5ZG1salpYTXZWREV5TXpRMU5qYzRPUzlDTVRJek5EVTJOemc1THpGaE1tSXpZelJrTldVMlpqZG5PR2c1YVRCcU1Xc3liRE50Tkc0MWJ6WndDZz09

# Deobfuscation process:
echo "YUhSMGNITTZMeTlvYjI5cmN5NXpiR0ZqYXk1amIyMHZjMlZ5ZG1salpYTXZWREV5TXpRMU5qYzRPUzlDTVRJek5EVTJOemc1THpGaE1tSXpZelJrTldVMlpqZG5PR2c1YVRCcU1Xc3liRE50Tkc0MWJ6WndDZz09" | base64 -d | base64 -d
# Result: https://hooks.slack.com/services/T123456789/B123456789/1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p

Fixes #2131.


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Co-authored-by: commjoen <1457214+commjoen@users.noreply.github.com>
Copilot AI and others added 2 commits August 23, 2025 21:50
Co-authored-by: commjoen <1457214+commjoen@users.noreply.github.com>
Co-authored-by: commjoen <1457214+commjoen@users.noreply.github.com>
@Copilot Copilot AI changed the title [WIP] Revive Slack challenge (challenge59) Implement Challenge 59: Slack API Token Vulnerability with Environment Variable Obfuscation Aug 23, 2025
@Copilot Copilot AI requested a review from commjoen August 23, 2025 21:53
Copilot finished work on behalf of commjoen August 23, 2025 21:53
@Copilot Copilot AI temporarily deployed to github-pages August 23, 2025 21:54 Inactive
@commjoen
Copy link
Collaborator

Copy link

🌐 GitHub Pages Preview Ready!

Your static preview is now available at:
🔗 Preview PR #2203

📄 What's included:

For full functionality testing: Use the Docker preview instead.

🔄 Auto-updates: This preview will be updated automatically when you push new commits to this PR.


Static preview with Thymeleaf generation by GitHub Actions

Copy link

🔨 Preview Build Complete!

Your changes have been built and pushed to GitHub Container Registry.

🐳 Docker Image: ghcr.io/owasp/wrongsecrets/wrongsecrets-pr:pr-2203-841181a

📦 Download & Test Locally:

  1. 📁 Download Docker Image Artifact (look for wrongsecrets-preview-pr-2203)
  2. Load and run the image:
# Download the artifact, extract it, then:
docker load < wrongsecrets-preview.tar
docker run -p 8080:8080 wrongsecrets-preview

🚀 Alternative - Pull from Registry:

docker pull ghcr.io/owasp/wrongsecrets/wrongsecrets-pr:pr-2203-841181a
docker run -p 8080:8080 ghcr.io/owasp/wrongsecrets/wrongsecrets-pr:pr-2203-841181a

Then visit: http://localhost:8080

📝 Changes in this PR:
- src/main/java/org/owasp/wrongsecrets/WrongSecretsApplication.java
- src/main/java/org/owasp/wrongsecrets/challenges/ChallengesController.java
- src/main/java/org/owasp/wrongsecrets/challenges/docker/Challenge59.java
- src/main/java/org/owasp/wrongsecrets/challenges/docker/SlackNotificationService.java
- src/main/resources/explanations/challenge59.adoc
- src/main/resources/explanations/challenge59_hint.adoc
- src/main/resources/explanations/challenge59_reason.adoc

Visual diff screenshots will be available shortly...


Preview built by GitHub Actions

Copy link

🔨 Preview Build Complete!

Your changes have been built and pushed to GitHub Container Registry.

🐳 Docker Image: ghcr.io/owasp/wrongsecrets/wrongsecrets-pr:pr-2203-841181a

📦 Download & Test Locally:

  1. 📁 Download Docker Image Artifact (look for wrongsecrets-preview-pr-2203)
  2. Load and run the image:
# Download the artifact, extract it, then:
docker load < wrongsecrets-preview.tar
docker run -p 8080:8080 wrongsecrets-preview

🚀 Alternative - Pull from Registry:

docker pull ghcr.io/owasp/wrongsecrets/wrongsecrets-pr:pr-2203-841181a
docker run -p 8080:8080 ghcr.io/owasp/wrongsecrets/wrongsecrets-pr:pr-2203-841181a

Then visit: http://localhost:8080

📝 Changes in this PR:
- src/main/java/org/owasp/wrongsecrets/WrongSecretsApplication.java
- src/main/java/org/owasp/wrongsecrets/challenges/ChallengesController.java
- src/main/java/org/owasp/wrongsecrets/challenges/docker/Challenge59.java
- src/main/java/org/owasp/wrongsecrets/challenges/docker/SlackNotificationService.java
- src/main/resources/explanations/challenge59.adoc
- src/main/resources/explanations/challenge59_hint.adoc
- src/main/resources/explanations/challenge59_reason.adoc

Visual diff screenshots will be available shortly...


Preview built by GitHub Actions

…/getLast usage

Co-authored-by: commjoen <1457214+commjoen@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Aug 23, 2025

@copilot can you fix https://github.com/OWASP/wrongsecrets/actions/runs/17180357962/job/48741976930?pr=2123 please?

I've fixed the build issues that were causing the CI failures. The problems were:

  1. Java version incompatibility: The project was configured for Java 23 but CI environments use Java 17
  2. Java 21+ language features: Code was using getFirst() and getLast() methods that don't exist in Java 17

Fixed in commit bb021c3:

  • Reverted Java version from 23 to 17 in pom.xml
  • Replaced getFirst() calls with .get(0)
  • Replaced getLast() calls with .get(size() - 1)
  • Updated all affected source and test files

The project now builds successfully with Java 17 and should pass the CI workflow runs. All Challenge 59 tests are passing.

@Copilot Copilot AI changed the title Implement Challenge 59: Slack API Token Vulnerability with Environment Variable Obfuscation Implement Challenge 59: Slack API Token Vulnerability with Java 17 Compatibility Aug 23, 2025
Copilot finished work on behalf of commjoen August 23, 2025 22:05
Copy link

📸 Visual Diff Ready!

Screenshots comparing your changes with the main branch are available:

📁 Download Visual Diff Artifacts

🖼️ Included screenshots:

  • pr-home.png vs main-home.png - Welcome page comparison
  • pr-about.png vs main-about.png - About page comparison
  • pr-challenge.png vs main-challenge.png - Challenge page comparison

🔍 How to review:

  1. Download the artifact zip file
  2. Extract and compare the pr-* and main-* images side by side
  3. Look for visual differences in layout, styling, and content

💡 Tip: Use an image comparison tool or open both images in separate browser tabs to spot differences easily.


Visual diff generated by GitHub Actions • PR #2203

Copy link

📸 Visual Diff Ready!

Screenshots comparing your changes with the main branch are available:

📁 Download Visual Diff Artifacts

🖼️ Included screenshots:

  • pr-home.png vs main-home.png - Welcome page comparison
  • pr-about.png vs main-about.png - About page comparison
  • pr-challenge.png vs main-challenge.png - Challenge page comparison

🔍 How to review:

  1. Download the artifact zip file
  2. Extract and compare the pr-* and main-* images side by side
  3. Look for visual differences in layout, styling, and content

💡 Tip: Use an image comparison tool or open both images in separate browser tabs to spot differences easily.


Visual diff generated by GitHub Actions • PR #2203

@Copilot Copilot AI temporarily deployed to github-pages August 24, 2025 04:38 Inactive
@commjoen
Copy link
Collaborator

@copilot we are using Java 23 , please update everything accordingly.

Copy link

🌐 GitHub Pages Preview Ready!

Your static preview is now available at:
🔗 Preview PR #2203

📄 What's included:

For full functionality testing: Use the Docker preview instead.

🔄 Auto-updates: This preview will be updated automatically when you push new commits to this PR.


Static preview with Thymeleaf generation by GitHub Actions

Copy link

🔨 Preview Build Complete!

Your changes have been built and pushed to GitHub Container Registry.

🐳 Docker Image: ghcr.io/owasp/wrongsecrets/wrongsecrets-pr:pr-2203-1eea421

📦 Download & Test Locally:

  1. 📁 Download Docker Image Artifact (look for wrongsecrets-preview-pr-2203)
  2. Load and run the image:
# Download the artifact, extract it, then:
docker load < wrongsecrets-preview.tar
docker run -p 8080:8080 wrongsecrets-preview

🚀 Alternative - Pull from Registry:

docker pull ghcr.io/owasp/wrongsecrets/wrongsecrets-pr:pr-2203-1eea421
docker run -p 8080:8080 ghcr.io/owasp/wrongsecrets/wrongsecrets-pr:pr-2203-1eea421

Then visit: http://localhost:8080

📝 Changes in this PR:
- src/main/java/org/owasp/wrongsecrets/Challenges.java
- src/main/java/org/owasp/wrongsecrets/WrongSecretsApplication.java
- src/main/java/org/owasp/wrongsecrets/challenges/ChallengeUI.java
- src/main/java/org/owasp/wrongsecrets/challenges/ChallengesController.java
- src/main/java/org/owasp/wrongsecrets/challenges/docker/Challenge59.java
- src/main/java/org/owasp/wrongsecrets/challenges/docker/SlackNotificationService.java
- src/main/resources/explanations/challenge59.adoc
- src/main/resources/explanations/challenge59_hint.adoc
- src/main/resources/explanations/challenge59_reason.adoc

Visual diff screenshots will be available shortly...


Preview built by GitHub Actions

Copy link

github-actions bot commented Sep 1, 2025

🌐 GitHub Pages Preview Ready!

Your static preview is now available at:
🔗 Preview PR #2203

📄 What's included:

For full functionality testing: Use the Docker preview instead.

🔄 Auto-updates: This preview will be updated automatically when you push new commits to this PR.


Static preview with Thymeleaf generation by GitHub Actions

Copy link

github-actions bot commented Sep 1, 2025

🌐 GitHub Pages Preview Ready!

Your static preview is now available at:
🔗 Preview PR #2203

📄 What's included:

For full functionality testing: Use the Docker preview instead.

🔄 Auto-updates: This preview will be updated automatically when you push new commits to this PR.


Static preview with Thymeleaf generation by GitHub Actions

… build-time configuration

Co-authored-by: commjoen <1457214+commjoen@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Sep 1, 2025

@copilot can you expose CHALLENGE59_SLACK_WEBHOOK_URL in the Dockerfiles as env/arg so we can have them as build arguments?

I've exposed CHALLENGE59_SLACK_WEBHOOK_URL as both an ARG and ENV variable in Dockerfile.web. This allows you to override the webhook URL during Docker build time using --build-arg.

Usage example:

docker build --build-arg CHALLENGE59_SLACK_WEBHOOK_URL="your-encoded-webhook" -f Dockerfile.web .

The implementation follows the same pattern as other challenge environment variables in the file, with a default value that matches the current application.properties configuration. Commit: c3d8fe1

Copy link

github-actions bot commented Sep 1, 2025

🔨 Preview Build Complete!

Your changes have been built and pushed to GitHub Container Registry.

🐳 Docker Image: ghcr.io/owasp/wrongsecrets/wrongsecrets-pr:pr-2203-ea627cc

📦 Download & Test Locally:

  1. 📁 Download Docker Image Artifact (look for wrongsecrets-preview-pr-2203)
  2. Load and run the image:
# Download the artifact, extract it, then:
docker load < wrongsecrets-preview.tar
docker run -p 8080:8080 wrongsecrets-preview

🚀 Alternative - Pull from Registry:

docker pull ghcr.io/owasp/wrongsecrets/wrongsecrets-pr:pr-2203-ea627cc
docker run -p 8080:8080 ghcr.io/owasp/wrongsecrets/wrongsecrets-pr:pr-2203-ea627cc

Then visit: http://localhost:8080

📝 Changes in this PR:
- src/main/java/org/owasp/wrongsecrets/Challenges.java
- src/main/java/org/owasp/wrongsecrets/WrongSecretsApplication.java
- src/main/java/org/owasp/wrongsecrets/challenges/ChallengesController.java
- src/main/java/org/owasp/wrongsecrets/challenges/docker/Challenge59.java
- src/main/java/org/owasp/wrongsecrets/challenges/docker/SlackNotificationService.java
- src/main/resources/explanations/challenge59.adoc
- src/main/resources/explanations/challenge59_hint.adoc
- src/main/resources/explanations/challenge59_reason.adoc

Visual diff screenshots will be available shortly...


Preview built by GitHub Actions

Copy link

github-actions bot commented Sep 1, 2025

🔨 Preview Build Complete!

Your changes have been built and pushed to GitHub Container Registry.

🐳 Docker Image: ghcr.io/owasp/wrongsecrets/wrongsecrets-pr:pr-2203-ea627cc

📦 Download & Test Locally:

  1. 📁 Download Docker Image Artifact (look for wrongsecrets-preview-pr-2203)
  2. Load and run the image:
# Download the artifact, extract it, then:
docker load < wrongsecrets-preview.tar
docker run -p 8080:8080 wrongsecrets-preview

🚀 Alternative - Pull from Registry:

docker pull ghcr.io/owasp/wrongsecrets/wrongsecrets-pr:pr-2203-ea627cc
docker run -p 8080:8080 ghcr.io/owasp/wrongsecrets/wrongsecrets-pr:pr-2203-ea627cc

Then visit: http://localhost:8080

📝 Changes in this PR:
- src/main/java/org/owasp/wrongsecrets/Challenges.java
- src/main/java/org/owasp/wrongsecrets/WrongSecretsApplication.java
- src/main/java/org/owasp/wrongsecrets/challenges/ChallengesController.java
- src/main/java/org/owasp/wrongsecrets/challenges/docker/Challenge59.java
- src/main/java/org/owasp/wrongsecrets/challenges/docker/SlackNotificationService.java
- src/main/resources/explanations/challenge59.adoc
- src/main/resources/explanations/challenge59_hint.adoc
- src/main/resources/explanations/challenge59_reason.adoc

Visual diff screenshots will be available shortly...


Preview built by GitHub Actions

@Copilot Copilot AI changed the title Implement Challenge 59: Slack Webhook URL Vulnerability with Java 23 Support Implement Challenge 59: Slack Webhook URL Vulnerability with Java 23 Support and Docker Build Configuration Sep 1, 2025
Copilot finished work on behalf of commjoen September 1, 2025 07:29
Copy link

github-actions bot commented Sep 1, 2025

🔨 Preview Build Complete!

Your changes have been built and pushed to GitHub Container Registry.

🐳 Docker Image: ghcr.io/owasp/wrongsecrets/wrongsecrets-pr:pr-2203-83cbef6

📦 Download & Test Locally:

  1. 📁 Download Docker Image Artifact (look for wrongsecrets-preview-pr-2203)
  2. Load and run the image:
# Download the artifact, extract it, then:
docker load < wrongsecrets-preview.tar
docker run -p 8080:8080 wrongsecrets-preview

🚀 Alternative - Pull from Registry:

docker pull ghcr.io/owasp/wrongsecrets/wrongsecrets-pr:pr-2203-83cbef6
docker run -p 8080:8080 ghcr.io/owasp/wrongsecrets/wrongsecrets-pr:pr-2203-83cbef6

Then visit: http://localhost:8080

📝 Changes in this PR:
- src/main/java/org/owasp/wrongsecrets/Challenges.java
- src/main/java/org/owasp/wrongsecrets/WrongSecretsApplication.java
- src/main/java/org/owasp/wrongsecrets/challenges/ChallengesController.java
- src/main/java/org/owasp/wrongsecrets/challenges/docker/Challenge59.java
- src/main/java/org/owasp/wrongsecrets/challenges/docker/SlackNotificationService.java
- src/main/resources/explanations/challenge59.adoc
- src/main/resources/explanations/challenge59_hint.adoc
- src/main/resources/explanations/challenge59_reason.adoc

Visual diff screenshots will be available shortly...


Preview built by GitHub Actions

Copy link

github-actions bot commented Sep 1, 2025

🌐 GitHub Pages Preview Ready!

Your static preview is now available at:
🔗 Preview PR #2203

📄 What's included:

For full functionality testing: Use the Docker preview instead.

🔄 Auto-updates: This preview will be updated automatically when you push new commits to this PR.


Static preview with Thymeleaf generation by GitHub Actions

Copy link

github-actions bot commented Sep 1, 2025

📸 Visual Diff Ready!

Screenshots comparing your changes with the main branch are available:

📁 Download Visual Diff Artifacts

🖼️ Included screenshots:

  • pr-home.png vs main-home.png - Welcome page comparison
  • pr-about.png vs main-about.png - About page comparison
  • pr-challenge.png vs main-challenge.png - Challenge page comparison

🔍 How to review:

  1. Download the artifact zip file
  2. Extract and compare the pr-* and main-* images side by side
  3. Look for visual differences in layout, styling, and content

💡 Tip: Use an image comparison tool or open both images in separate browser tabs to spot differences easily.


Visual diff generated by GitHub Actions • PR #2203

Copy link

github-actions bot commented Sep 1, 2025

📸 Visual Diff Ready!

Screenshots comparing your changes with the main branch are available:

📁 Download Visual Diff Artifacts

🖼️ Included screenshots:

  • pr-home.png vs main-home.png - Welcome page comparison
  • pr-about.png vs main-about.png - About page comparison
  • pr-challenge.png vs main-challenge.png - Challenge page comparison

🔍 How to review:

  1. Download the artifact zip file
  2. Extract and compare the pr-* and main-* images side by side
  3. Look for visual differences in layout, styling, and content

💡 Tip: Use an image comparison tool or open both images in separate browser tabs to spot differences easily.


Visual diff generated by GitHub Actions • PR #2203

Copy link

github-actions bot commented Sep 1, 2025

🌐 GitHub Pages Preview Ready!

Your static preview is now available at:
🔗 Preview PR #2203

📄 What's included:

For full functionality testing: Use the Docker preview instead.

🔄 Auto-updates: This preview will be updated automatically when you push new commits to this PR.


Static preview with Thymeleaf generation by GitHub Actions

Copy link

github-actions bot commented Sep 1, 2025

📸 Visual Diff Ready!

Screenshots comparing your changes with the main branch are available:

📁 Download Visual Diff Artifacts

🖼️ Included screenshots:

  • pr-home.png vs main-home.png - Welcome page comparison
  • pr-about.png vs main-about.png - About page comparison
  • pr-challenge.png vs main-challenge.png - Challenge page comparison

🔍 How to review:

  1. Download the artifact zip file
  2. Extract and compare the pr-* and main-* images side by side
  3. Look for visual differences in layout, styling, and content

💡 Tip: Use an image comparison tool or open both images in separate browser tabs to spot differences easily.


Visual diff generated by GitHub Actions • PR #2203

Copy link

github-actions bot commented Sep 1, 2025

🔨 Preview Build Complete!

Your changes have been built and pushed to GitHub Container Registry.

🐳 Docker Image: ghcr.io/owasp/wrongsecrets/wrongsecrets-pr:pr-2203-7cb42d9

📦 Download & Test Locally:

  1. 📁 Download Docker Image Artifact (look for wrongsecrets-preview-pr-2203)
  2. Load and run the image:
# Download the artifact, extract it, then:
docker load < wrongsecrets-preview.tar
docker run -p 8080:8080 wrongsecrets-preview

🚀 Alternative - Pull from Registry:

docker pull ghcr.io/owasp/wrongsecrets/wrongsecrets-pr:pr-2203-7cb42d9
docker run -p 8080:8080 ghcr.io/owasp/wrongsecrets/wrongsecrets-pr:pr-2203-7cb42d9

Then visit: http://localhost:8080

📝 Changes in this PR:
- src/main/java/org/owasp/wrongsecrets/Challenges.java
- src/main/java/org/owasp/wrongsecrets/WrongSecretsApplication.java
- src/main/java/org/owasp/wrongsecrets/challenges/ChallengesController.java
- src/main/java/org/owasp/wrongsecrets/challenges/docker/Challenge59.java
- src/main/java/org/owasp/wrongsecrets/challenges/docker/SlackNotificationService.java
- src/main/resources/explanations/challenge59.adoc
- src/main/resources/explanations/challenge59_hint.adoc
- src/main/resources/explanations/challenge59_reason.adoc

Visual diff screenshots will be available shortly...


Preview built by GitHub Actions

Copy link

github-actions bot commented Sep 1, 2025

🔨 Preview Build Complete!

Your changes have been built and pushed to GitHub Container Registry.

🐳 Docker Image: ghcr.io/owasp/wrongsecrets/wrongsecrets-pr:pr-2203-737da19

📦 Download & Test Locally:

  1. 📁 Download Docker Image Artifact (look for wrongsecrets-preview-pr-2203)
  2. Load and run the image:
# Download the artifact, extract it, then:
docker load < wrongsecrets-preview.tar
docker run -p 8080:8080 wrongsecrets-preview

🚀 Alternative - Pull from Registry:

docker pull ghcr.io/owasp/wrongsecrets/wrongsecrets-pr:pr-2203-737da19
docker run -p 8080:8080 ghcr.io/owasp/wrongsecrets/wrongsecrets-pr:pr-2203-737da19

Then visit: http://localhost:8080

📝 Changes in this PR:
- src/main/java/org/owasp/wrongsecrets/Challenges.java
- src/main/java/org/owasp/wrongsecrets/WrongSecretsApplication.java
- src/main/java/org/owasp/wrongsecrets/challenges/ChallengesController.java
- src/main/java/org/owasp/wrongsecrets/challenges/docker/Challenge59.java
- src/main/java/org/owasp/wrongsecrets/challenges/docker/SlackNotificationService.java
- src/main/resources/explanations/challenge59.adoc
- src/main/resources/explanations/challenge59_hint.adoc
- src/main/resources/explanations/challenge59_reason.adoc

Visual diff screenshots will be available shortly...


Preview built by GitHub Actions

Copy link

github-actions bot commented Sep 1, 2025

📸 Visual Diff Ready!

Screenshots comparing your changes with the main branch are available:

📁 Download Visual Diff Artifacts

🖼️ Included screenshots:

  • pr-home.png vs main-home.png - Welcome page comparison
  • pr-about.png vs main-about.png - About page comparison
  • pr-challenge.png vs main-challenge.png - Challenge page comparison

🔍 How to review:

  1. Download the artifact zip file
  2. Extract and compare the pr-* and main-* images side by side
  3. Look for visual differences in layout, styling, and content

💡 Tip: Use an image comparison tool or open both images in separate browser tabs to spot differences easily.


Visual diff generated by GitHub Actions • PR #2203

Copy link

github-actions bot commented Sep 1, 2025

📸 Visual Diff Ready!

Screenshots comparing your changes with the main branch are available:

📁 Download Visual Diff Artifacts

🖼️ Included screenshots:

  • pr-home.png vs main-home.png - Welcome page comparison
  • pr-about.png vs main-about.png - About page comparison
  • pr-challenge.png vs main-challenge.png - Challenge page comparison

🔍 How to review:

  1. Download the artifact zip file
  2. Extract and compare the pr-* and main-* images side by side
  3. Look for visual differences in layout, styling, and content

💡 Tip: Use an image comparison tool or open both images in separate browser tabs to spot differences easily.


Visual diff generated by GitHub Actions • PR #2203

@commjoen commjoen merged commit 0dbccff into master Sep 1, 2025
21 checks passed
@commjoen commjoen deleted the copilot/fix-2131 branch September 1, 2025 09:40
Copy link

github-actions bot commented Sep 1, 2025

🧹 Preview Cleanup Complete

The static preview for this PR has been removed from GitHub Pages.

Thanks for contributing to WrongSecrets! 🎉


Cleanup completed by GitHub Actions

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Revive Slack challenge (challenge59)
3 participants