TUServerMU

MuOnline => Herramientas => Tema comenzado por: ZabiinoOo on April 20, 2017, 07:05:40 PM

Titulo: DataServers MuEMU - Anti inject SQL
Posteado por: ZabiinoOo on April 20, 2017, 07:05:40 PM
Hola amigos debido a una vulnerabilidad que se encontró en MuEMU, donde se podia hacer una inyeccion sql a la base de datos y eliminar todo lo que se refiere a cuentas, personajes, guilds, etc y dejar la base de datos de 0, aqui les dejare este fix para que se puedan proteger y evitar ser una victima en su servidor de este gran fallo.

DESCARGA

(http://i.imgur.com/Z9MYwwl.png)

CONTRASEÑA ARCHIVOS

tuservermu.com.ve

Este tema habia sido eliminado por el backup del foro hace algunos meses, pero no me habia dado cuenta asi que se los traigo nuevamente.
Titulo: Re: DataServers MuEMU - Anti inject SQL
Posteado por: Maxic1987 on April 20, 2017, 07:09:07 PM
que se debe hacer con estos archivos? disculpa la ignorancia. saludos
Titulo: Re: DataServers MuEMU - Anti inject SQL
Posteado por: ZabiinoOo on April 20, 2017, 07:14:41 PM
En el repack inclui las dataservers de todas las versiones muemu desde la season4 hasta la season6 lo que debes hacer es copiar la dataserver de tu server y pegar en tus files, asegurate de borrar la dataserver vieja y luego pegar esta asi se esta mas seguro del cambio, saludos
Titulo: Re: DataServers MuEMU - Anti inject SQL
Posteado por: Maxic1987 on April 20, 2017, 07:34:14 PM
En el repack inclui las dataservers de todas las versiones muemu desde la season4 hasta la season6 lo que debes hacer es copiar la dataserver de tu server y pegar en tus files, asegurate de borrar la dataserver vieja y luego pegar esta asi se esta mas seguro del cambio, saludos

la carpeta DataServer_EX803 corresponde a los muemu s8 ?
Titulo: Re: DataServers MuEMU - Anti inject SQL
Posteado por: ZabiinoOo on April 20, 2017, 08:08:29 PM
si asi es amigo
Titulo: Re: DataServers MuEMU - Anti inject SQL
Posteado por: djpigua on April 21, 2017, 09:54:40 AM
Mi pregunta es se remplaza solo el dataserver o tengo que borrar toda la carpeta anterior y poner solo los 2 archivos que vienen aqui? gracias
Titulo: Re: DataServers MuEMU - Anti inject SQL
Posteado por: Lude on April 21, 2017, 10:34:31 AM
Mi pregunta es se remplaza solo el dataserver o tengo que borrar toda la carpeta anterior y poner solo los 2 archivos que vienen aqui? gracias

Solo reemplazas los que viene aquí amigo.
Titulo: Re: DataServers MuEMU - Anti inject SQL
Posteado por: Ryuno on April 28, 2017, 05:08:35 PM
Olvidaron Dejar el El Fix del DataServer(Codigo ) Aprobecho y lo dejo aca.

Dejo toda la Funcion por si la prefieren remplazar completa

void FriendMemoSend(FHP_FRIEND_MEMO_SEND* lpMsg,int index)
{
   FHP_FRIEND_MEMO_SEND_RESULT pMsg;

   pMsg.h.set(0x70,sizeof(pMsg));

   pMsg.Number = lpMsg->Number;

   memcpy(pMsg.Name,lpMsg->Name,sizeof(pMsg.Name));

   pMsg.Result = 1;

   pMsg.WindowGuid = lpMsg->WindowGuid;

   gQueryManager.BindParameterAsString(1, lpMsg->ToName, sizeof(lpMsg->ToName)); //Fix DataServer N#1

   gQueryManager.BindParameterAsString(2, lpMsg->Subject, sizeof(lpMsg->Subject));

   gQueryManager.ExecQuery("WZ_WriteMail '%s',?,?,%d,%d", lpMsg->Name, lpMsg->Dir, lpMsg->Action);

   gQueryManager.Fetch();

   DWORD memo = gQueryManager.GetResult(0);

   DWORD guid = gQueryManager.GetResult(1);

   gQueryManager.Close();

   if(memo <= 10)
   {
      pMsg.Result = (BYTE)memo;
      CSDataSend(index,(BYTE*)&pMsg,pMsg.h.size);
      return;
   }

   BYTE MemoBuff[1000];

   memset(MemoBuff,0,sizeof(MemoBuff));

   memcpy(MemoBuff,lpMsg->Memo,lpMsg->MemoSize);

   gQueryManager.BindParameterAsBinary(1,MemoBuff,sizeof(MemoBuff));

   gQueryManager.BindParameterAsBinary(2,lpMsg->Photo,sizeof(lpMsg->Photo));

   gQueryManager.ExecQuery("UPDATE T_FriendMail SET Memo=?,Photo=? WHERE MemoIndex=%d AND GUID=%d",memo,guid);

   gQueryManager.Close();

   CSDataSend(index,(BYTE*)&pMsg,pMsg.h.size);

   if(pMsg.Result == 1)
   {
      CHARACTER_INFO CharacterInfo;

      if(gCharacterManager.GetCharacterInfo(&CharacterInfo,lpMsg->ToName) != 0)
      {
         gQueryManager.ExecQuery("SELECT MemoIndex,FriendName,wDate,Subject,bRead FROM T_FriendMail WHERE MemoIndex=%d AND GUID=%d",memo,guid);

         gQueryManager.Fetch();

         FHP_FRIEND_MEMO_LIST pMsg;

         pMsg.h.set(0x71,sizeof(pMsg));

         pMsg.Number = CharacterInfo.UserIndex;

         pMsg.MemoIndex = gQueryManager.GetAsInteger("MemoIndex");

         gQueryManager.GetAsString("FriendName",pMsg.SendName,sizeof(pMsg.SendName));

         memcpy(pMsg.RecvName,lpMsg->ToName,sizeof(pMsg.RecvName));

         gQueryManager.GetAsString("wDate",pMsg.Date,sizeof(pMsg.Date));

         gQueryManager.GetAsString("Subject",pMsg.Subject,sizeof(pMsg.Subject));

         pMsg.read = gQueryManager.GetAsInteger("bRead");

         CServerManager* lpServerManager = FindServerByCode(CharacterInfo.GameServerCode);

         if(lpServerManager != 0){CSDataSend(lpServerManager->m_index,(BYTE*)&pMsg,sizeof(pMsg));}

         gQueryManager.Close();
      }
   }
}
Titulo: Re: DataServers MuEMU - Anti inject SQL
Posteado por: Nexus on June 10, 2017, 06:23:10 PM
Con Este dataserver es que se evita que puedan borrar las tablas de la base de datos? me han borrado la base y me gustaría saber un poco mas acerca de este aporte. Gracias a quien pueda responderme.
Titulo: Re: DataServers MuEMU - Anti inject SQL
Posteado por: Cacikus on June 10, 2017, 06:28:09 PM
Con Este dataserver es que se evita que puedan borrar las tablas de la base de datos? me han borrado la base y me gustaría saber un poco mas acerca de este aporte. Gracias a quien pueda responderme.

Tiene una corrección que no tiene el liberado MUEMU, pero creo que aún quedan más cosas que corregir, podrías probarlo a ver que tal va.
Titulo: Re: DataServers MuEMU - Anti inject SQL
Posteado por: ZabiinoOo on June 10, 2017, 08:31:31 PM
Con Este dataserver es que se evita que puedan borrar las tablas de la base de datos? me han borrado la base y me gustaría saber un poco mas acerca de este aporte. Gracias a quien pueda responderme.

Si amigo
Titulo: Re: DataServers MuEMU - Anti inject SQL
Posteado por: melo920 on June 24, 2017, 08:07:37 PM
@waltervg91 le recuerdo que esto es un foro de aprendizaje no de hackear, al usar la  DataServer aquí aportada ya no abra problemas de inject SQL en su server.
Titulo: Re: DataServers MuEMU - Anti inject SQL
Posteado por: waltervg91 on June 25, 2017, 11:53:20 AM
@melo920 Si entiendo eso, pero como yo he hecho otros cambios en el server y lo he puesto yo de forma manual como lo cita Ryuno, ya que en el post principal no están los sources si no que solo el ejecutable.. Lo preguntaba para poder probar si me ha quedado bien.
Muchas gracias de todas formas. :D Saludos.
Titulo: Re: DataServers MuEMU - Anti inject SQL
Posteado por: dulex on October 09, 2017, 01:46:11 AM
Una pregunta, esto esta fixeado en los files que proporciono Louis?
Titulo: Re: DataServers MuEMU - Anti inject SQL
Posteado por: ZabiinoOo on October 09, 2017, 02:39:13 AM
@dulex los de update 3 si, saludos!!
Titulo: Re: DataServers MuEMU - Anti inject SQL
Posteado por: nikiminaj on May 01, 2018, 02:13:39 PM
Sirve para el Season 12 ?? o solo llega hasta el 8
Titulo: Re: DataServers MuEMU - Anti inject SQL
Posteado por: ZabiinoOo on May 01, 2018, 02:35:37 PM
Sirve para el Season 12 ?? o solo llega hasta el 8

Hasta el 8 muemu no tiene season12 son igcn
Titulo: Re: DataServers MuEMU - Anti inject SQL
Posteado por: Dariox84 on August 03, 2018, 05:04:06 PM
Buenas tardes, amigos esto hay que aplicarselo a estos files? http://tuservermu.com.ve/index.php?topic=58.0 (http://tuservermu.com.ve/index.php?topic=58.0)
Titulo: Re: DataServers MuEMU - Anti inject SQL
Posteado por: ZabiinoOo on August 03, 2018, 06:59:45 PM
Buenas tardes, amigos esto hay que aplicarselo a estos files? http://tuservermu.com.ve/index.php?topic=58.0 (http://tuservermu.com.ve/index.php?topic=58.0)

Si amigo, saludos!!
Titulo: Re: DataServers MuEMU - Anti inject SQL
Posteado por: PRONEXUS on October 18, 2018, 11:16:41 PM
hola se puede aplicar a los update4 de louis muemu s6 ?
otra consulta el codigo se ejecuta en la query? de MuOnline?
Titulo: Re: DataServers MuEMU - Anti inject SQL
Posteado por: ZabiinoOo on October 19, 2018, 11:51:55 AM
hola se puede aplicar a los update4 de louis muemu s6 ?
otra consulta el codigo se ejecuta en la query? de MuOnline?

si se puede usar aunque creo que los update4 de louis ya lo tiene
Titulo: Re: DataServers MuEMU - Anti inject SQL
Posteado por: load_01 on April 27, 2020, 11:21:26 AM
una pregunta y disculpen la molestia este fix sirve para cualquier version o es solo de s4 para arriba?
Titulo: Re: DataServers MuEMU - Anti inject SQL
Posteado por: demmian2 on June 03, 2020, 08:32:46 AM
buenos dias, este es el codigo completo de la solucion de zabino?
estoy agregando todo fix posible al source u13 de louis con las soluciones del foro.

Olvidaron Dejar el El Fix del DataServer(Codigo ) Aprobecho y lo dejo aca.

Dejo toda la Funcion por si la prefieren remplazar completa

void FriendMemoSend(FHP_FRIEND_MEMO_SEND* lpMsg,int index)
{
   FHP_FRIEND_MEMO_SEND_RESULT pMsg;

   pMsg.h.set(0x70,sizeof(pMsg));

   pMsg.Number = lpMsg->Number;

   memcpy(pMsg.Name,lpMsg->Name,sizeof(pMsg.Name));

   pMsg.Result = 1;

   pMsg.WindowGuid = lpMsg->WindowGuid;

   gQueryManager.BindParameterAsString(1, lpMsg->ToName, sizeof(lpMsg->ToName)); //Fix DataServer N#1

   gQueryManager.BindParameterAsString(2, lpMsg->Subject, sizeof(lpMsg->Subject));

   gQueryManager.ExecQuery("WZ_WriteMail '%s',?,?,%d,%d", lpMsg->Name, lpMsg->Dir, lpMsg->Action);

   gQueryManager.Fetch();

   DWORD memo = gQueryManager.GetResult(0);

   DWORD guid = gQueryManager.GetResult(1);

   gQueryManager.Close();

   if(memo <= 10)
   {
      pMsg.Result = (BYTE)memo;
      CSDataSend(index,(BYTE*)&pMsg,pMsg.h.size);
      return;
   }

   BYTE MemoBuff[1000];

   memset(MemoBuff,0,sizeof(MemoBuff));

   memcpy(MemoBuff,lpMsg->Memo,lpMsg->MemoSize);

   gQueryManager.BindParameterAsBinary(1,MemoBuff,sizeof(MemoBuff));

   gQueryManager.BindParameterAsBinary(2,lpMsg->Photo,sizeof(lpMsg->Photo));

   gQueryManager.ExecQuery("UPDATE T_FriendMail SET Memo=?,Photo=? WHERE MemoIndex=%d AND GUID=%d",memo,guid);

   gQueryManager.Close();

   CSDataSend(index,(BYTE*)&pMsg,pMsg.h.size);

   if(pMsg.Result == 1)
   {
      CHARACTER_INFO CharacterInfo;

      if(gCharacterManager.GetCharacterInfo(&CharacterInfo,lpMsg->ToName) != 0)
      {
         gQueryManager.ExecQuery("SELECT MemoIndex,FriendName,wDate,Subject,bRead FROM T_FriendMail WHERE MemoIndex=%d AND GUID=%d",memo,guid);

         gQueryManager.Fetch();

         FHP_FRIEND_MEMO_LIST pMsg;

         pMsg.h.set(0x71,sizeof(pMsg));

         pMsg.Number = CharacterInfo.UserIndex;

         pMsg.MemoIndex = gQueryManager.GetAsInteger("MemoIndex");

         gQueryManager.GetAsString("FriendName",pMsg.SendName,sizeof(pMsg.SendName));

         memcpy(pMsg.RecvName,lpMsg->ToName,sizeof(pMsg.RecvName));

         gQueryManager.GetAsString("wDate",pMsg.Date,sizeof(pMsg.Date));

         gQueryManager.GetAsString("Subject",pMsg.Subject,sizeof(pMsg.Subject));

         pMsg.read = gQueryManager.GetAsInteger("bRead");

         CServerManager* lpServerManager = FindServerByCode(CharacterInfo.GameServerCode);

         if(lpServerManager != 0){CSDataSend(lpServerManager->m_index,(BYTE*)&pMsg,sizeof(pMsg));}

         gQueryManager.Close();
      }
   }
}