Los problemas de validación y representación de entradas están causados por metacaracteres, codificaciones alternativas y representaciones numéricas. Los problemas de seguridad surgen de entradas en las que se confía. Estos problemas incluyen: «desbordamientos de búfer», ataques de «scripts de sitios», "SQL injection" y muchas otras acciones.
APPHOME
para determinar el directorio en el que está instalado y, a continuación, ejecuta una secuencia de comandos de inicialización basada en una ruta de acceso relativa desde el directorio especificado.
...
CALL FUNCTION 'REGISTRY_GET'
EXPORTING
KEY = 'APPHOME'
IMPORTING
VALUE = home.
CONCATENATE home INITCMD INTO cmd.
CALL 'SYSTEM' ID 'COMMAND' FIELD cmd ID 'TAB' FIELD TABL[].
...
Example 1
se permite a un usuario malintencionado ejecutar comandos arbitrarios con el privilegio elevado de la aplicación mediante la modificación de la entrada del registro APPHOME
para que apunte a otra ruta de acceso que contiene una versión malintencionada de INITCMD
. Dado que el programa no valida el valor leído desde el registro, si un usuario malintencionado puede controlar el valor de la clave del registro APPHOME
, podrá engañar a la aplicación para que ejecute código malintencionado y tome el control del sistema.rman
y después ejecutar una secuencia de comandos cleanup.bat
para eliminar algunos archivos temporales. La secuencia de comandos rmanDB.bat
acepta un único parámetro de línea de comandos que especifica el tipo de copia de seguridad que realizar. Dado que se restringe el acceso a la base de datos, la aplicación ejecuta la copia de seguridad como un usuario con privilegios.
...
btype = request->get_form_field( 'backuptype' )
CONCATENATE `/K 'c:\\util\\rmanDB.bat ` btype `&&c:\\util\\cleanup.bat'` INTO cmd.
CALL FUNCTION 'SXPG_COMMAND_EXECUTE_LONG'
EXPORTING
commandname = cmd_exe
long_params = cmd_string
EXCEPTIONS
no_permission = 1
command_not_found = 2
parameters_too_long = 3
security_risk = 4
OTHERS = 5.
...
backuptype
por parte del usuario. El módulo de función SXPG_COMMAND_EXECUTE_LONG
no suele ejecutar varios comandos, pero en este caso el programa ejecuta primero el shell cmd.exe
para ejecutar varios comandos con una única llamada a CALL 'SYSTEM'
. Una vez que se invoca el comando de shell, permitirá que se ejecuten varios comandos separados por dos signos de Y comercial. Si un usuario malintencionado pasa una cadena del tipo "&& del c:\\dbms\\*.*"
, la aplicación ejecutará este comando junto con los demás comandos especificados por el programa. Debido a la naturaleza de la aplicación, se ejecuta con los privilegios necesarios para interactuar con la base de datos, lo que significa que cualquier comando que el usuario malintencionado inserte, se ejecutará también con estos privilegios.make
en el directorio /var/yp
.
...
MOVE 'make' to cmd.
CALL 'SYSTEM' ID 'COMMAND' FIELD cmd ID 'TAB' FIELD TABL[].
...
CALL 'SYSTEM'
. Si un usuario malintencionado puede modificar la variable $PATH
para que señale a un binario malintencionado que se denomina make
y hacer que el programa pueda ejecutarse en su entorno, entonces el archivo binario malintencionado se cargará en lugar del que se pretende. Debido a la naturaleza de la aplicación, se ejecuta con los privilegios necesarios para realizar las operaciones del sistema, lo que significa que el comando make
del usuario malintencionado ahora se ejecutará con estos privilegios, posiblemente proporcionando al usuario malintencionado control total sobre el sistema.
...
var fs:FileStream = new FileStream();
fs.open(new File(String(configStream.readObject())+".txt"), FileMode.READ);
home = String(fs.readObject(home));
var cmd:String = home + INITCMD;
fscommand("exec", cmd);
...
Example 1
permite a un usuario malintencionado ejecutar comandos arbitrarios con el privilegio elevado de la aplicación mediante la modificación del contenido del archivo de configuración configStream
para que apunte a otra ruta de acceso que contiene una versión malintencionada de INITCMD
. Dado que el programa no valida el valor leído desde el archivo, si un usuario malintencionado puede controlar este valor, podrá engañar a la aplicación para que ejecute código malintencionado y tomar el control del sistema.rman
y, a continuación, ejecutar un script cleanup.bat
para eliminar algunos archivos temporales. La secuencia de comandos rmanDB.bat
acepta un único parámetro de línea de comandos que especifica el tipo de copia de seguridad que realizar. Dado que se restringe el acceso a la base de datos, la aplicación ejecuta la copia de seguridad como un usuario con privilegios.
...
var params:Object = LoaderInfo(this.root.loaderInfo).parameters;
var btype:String = String(params["backuptype"]);
var cmd:String = "cmd.exe /K \"c:\\util\\rmanDB.bat " + btype + "&&c:\\util\\cleanup.bat\"";
fscommand("exec", cmd);
...
backuptype
por parte del usuario. La función fscommand()
no suele ejecutar varios comandos, pero en este caso el programa ejecuta primero el shell cmd.exe
para ejecutar varios comandos con una única llamada a fscommnd()
. Una vez que se invoca el comando de shell, permitirá que se ejecuten varios comandos separados por dos signos de Y comercial. Si un usuario malintencionado pasa una cadena del tipo "&& del c:\\dbms\\*.*"
, la aplicación ejecutará este comando junto con los demás comandos especificados por el programa. Debido a la naturaleza de la aplicación, se ejecuta con los privilegios necesarios para interactuar con la base de datos, lo que significa que cualquier comando que el usuario malintencionado inserte, se ejecutará también con estos privilegios.make
en el directorio /var/yp
.
...
fscommand("exec", "make");
...
fscommand()
. Si un usuario malintencionado puede modificar la variable $PATH
para que señale a un binario malintencionado que se denomina make
y hacer que el programa pueda ejecutarse en su entorno, entonces el archivo binario malintencionado se cargará en lugar del que se pretende. Debido a la naturaleza de la aplicación, se ejecuta con los privilegios necesarios para realizar las operaciones del sistema, lo que significa que el comando make
del usuario malintencionado ahora se ejecutará con estos privilegios, posiblemente proporcionando al usuario malintencionado control total sobre el sistema.APPHOME
para determinar el directorio de instalación y, a continuación, ejecuta un script de inicialización en función de una ruta relativa desde el directorio especificado.
...
string val = Environment.GetEnvironmentVariable("APPHOME");
string cmd = val + INITCMD;
ProcessStartInfo startInfo = new ProcessStartInfo(cmd);
Process.Start(startInfo);
...
Example 1
se permite a un usuario malintencionado ejecutar comandos arbitrarios con el privilegio elevado de la aplicación mediante la modificación de la propiedad del sistema APPHOME
para que apunte a otra ruta de acceso que contiene una versión malintencionada de INITCMD
. Como el programa no valida el valor leído desde el entorno, si el usuario malintencionado puede controlar el valor de la propiedad del sistema APPHOME
, puede engañar a la aplicación para que ejecute código malintencionado y asuma el control del sistema.rman
y, a continuación, ejecutar un script cleanup.bat
para eliminar algunos archivos temporales. La secuencia de comandos rmanDB.bat
acepta un único parámetro de línea de comandos que especifica el tipo de copia de seguridad que realizar. Dado que se restringe el acceso a la base de datos, la aplicación ejecuta la copia de seguridad como un usuario con privilegios.
...
string btype = BackupTypeField.Text;
string cmd = "cmd.exe /K \"c:\\util\\rmanDB.bat"
+ btype + "&&c:\\util\\cleanup.bat\""));
Process.Start(cmd);
...
BackupTypeField
. La función Process.Start()
no suele ejecutar varios comandos, pero en este caso el programa ejecuta primero el shell cmd.exe
para ejecutar varios comandos con una única llamada a Process.Start()
. Una vez que se invoca el comando de shell, permitirá que se ejecuten varios comandos separados por dos signos de Y comercial. Si un usuario malintencionado pasa una cadena del tipo "&& del c:\\dbms\\*.*"
, la aplicación ejecutará este comando junto con los demás comandos especificados por el programa. Debido a la naturaleza de la aplicación, se ejecuta con los privilegios necesarios para interactuar con la base de datos, lo que significa que cualquier comando que el usuario malintencionado inserte, se ejecutará también con estos privilegios.update.exe
de la siguiente forma:
...
Process.Start("update.exe");
...
Process.start()
. Si un usuario malintencionado puede modificar la variable $PATH
para que señale a un binario malintencionado que se denomina update.exe
y hacer que el programa pueda ejecutarse en su entorno, entonces el archivo binario malintencionado se cargará en lugar del que se pretende. Debido a la naturaleza de la aplicación, se ejecuta con los privilegios necesarios para realizar las operaciones del sistema, lo que significa que el comando update.exe
del usuario malintencionado ahora se ejecutará con estos privilegios, posiblemente proporcionando al usuario malintencionado control total sobre el sistema.setuid root
porque está diseñado como herramienta de aprendizaje para permitir a los administradores del sistema en formación inspeccionar los archivos del sistema con privilegios sin concederles la capacidad de modificarlos o dañar el sistema.
int main(char* argc, char** argv) {
char cmd[CMD_MAX] = "/usr/bin/cat ";
strcat(cmd, argv[1]);
system(cmd);
}
root
, la llamada a system()
también se ejecuta con privilegios root
. Si un usuario especifica un nombre de archivo estándar, la llamada presenta el funcionamiento previsto. Sin embargo, si un atacante transfiere una cadena con el formato ";rm -rf /"
, la llamada a system()
no se ejecuta cat
debido a la falta de argumentos y, a continuación, pasa a eliminar de forma recursiva el contenido de la partición raíz.$APPHOME
para determinar el directorio de instalación de la aplicación y, a continuación, ejecuta una secuencia de comandos de inicialización en ese directorio.
...
char* home=getenv("APPHOME");
char* cmd=(char*)malloc(strlen(home)+strlen(INITCMD));
if (cmd) {
strcpy(cmd,home);
strcat(cmd,INITCMD);
execl(cmd, NULL);
}
...
Example 1
, el código de este ejemplo permite a un usuario malintencionado ejecutar comandos arbitrarios con el privilegio elevado de la aplicación. En este ejemplo, el atacante puede modificar la variable de entorno $APPHOME
para especificar una ruta diferente que contenga una versión malintencionada de INITCMD
. Como el programa no valida el valor leído del entorno, al controlar este, el atacante puede engañar a la aplicación para que ejecute código malicioso.make
en el directorio /var/yp
. Tenga en cuenta que, como el programa actualiza los registros de contraseñas, se ha instalado setuid root
.make
de la siguiente forma:
system("cd /var/yp && make &> /dev/null");
system()
. Sin embargo, como el programa no especifica una ruta absoluta para make
ni limpia ninguna variable de entorno antes de llamar al comando, el atacante puede modificar la variable $PATH
para que señale a un archivo binario malicioso denominado make
y ejecutar la secuencia de comandos de CGI desde el indicador de shell. Y, como el programa ha instalado setuid root
, la versión de make
del usuario malintencionado se ejecuta ahora con privilegios root
.CreateProcess()
directamente o mediante una llamada a una de las funciones de la familia _spawn()
, se debe tener cuidado en el caso de que haya un espacio en un ejecutable o en una ruta.
...
LPTSTR cmdLine = _tcsdup(TEXT("C:\\Program Files\\MyApplication -L -S"));
CreateProcess(NULL, cmdLine, ...);
...
CreateProcess()
analiza los espacios, el primer ejecutable que el sistema operativo intentará ejecutar es Program.exe
y no MyApplication.exe
. Por lo tanto, si un atacante es capaz de instalar una aplicación malintencionada llamada Program.exe
en el sistema, cualquier programa que de manera incorrecta llame a CreateProcess()
utilizando el directorio Program Files
ejecutará esta aplicación en lugar de la que pretendía ejecutar.system()
, exec()
y CreateProcess()
utilizan el entorno del programa que les llama, por lo que los atacantes disponen de una oportunidad potencial de influir en el comportamiento de dichas llamadas.$PATH
u otros aspectos del entorno de ejecución del programa.make
en el directorio /var/yp
. Tenga en cuenta que, como el programa actualiza los registros de contraseñas, se ha instalado setuid root
.make
de la siguiente manera:
MOVE "cd /var/yp && make &> /dev/null" to command-line
CALL "CBL_EXEC_RUN_UNIT" USING command-line
length of command-line
run-unit-id
stack-size
flags
CBL_EXEC_RUN_UNIT
. Sin embargo, dado que el programa no especifica una ruta absoluta para make
y no limpia sus variables de entorno antes de invocar el comando, el atacante puede modificar su variable de $PATH
para que se dirija a un binario malintencionado denominado make
y ejecutar el script CGI desde una indicación del comando de shell. Además, puesto que en el programa se ha instalado setuid root
, la versión del atacante de make
funciona con privilegios de root
.pdfprint
.
DISPLAY "TEMP" UPON ENVIRONMENT-NAME
ACCEPT ws-temp-dir FROM ENVIRONMENT-VARIABLE
STRING "pdfprint " DELIMITED SIZE
ws-temp-dir DELIMITED SPACE
"/" DELIMITED SIZE
ws-pdf-filename DELIMITED SPACE
x"00" DELIMITED SIZE
INTO cmd-buffer
CALL "SYSTEM" USING cmd-buffer
pdfprint
, el atacante puede modificar su variable de $PATH
para que se dirija a un binario malintencionado. Además, aunque las frases DELIMITED SPACE
evitan los espacios incrustados en ws-temp-dir
y ws-pdf-filename
, podrían existir metacaracteres del comando de shell (como &&
) incrustados en cualquiera de ellos.cmd
.
...
<cfset var="#url.cmd#">
<cfexecute name = "C:\windows\System32\cmd.exe"
arguments = "/c #var#"
timeout = "1"
variable="mycmd">
</cfexecute>
...
APPHOME
para determinar el directorio en el que está instalado y luego ejecuta un guion de inicialización basado en una ruta relativa del directorio especificado.
...
final cmd = String.fromEnvironment('APPHOME');
await Process.run(cmd);
...
Example 1
se permite a un usuario malintencionado ejecutar comandos arbitrarios con el privilegio elevado de la aplicación mediante la modificación de la propiedad del sistema APPHOME
para que apunte a otra ruta de acceso que contiene una versión malintencionada de INITCMD
. Como el programa no valida el valor leído desde el entorno, si el usuario malintencionado puede controlar el valor de la propiedad del sistema APPHOME
, puede engañar a la aplicación para que ejecute código malintencionado y asuma el control del sistema.
cmdName := request.FormValue("Command")
c := exec.Command(cmdName)
c.Run()
APPHOME
para determinar el directorio de instalación y, a continuación, ejecuta una secuencia de comandos de inicialización en función de una ruta relativa desde el directorio especificado.
...
String home = System.getProperty("APPHOME");
String cmd = home + INITCMD;
java.lang.Runtime.getRuntime().exec(cmd);
...
Example 1
se permite a un usuario malintencionado ejecutar comandos arbitrarios con el privilegio elevado de la aplicación mediante la modificación de la propiedad del sistema APPHOME
para que apunte a otra ruta de acceso que contiene una versión malintencionada de INITCMD
. Como el programa no valida el valor leído desde el entorno, si el usuario malintencionado puede controlar el valor de la propiedad del sistema APPHOME
, puede engañar a la aplicación para que ejecute código malintencionado y asuma el control del sistema.rman
y, a continuación, ejecutar un script cleanup.bat
para eliminar algunos archivos temporales. La secuencia de comandos rmanDB.bat
acepta un único parámetro de línea de comandos que especifica el tipo de copia de seguridad que realizar. Dado que se restringe el acceso a la base de datos, la aplicación ejecuta la copia de seguridad como un usuario con privilegios.
...
String btype = request.getParameter("backuptype");
String cmd = new String("cmd.exe /K
\"c:\\util\\rmanDB.bat "+btype+"&&c:\\util\\cleanup.bat\"")
System.Runtime.getRuntime().exec(cmd);
...
backuptype
por parte del usuario. La función Runtime.exec()
no suele ejecutar varios comandos, pero en este caso el programa ejecuta primero el shell cmd.exe
para ejecutar varios comandos con una única llamada a Runtime.exec()
. Una vez que se invoca el comando de shell, permitirá que se ejecuten varios comandos separados por dos signos de Y comercial. Si un usuario malintencionado pasa una cadena del tipo "&& del c:\\dbms\\*.*"
, la aplicación ejecutará este comando junto con los demás comandos especificados por el programa. Debido a la naturaleza de la aplicación, se ejecuta con los privilegios necesarios para interactuar con la base de datos, lo que significa que cualquier comando que el usuario malintencionado inserte, se ejecutará también con estos privilegios.make
en el directorio /var/yp
.
...
System.Runtime.getRuntime().exec("make");
...
Runtime.exec()
. Si un usuario malintencionado puede modificar la variable $PATH
para que señale a un binario malintencionado que se denomina make
y hacer que el programa pueda ejecutarse en su entorno, entonces el archivo binario malintencionado se cargará en lugar del que se pretende. Debido a la naturaleza de la aplicación, se ejecuta con los privilegios necesarios para realizar las operaciones del sistema, lo que significa que el comando make
del usuario malintencionado ahora se ejecutará con estos privilegios, posiblemente proporcionando al usuario malintencionado control total sobre el sistema.
...
String[] cmds = this.getIntent().getStringArrayExtra("commands");
Process p = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(p.getOutputStream());
for (String cmd : cmds) {
os.writeBytes(cmd+"\n");
}
os.writeBytes("exit\n");
os.flush();
...
APPHOME
para determinar el directorio de instalación y, a continuación, ejecuta un script de inicialización en función de una ruta relativa desde el directorio especificado.
var cp = require('child_process');
...
var home = process.env('APPHOME');
var cmd = home + INITCMD;
child = cp.exec(cmd, function(error, stdout, stderr){
...
});
...
Example 1
se permite a un usuario malintencionado ejecutar comandos arbitrarios con el privilegio elevado de la aplicación mediante la modificación de la propiedad del sistema APPHOME
para que apunte a otra ruta de acceso que contiene una versión malintencionada de INITCMD
. Como el programa no valida el valor leído desde el entorno, si el usuario malintencionado puede controlar el valor de la propiedad del sistema APPHOME
, puede engañar a la aplicación para que ejecute código malintencionado y asuma el control del sistema.rman
. La secuencia de comandos rmanDB.bat
acepta un único parámetro de línea de comandos que especifica el tipo de copia de seguridad que realizar. Dado que se restringe el acceso a la base de datos, la aplicación ejecuta la copia de seguridad como un usuario con privilegios.
var cp = require('child_process');
var http = require('http');
var url = require('url');
function listener(request, response){
var btype = url.parse(request.url, true)['query']['backuptype'];
if (btype !== undefined){
cmd = "c:\\util\\rmanDB.bat" + btype;
cp.exec(cmd, function(error, stdout, stderr){
...
});
}
...
}
...
http.createServer(listener).listen(8080);
backuptype
por parte del usuario aparte de verificar su existencia. Una vez que se invoca el shell, puede permitir la ejecución de varios comandos y, debido a la naturaleza de la aplicación, se ejecutará con los privilegios necesarios para interactuar con la base de datos, lo que significa que cualquier comando que el atacante introduzca se ejecutará también con estos privilegios.make
en el directorio /var/yp
.
...
require('child_process').exec("make", function(error, stdout, stderr){
...
});
...
make
y no puede limpiar su entorno antes de ejecutar la llamada a child_process.exec()
. Si un usuario malintencionado puede modificar la variable $PATH
para que señale a un binario malintencionado que se denomina make
y hacer que el programa pueda ejecutarse en su entorno, entonces el archivo binario malintencionado se cargará en lugar del que se pretende. Debido a la naturaleza de la aplicación, se ejecuta con los privilegios necesarios para realizar las operaciones del sistema, lo que significa que el comando make
del usuario malintencionado ahora se ejecutará con estos privilegios, posiblemente proporcionando al usuario malintencionado control total sobre el sistema.APPHOME
para determinar el directorio de instalación y, a continuación, ejecuta una secuencia de comandos de inicialización en función de una ruta relativa desde el directorio especificado.
...
$home = $_ENV['APPHOME'];
$cmd = $home . $INITCMD;
system(cmd);
...
Example 1
se permite a un usuario malintencionado ejecutar comandos arbitrarios con el privilegio elevado de la aplicación mediante la modificación de la propiedad del sistema APPHOME
para que apunte a otra ruta de acceso que contiene una versión malintencionada de INITCMD
. Como el programa no valida el valor leído desde el entorno, si el usuario malintencionado puede controlar el valor de la propiedad del sistema APPHOME
, puede engañar a la aplicación para que ejecute código malintencionado y asuma el control del sistema.rman
y, a continuación, ejecutar un script cleanup.bat
para eliminar algunos archivos temporales. La secuencia de comandos rmanDB.bat
acepta un único parámetro de línea de comandos que especifica el tipo de copia de seguridad que realizar. Dado que se restringe el acceso a la base de datos, la aplicación ejecuta la copia de seguridad como un usuario con privilegios.
...
$btype = $_GET['backuptype'];
$cmd = "cmd.exe /K \"c:\\util\\rmanDB.bat " . $btype . "&&c:\\util\\cleanup.bat\"";
system(cmd);
...
backuptype
por parte del usuario. La función Runtime.exec()
no suele ejecutar varios comandos, pero en este caso el programa ejecuta primero el shell cmd.exe
para ejecutar varios comandos con una única llamada a Runtime.exec()
. Una vez que se invoca el comando de shell, permitirá que se ejecuten varios comandos separados por dos signos de Y comercial. Si un usuario malintencionado pasa una cadena del tipo "&& del c:\\dbms\\*.*"
, la aplicación ejecutará este comando junto con los demás comandos especificados por el programa. Debido a la naturaleza de la aplicación, se ejecuta con los privilegios necesarios para interactuar con la base de datos, lo que significa que cualquier comando que el usuario malintencionado inserte, se ejecutará también con estos privilegios.make
en el directorio /var/yp
.
...
$result = shell_exec("make");
...
Runtime.exec()
. Si un usuario malintencionado puede modificar la variable $PATH
para que señale a un binario malintencionado que se denomina make
y hacer que el programa pueda ejecutarse en su entorno, entonces el archivo binario malintencionado se cargará en lugar del que se pretende. Debido a la naturaleza de la aplicación, se ejecuta con los privilegios necesarios para realizar las operaciones del sistema, lo que significa que el comando make
del usuario malintencionado ahora se ejecutará con estos privilegios, posiblemente proporcionando al usuario malintencionado control total sobre el sistema.
...
CREATE PROCEDURE dbo.listFiles (@path NVARCHAR(200))
AS
DECLARE @cmd NVARCHAR(500)
SET @cmd = 'dir ' + @path
exec xp_cmdshell @cmd
GO
...
APPHOME
para determinar el directorio de instalación y, a continuación, ejecuta una secuencia de comandos de inicialización en función de una ruta relativa desde el directorio especificado.
...
home = os.getenv('APPHOME')
cmd = home.join(INITCMD)
os.system(cmd);
...
Example 1
se permite a un usuario malintencionado ejecutar comandos arbitrarios con el privilegio elevado de la aplicación mediante la modificación de la propiedad del sistema APPHOME
para que apunte a otra ruta de acceso que contiene una versión malintencionada de INITCMD
. Como el programa no valida el valor leído desde el entorno, si el usuario malintencionado puede controlar el valor de la propiedad del sistema APPHOME
, puede engañar a la aplicación para que ejecute código malintencionado y asuma el control del sistema.rman
y, a continuación, ejecutar un script cleanup.bat
para eliminar algunos archivos temporales. La secuencia de comandos rmanDB.bat
acepta un único parámetro de línea de comandos que especifica el tipo de copia de seguridad que realizar. Dado que se restringe el acceso a la base de datos, la aplicación ejecuta la copia de seguridad como un usuario con privilegios.
...
btype = req.field('backuptype')
cmd = "cmd.exe /K \"c:\\util\\rmanDB.bat " + btype + "&&c:\\util\\cleanup.bat\""
os.system(cmd);
...
backuptype
por parte del usuario. La función Runtime.exec()
no suele ejecutar varios comandos, pero en este caso el programa ejecuta primero el shell cmd.exe
para ejecutar varios comandos con una única llamada a Runtime.exec()
. Una vez que se invoca el comando de shell, permitirá que se ejecuten varios comandos separados por dos signos de Y comercial. Si un usuario malintencionado pasa una cadena del tipo "&& del c:\\dbms\\*.*"
, la aplicación ejecutará este comando junto con los demás comandos especificados por el programa. Debido a la naturaleza de la aplicación, se ejecuta con los privilegios necesarios para interactuar con la base de datos, lo que significa que cualquier comando que el usuario malintencionado inserte, se ejecutará también con estos privilegios.make
en el directorio /var/yp
.
...
result = os.system("make");
...
os.system()
. Si un usuario malintencionado puede modificar la variable $PATH
para que señale a un binario malintencionado que se denomina make
y hacer que el programa pueda ejecutarse en su entorno, entonces el archivo binario malintencionado se cargará en lugar del que se pretende. Debido a la naturaleza de la aplicación, se ejecuta con los privilegios necesarios para realizar las operaciones del sistema, lo que significa que el comando make
del usuario malintencionado ahora se ejecutará con estos privilegios, posiblemente proporcionando al usuario malintencionado control total sobre el sistema.APPHOME
para determinar el directorio de instalación y, a continuación, ejecuta una secuencia de comandos de inicialización en función de una ruta relativa desde el directorio especificado.
...
home = ENV['APPHOME']
cmd = home + INITCMD
Process.spawn(cmd)
...
Example 1
se permite a un usuario malintencionado ejecutar comandos arbitrarios con el privilegio elevado de la aplicación mediante la modificación de la propiedad del sistema APPHOME
para que apunte a otra ruta de acceso que contiene una versión malintencionada de INITCMD
. Como el programa no valida el valor leído desde el entorno, si el usuario malintencionado puede controlar el valor de la propiedad del sistema APPHOME
, puede engañar a la aplicación para que ejecute código malintencionado y asuma el control del sistema.rman
y después ejecutar una secuencia de comandos cleanup.bat
para eliminar algunos archivos temporales. La secuencia de comandos rmanDB.bat
acepta un único parámetro de línea de comandos que especifica el tipo de copia de seguridad que realizar. Dado que se restringe el acceso a la base de datos, la aplicación ejecuta la copia de seguridad como un usuario con privilegios.
...
btype = req['backuptype']
cmd = "C:\\util\\rmanDB.bat #{btype} &&C:\\util\\cleanup.bat"
spawn(cmd)
...
backuptype
por parte del usuario. Una vez que se invoca el comando de shell mediante Kernel.spawn
, permitirá que se ejecuten varios comandos separados por dos signos de Y comercial. Si un usuario malintencionado pasa una cadena del tipo "&& del c:\\dbms\\*.*"
, la aplicación ejecutará este comando junto con los demás comandos especificados por el programa. Debido a la naturaleza de la aplicación, se ejecuta con los privilegios necesarios para interactuar con la base de datos, lo que significa que cualquier comando que el usuario malintencionado inserte, se ejecutará también con estos privilegios.make
en el directorio /var/yp
.
...
system("make")
...
Kernel.system()
. Si un usuario malintencionado puede modificar la variable $PATH
para que señale a un binario malintencionado que se denomina make
y hacer que el programa pueda ejecutarse en su entorno, entonces el archivo binario malintencionado se cargará en lugar del que se pretende. Debido a la naturaleza de la aplicación, se ejecuta con los privilegios necesarios para realizar las operaciones del sistema, lo que significa que el comando make
del usuario malintencionado ahora se ejecutará con estos privilegios, posiblemente proporcionando al usuario malintencionado control total sobre el sistema.
def changePassword(username: String, password: String) = Action { request =>
...
s'echo "${password}" | passwd ${username} --stdin'.!
...
}
APPHOME
para determinar el directorio de instalación y, a continuación, ejecuta un script de inicialización en función de una ruta relativa desde el directorio especificado.
...
Dim cmd
Dim home
home = Environ$("AppHome")
cmd = home & initCmd
Shell cmd, vbNormalFocus
...
Example 1
se permite a un usuario malintencionado ejecutar comandos arbitrarios con el privilegio elevado de la aplicación mediante la modificación de la propiedad del sistema APPHOME
para que apunte a otra ruta de acceso que contiene una versión malintencionada de INITCMD
. Como el programa no valida el valor leído desde el entorno, si el usuario malintencionado puede controlar el valor de la propiedad del sistema APPHOME
, puede engañar a la aplicación para que ejecute código malintencionado y asuma el control del sistema.rman
y, a continuación, ejecutar un script cleanup.bat
para eliminar algunos archivos temporales. La secuencia de comandos rmanDB.bat
acepta un único parámetro de línea de comandos que especifica el tipo de copia de seguridad que realizar. Dado que se restringe el acceso a la base de datos, la aplicación ejecuta la copia de seguridad como un usuario con privilegios.
...
btype = Request.Form("backuptype")
cmd = "cmd.exe /K " & Chr(34) & "c:\util\rmanDB.bat " & btype & "&&c:\util\cleanup.bat" & Chr(34) & ";
Shell cmd, vbNormalFocus
...
backuptype
por parte del usuario. Una vez que se invoca el comando de shell, permitirá que se ejecuten varios comandos separados por dos signos de Y comercial. Si un usuario malintencionado pasa una cadena del tipo "&& del c:\\dbms\\*.*"
, la aplicación ejecutará este comando junto con los demás comandos especificados por el programa. Debido a la naturaleza de la aplicación, se ejecuta con los privilegios necesarios para interactuar con la base de datos, lo que significa que cualquier comando que el usuario malintencionado inserte, se ejecutará también con estos privilegios.make
en el directorio /var/yp
.
...
$result = shell_exec("make");
...
Runtime.exec()
. Si un usuario malintencionado puede modificar la variable $PATH
para que señale a un binario malintencionado que se denomina make
y hacer que el programa pueda ejecutarse en su entorno, entonces el archivo binario malintencionado se cargará en lugar del que se pretende. Debido a la naturaleza de la aplicación, se ejecuta con los privilegios necesarios para realizar las operaciones del sistema, lo que significa que el comando make
del usuario malintencionado ahora se ejecutará con estos privilegios, posiblemente proporcionando al usuario malintencionado control total sobre el sistema.
...
steps:
- run: echo "${{ github.event.pull_request.title }}"
...
github.event.pull_request.title
. Si github.event.pull_request.title
contiene código ejecutable malintencionado, la acción ejecuta el código malintencionado, lo que resulta en la inyección de comandos.