diff options
author | Ramón M. Gómez <ramongomez@us.es> | 2020-02-18 13:08:26 +0100 |
---|---|---|
committer | Ramón M. Gómez <ramongomez@us.es> | 2020-02-18 13:08:26 +0100 |
commit | 18eb8d61584b38a2250981b0a9d06c96e7b6e213 (patch) | |
tree | 22df03055b68373ed5b9909d1315336e7225b263 | |
parent | b7bed1cadd303dc5e927b8d6c33306171fe8ff12 (diff) |
#958: Avoid SQL injection in `addtodhcp` and `listclientlive`.
-rwxr-xr-x | server/bin/addtodhcp | 2 | ||||
-rwxr-xr-x | server/bin/listclientlive | 7 |
2 files changed, 5 insertions, 4 deletions
diff --git a/server/bin/addtodhcp b/server/bin/addtodhcp index 8aa0651b..039de34d 100755 --- a/server/bin/addtodhcp +++ b/server/bin/addtodhcp @@ -50,7 +50,7 @@ done grep -q "^[ ]*\bsubnet\b" $DHCPCONF || raiseError access "Cannot detect any \"group\" clauses in DHCP configuration file" grep -q "^[ ]*\bgroup\b" $DHCPCONF && raiseError access "Cannot modify DHCP configuration file with \"group\" clauses" -[ "$*" ] && WHEREEXPR="WHERE $(echo ${*//\'/\'} | sed -e "s/\('[^']*'\)/nombreaula=\1 OR nombreordenador=\1 OR/g")" +[ "$*" ] && WHEREEXPR="WHERE $(echo ${*//\'/\\\'} | sed -e "s/\('[^']*'\)/nombreaula=\1 OR nombreordenador=\1 OR/g")" WHEREEXPR="${WHEREEXPR% OR}" # Looking for data. diff --git a/server/bin/listclientlive b/server/bin/listclientlive index 3e9a7cfb..5d06304d 100755 --- a/server/bin/listclientlive +++ b/server/bin/listclientlive @@ -2,11 +2,12 @@ #/** #@file listclientlive #@brief Lista la distribución ogLive asociada a los clientes, ya sea un equipo o un aula. -#@usage listclienlive Ambito -#@param Ambito nombre de ordenador o nombre de aula +#@usage listclientlive Ambito +#@param Ambito nombre de ordenador o nombre de aula #@version 1.1.0 - Versión inicial basada en el script "listclientmode" #@author Ramón M. Gómez, ETSII Universidad de Sevilla #@date 2017-06-01 +#**/ # Variables. @@ -24,7 +25,7 @@ source $OPENGNSYS/lib/ogfunctions.sh || exit 1 source $SERVERCONF 2>/dev/null || raiseError access "Sin acceso a fichero de configuración" # Sustituir caracteres ' por \' para evitar inyección SQL. -RESOURCE="${1//\'/\'}" +RESOURCE="${1//\'/\\\'}" # Obtener nombre de ordenador individual o todos los de una aula e indicar su plantilla asociada. dbexec "SELECT CONCAT_WS('', 'Equipo \"', ord.nombreordenador, '\" asociado a cliente \"', ord.oglivedir, '\" $([ -e $TFTPDIR/$OGLIVE ] || echo "(inexistente)")') |