Yo sólo quería dar de alta el puto ADSL…lo juro.
Estoy más quemao que el mechero de melendi, llevo dos días intentando dar de alta el ADSL para el piso de mi hermana.¿Fácil? Aparéntemente sí, pero las cosas se tuercen y al final acabo descubriendo un stack overflow. Empecemos por el principio… Parece que telefónica tiene ahora una promoción chula que si te das de alta online pues te regalan el alta de línea, un router chiniwini,un balon de playa etc,etc… Pues nada fuí a la página, pin pan pin pan, llego a lo de comprar, meto los datos y nada, me salta con que «el sistema no opera con normalidad en estos momentos que lo intente de nuevo dentro de unos instantes». Bueno pues eso fue el lunes por la mañana, hoy sigue sin chutar.
Pues nada presto fuí a contactar con algún «agente especializado» de atención al cliente, no había teléfonos a la vista ni correo electrónico. Sin embargo te daban la opcion de un chat, con videoconferencia incluida si quieres…http://www.telefonicaonline.com/on/io/navegacion/zd.html?id=19
Para ello te tienes que instalar un activex de la compañía «Infinity comunicaciones» http://www.infinity.es. Me lo instalo, le doy a ver si me contacta y nada, esto es lo que recibo.
Pues ya que estoy voy a mirar a ver que me han instalado estos mangarranes:
El activex es una pequeña dll llamada wsclient.dll cuyo único objetivo es ejecutar un programa llamado WsClient.exe como veremos después, el cual se ha instalado en «%ProgramFiles%\O1\WsClient».
Vamos a ver qué nos dice el oleview:
interface IWSClientCtl : IDispatch {
[id(0x00000001), helpstring(«method startUp»)]
HRESULT startUp(
[in] BSTR sTitle,
[in] BSTR sTopWnd);
[id(0x00000002), helpstring(«method downWS»)]
HRESULT downWS();
};
El navegador instancia el objeto, pun, llama a startup y se ejecuta el WsClient que nos intenta conectar con la atención al cliente de telefónica mediante un chat y eso. Digo intenta, porque a estas horas no lo he conseguido todavía. Bueno esta aplicación es la parte cliente de VisualSharing, un software de teleasistencia desarrollado por la empresa que hablábamos antes,Infinity.
Sacamos al IDA de paseo y lo primero me voy a a buscar el import de CreateProcess en WsClient.dll ya que como hemos visto despues de instanciar la movida, se creaba el proceso este de WsClient.exe
.text:10008CA7 push [ebp+arg_8]
.text:10008CAA push [ebp+arg_4]
.text:10008CAD push esi
.text:10008CAE push offset aSWsclientWsc_1 ; "%s\\WSClient\\WSClient.exe %S %S"
.text:10008CB3 push eax ; char *
.text:10008CB4 call _sprintf
.text:10008CB9 add esp, 14h
.text:10008CBC
.text:10008CBC loc_10008CBC: ; CODE XREF: sub_10008BFB+91j
.text:10008CBC ; sub_10008BFB+AAj
.text:10008CBC lea eax, [ebp+hObject]
.text:10008CBF push eax ; lpProcessInformation
.text:10008CC0 lea eax, [ebp+StartupInfo]
.text:10008CC3 push eax ; lpStartupInfo
.text:10008CC4 push ebx ; lpCurrentDirectory
.text:10008CC5 push ebx ; lpEnvironment
.text:10008CC6 push 4000008h ; dwCreationFlags
.text:10008CCB push ebx ; bInheritHandles
.text:10008CCC push ebx ; lpThreadAttributes
.text:10008CCD push ebx ; lpProcessAttributes
.text:10008CCE lea eax, [ebp+CommandLine]
.text:10008CD4 push eax ; lpCommandLine
.text:10008CD5 push ebx ; lpApplicationName
.text:10008CD6 call ds:CreateProcessA
Pues sí, parece que es lo que pensabamos: dos argumentos le pasa en el sprintf, dos argumentos tiene el método startup, por «deformación profesional» vemos el buffer que se usa para sprintf
.text:10008BFB CommandLine = byte ptr -260h <<= Tom cruise llora !!
—–
.text:10008C75 lea eax, [ebp+CommandLine] ; MAAAAAAAAAL!!!
Como véis es un buffer estático reservado en la pila. Esto es, stack overflow habemus. Los argumentos que le podemos pasar al método startUp no son validados de ninguna manera así que podemos sobreescribir la pila con lo que la explotación es trivial. Además el activex no tiene ningún tipo de restricción y se puede instanciar desde cualquier página externa a www.telefonicaonline.com. Esto sí que es atencion al cliente, habéis triunfado.
Como curiosidad, la atencion online de la página www.metromadrid.es también se basa en este sistema, pero si anteriormente te has instalado ya el .cab desde la web de telefónica, el navegador te instancia el WsClient de Telefónica con el logotipo de telefónica incluido, di que sí 2×1 y lo que venga…Spain is different.
Busqué en la web de infinity y en la de telefónica un contacto para temas de seguridad pero nada de nada. Como no tengo porqué explicarle esta movida a un comercial pues nada, ahí se queda el bug para los amantes de los targeted attacks y para los pobres usuarios de la también pobre atención al cliente de telefónica. Allá penas. Si algún amable lector tiene contacto con alguien relacionado con alguna de estas dos empresas pues si quieren que lo miren y si no pues aquí paz y después gloria.
Y sigo sin poder dar de alta el ADSL. Mierda para Telefónica.