summaryrefslogtreecommitdiffstats
path: root/server/bin
diff options
context:
space:
mode:
authorramon <ramongomez@us.es>2013-03-07 12:27:15 +0000
committerramon <ramongomez@us.es>2013-03-07 12:27:15 +0000
commit75f9c01c51d27ac4827344c650cb9434c9490aa0 (patch)
tree98166d9e4c2c11f87c7375094da290f88a5187d4 /server/bin
parent3d297dcb79dfec91704f4efbea2bf818b7f788f9 (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/bin')
-rwxr-xr-xserver/bin/listclientmode6
-rwxr-xr-xserver/bin/setclientmode13
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