diff options
author | ramon <ramongomez@us.es> | 2013-03-07 12:27:15 +0000 |
---|---|---|
committer | ramon <ramongomez@us.es> | 2013-03-07 12:27:15 +0000 |
commit | 75f9c01c51d27ac4827344c650cb9434c9490aa0 (patch) | |
tree | 98166d9e4c2c11f87c7375094da290f88a5187d4 /server | |
parent | 3d297dcb79dfec91704f4efbea2bf818b7f788f9 (diff) |
#584: Solución problema de inyección SQL en comandos {{{listclientmode}}} y {{{setclientmode}}}.
git-svn-id: https://opengnsys.es/svn/branches/version1.0@3668 a21b9725-9963-47de-94b9-378ad31fedc9
Diffstat (limited to 'server')
-rwxr-xr-x | server/bin/listclientmode | 6 | ||||
-rwxr-xr-x | server/bin/setclientmode | 13 |
2 files changed, 12 insertions, 7 deletions
diff --git a/server/bin/listclientmode b/server/bin/listclientmode index ba86f141..4e30731a 100755 --- a/server/bin/listclientmode +++ b/server/bin/listclientmode @@ -26,9 +26,11 @@ fi # Obtener datos de acceso a la Base de datos. source $SERVERCONF +# Sustituir caracteres ' por \' para evitar inyección SQL. +RESOURCE="${1//\'/\'}" # Comprobar si se recibe nombre de aula o de equipo. IDAULA=$(mysql -u "$USUARIO" -p"$PASSWORD" -D "$CATALOG" -N -e \ - "SELECT idaula FROM aulas WHERE nombreaula='$1';") + "SELECT idaula FROM aulas WHERE nombreaula='$RESOURCE';") if [ -n "$IDAULA" ]; then # Aula encontrada @@ -37,7 +39,7 @@ if [ -n "$IDAULA" ]; then else # Buscar ordenador PCNAME=$(mysql -u "$USUARIO" -p"$PASSWORD" -D "$CATALOG" -N -e \ - "SELECT nombreordenador FROM ordenadores WHERE nombreordenador='$1';") + "SELECT nombreordenador FROM ordenadores WHERE nombreordenador='$RESOURCE';") fi if [ -z "$PCNAME" ]; then echo "$PROG: No existe ningún aula o equipo con el nombre \"$1\"" diff --git a/server/bin/setclientmode b/server/bin/setclientmode index ecacf247..cdabb8a9 100755 --- a/server/bin/setclientmode +++ b/server/bin/setclientmode @@ -32,18 +32,21 @@ fi # Obtener datos de acceso a la Base de datos. source $SERVERCONF +# Sustituir caracteres ' por \' para evitar inyección SQL. +BOOTMODE="${1//\'/\'}" +RESOURCE="${2//\'/\'}" # Comprobar si se recibe nombre de aula o de equipo. IDAULA=$(mysql -u "$USUARIO" -p"$PASSWORD" -D "$CATALOG" -N -e \ - "SELECT idaula FROM aulas WHERE nombreaula=\"$2\";") + "SELECT idaula FROM aulas WHERE nombreaula='$RESOURCE';") if [ -n "$IDAULA" ]; then # Aula encontrada ETHERNET=$(mysql -u "$USUARIO" -p"$PASSWORD" -D "$CATALOG" -N -e \ - "SELECT mac FROM ordenadores WHERE idaula=\"$IDAULA\";") + "SELECT mac FROM ordenadores WHERE idaula='$IDAULA';") else # Buscar ordenador ETHERNET=$(mysql -u "$USUARIO" -p"$PASSWORD" -D "$CATALOG" -N -e \ - "SELECT mac FROM ordenadores WHERE nombreordenador=\"$2\";") + "SELECT mac FROM ordenadores WHERE nombreordenador='$RESOURCE';") fi if [ -z "$ETHERNET" ]; then date +"%b %d %T $PROG: No existe aula o equipo con el nombre \"$2\"" | tee -a $LOGFILE @@ -68,11 +71,11 @@ for AUX in $ETHERNET; do FROM ordenadores JOIN aulas ON ordenadores.idaula=aulas.idaula JOIN repositorios ON ordenadores.idrepositorio=repositorios.idrepositorio - WHERE ordenadores.mac=\"$ETHERNET\";") + WHERE ordenadores.mac='$ETHERNET';") DATOS=$(echo ${DATOS// /} | tr 'áéíóúñÁÉÍÓÚÑ' 'aeiounAEIOUN') perl -pi -e "s/INFOHOST/$DATOS/g" $PXEDIR/$AUX mysql -u "$USUARIO" -p"$PASSWORD" -D "$CATALOG" -N -e \ - "UPDATE ordenadores SET arranque=\"$1\" WHERE mac=\"$ETHERNET\";" + "UPDATE ordenadores SET arranque='$BOOTMODE' WHERE mac='$ETHERNET';" fi let NPC=NPC+1 done |