Vulnerable-Web-Application CVE semgrep_id:PHPCS_SecurityAudit.BadFunctions.SystemExecFunctions.WarnSystemExec:44:44
Improper control of generation of code ('Code Injection')
Ссылка на строку:
Уязвимость: Improper control of generation of code ('Code Injection')
Описание:
Выполнение неконстантных команд может привести к внедрению команд (Command Injection). В данном случае уязвимость связана с использованием функции shell_exec()
, которая выполняет команду, переданную в качестве аргумента, и возвращает вывод этой команды.
Строка с уязвимостью:
$target = str_replace(array_keys($substitutions), $substitutions, $target);
echo shell_exec($target);
if ($_GET["typeBox"] == "secret")
Варианты исправления
-
Использование безопасных альтернатив:
- Вместо
shell_exec()
можно использовать более безопасные функции, такие какescapeshellcmd()
для экранирования специальных символов в командах.
Пример кода:
$target = str_replace(array_keys($substitutions), $substitutions, $target); $target = escapeshellcmd($target); echo shell_exec($target);
- Вместо
-
Валидация и очистка входных данных:
- Перед передачей данных в
shell_exec()
, необходимо валидировать и очищать входные данные, чтобы предотвратить внедрение вредоносного кода.
Пример кода:
$target = str_replace(array_keys($substitutions), $substitutions, $target); if (preg_match('/^[a-zA-Z0-9\s]+$/', $target)) { echo shell_exec($target); } else { echo "Invalid command"; }
- Перед передачей данных в
-
Использование параметризованных запросов:
- Если возможно, используйте параметризованные запросы или другие механизмы, которые позволяют избежать прямого выполнения команд.
Пример кода:
// Пример использования параметризованного запроса $stmt = $pdo->prepare('SELECT * FROM users WHERE username = :username'); $stmt->execute(['username' => $username]);
Ссылки на статьи
Описание:
Executing non-constant commands. This can lead to command injection.Исходный JSON:
{
"id": "f8aa57cd3fabd521b75b1c5e39bdbb215abce577c687778a9f1d976a1d59e7f0",
"category": "sast",
"name": "Improper control of generation of code ('Code Injection')",
"description": "Executing non-constant commands. This can lead to command injection.",
"cve": "semgrep_id:PHPCS_SecurityAudit.BadFunctions.SystemExecFunctions.WarnSystemExec:44:44",
"severity": "Critical",
"scanner": {
"id": "semgrep",
"name": "Semgrep"
},
"location": {
"file": "CommandExecution/CommandExec-4.php",
"start_line": 44
},
"identifiers": [
{
"type": "semgrep_id",
"name": "PHPCS_SecurityAudit.BadFunctions.SystemExecFunctions.WarnSystemExec",
"value": "PHPCS_SecurityAudit.BadFunctions.SystemExecFunctions.WarnSystemExec"
},
{
"type": "cwe",
"name": "CWE-94",
"value": "94",
"url": "https://cwe.mitre.org/data/definitions/94.html"
},
{
"type": "owasp",
"name": "A03:2021 - Injection",
"value": "A03:2021"
},
{
"type": "owasp",
"name": "A1:2017 - Injection",
"value": "A1:2017"
},
{
"type": "phpcs_security_audit_source",
"name": "PHPCS Security Audit Test ID PHPCS_SecurityAudit.BadFunctions.SystemExecFunctions.WarnSystemExec",
"value": "PHPCS_SecurityAudit.BadFunctions.SystemExecFunctions.WarnSystemExec"
}
]
}
```