dilluns, 19 de maig del 2008

Suplantar usuarios

Hoy vamos a hablar de ese momento en el que tenemos de toquetear objetos de otro usuario, bien porque nadie tiene el password de ese usuario (si es que son...) , bien porque queremos comprobar que ese usuario puede hacer eso que nosotros decimos que puede hacer y el asegura que no , o bien por oscuras intenciones... :-{


En Oracle tenemos la siguiente sentencia:

ALTER SESSION SET CURRENT_SCHEMA=SCOTT;


Aunque esto nos es útil para toquetear sus objetos sin necesidad de estar poniendo siempre el

SCOTT.OBJETO

no nos será útil para comprobar que ese privilegio que le hemos concedido a un usuario esté funcionando correctamente, ya que en realidad continuamos siendo el mismo usuario:




SQL> conn / as sysdba

SQL> alter session set CURRENT_SCHEMA=SCOTT;

Sesi�n modificada.

SQL> select user from dual;

USER
------------------------------
SYS



En Sybase tenemos el comando setuser, ahora mismo no dispongo de un gestor Sybase a mano, pero puedo decir que este comando es más potente que el comando de Oracle, ya que realmente estás suplantando al usuario, pudiendo por ejemplo dar permisos sobre objetos del usuario suplantado.



Y por último, la suplantación definitiva!!!!!
Lo vamos a probar con Oracle, pero seguro que también se puede hacer en Sybase.
Este método sólo es para utilizarlo en situaciones extremas, y por el bien de la humanidad, nunca para hacer el mal.
Ahí vamos:

-Primero miramos el password encriptado del usuario


SQL> select username, password from dba_users where username='SCOTT';

USERNAME PASSWORD
------------------------------ ------------------------------
SCOTT F894844C34402B67


-Cambiamos el password del usuario SCOTT


SQL> alter user SCOTT identified by lion;

Usuario modificado.


-Nos conectamos con el nuevo password y hacemos lo que tengamos que hacer


SQL> conn scott/lion
Conectado.
SQL> select * from dept;

DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON


-Luego restauramos el password antiguo

SQL> conn / as sysdba
Conectado.
SQL> alter user scott identified by values 'F894844C34402B67';

-Y ya está.

SQL> conn scott/tiger;
Conectado.




Esto, como ya he dicho puede ser utilizado para hacer cosas muy feas, pero también nos puede ser útil por ejemplo en esa aplicación antigua que ya nadie sabe como funciona, y nadie se atreve a tocar, como la aplicación se conencta con un usuario del que nadie sabe el password no podemos modificarlo, pero si necesitamos entrar con este usuario, siempre podemos hacer esto.


Hasta lueg