elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  [Aporte] Controlar node.js desde navegador, vanilla javascript.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Aporte] Controlar node.js desde navegador, vanilla javascript.  (Leído 2,864 veces)
@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.399


Turn off the red ligth


Ver Perfil WWW
[Aporte] Controlar node.js desde navegador, vanilla javascript.
« en: 13 Mayo 2020, 07:48 am »

Controlar node.js desde un navegador.

Cómo funciona?
Guardas el código node.js como servidor.js en el equipo a ser controlado. Cambia la ip por la tuya actual.
Guardas el código navegador como cliente.html. Cambia la ip por la ip actual del equipo corriendo el servidor.
Ejecuta el código node.js con el comando node servidor.js
Abre el client.html en el equipo que va a controlar el servidor. Escribe @seguido del comando en el priner campo y dale al botón Enter.

Cómo y para qué lo uso yo?
Activo la zona wi-fi en un Android con termux.
Me conecto al wi-fi con otro Android incompatible con Termux.
Controlo el smartphone con node.js y lo uso de servidor para desarrollo, usar bots, herramientas de hacking...

Algo más?
Puedes controlar el node escribiendo directamente sobre la barra de direcciones comandos simples sin espacios ni otros caracteres que tu navegador codifique.
CÓDIGO VULNERABLE A CSRF Y MITM entre otros.


Código navegador:
Código
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>R.Control</title>
  6. <style>
  7. textarea {
  8. height: 30em;
  9. width: 20em;
  10.  display: block;
  11. }
  12. </style>
  13. </head>
  14. <body>
  15. <input type="text" id="comando">
  16. <button type="button" id="bEnter">Enter</button>
  17. <textarea id="res"></textarea>
  18. <script>
  19. document.querySelector("#bEnter").onclick=function() {
  20. var xhr = new XMLHttpRequest();
  21. xhr.open("GET", "http://192.168.5.1:8080/?comando=" + document.querySelector("#comando").value , true);
  22. xhr.send();
  23. xhr.onreadystatechange = function() {
  24.  
  25.  if (xhr.readyState == 4) {
  26.  
  27.    if (xhr.status == 0 || xhr.status == 200) {
  28.  
  29.    try {
  30. alert(xhr.getAllResponseHeaders());
  31.  
  32.      document.querySelector("#res").value = xhr.responseText;
  33.      }catch(err){alert(err)}
  34.    }
  35.  }
  36. }
  37. }
  38. </script>
  39. </body>
  40. </html>

Código node.js
Código
  1. const { http } = require("http");
  2. const { fs } = require("fs");
  3. const { url } = require("url");
  4. const { exec } = require("child_process");
  5.  
  6. const PUERTO = 8080;
  7. const IP = "192.168.5.1";
  8.  
  9. http.createServer( function (request, response) {  
  10.  
  11.   var pathname = url.parse(request.url).pathname;
  12.   var q = url.parse(request.url, true);
  13.   var comando = q.query.comando;
  14.   var output = "";
  15.   console.log("Request for " + pathname + " received.");
  16.   if(comando !== undefined) {
  17.     console.log("Comando " + comando);
  18.     if(comando.substr(0,1) == "@") {
  19.       exec(comando.substr(1), (error, stdout, stderr) => {
  20. if(error) {
  21.          console.log("Error: " + error.message);
  22. } if(stderr) {
  23.          console.log("Error: " + stderr);
  24.  return;
  25. }
  26. console.log("Output: " + stdout);
  27. output += stdout;
  28.  
  29. response.setHeader("Access-Control-Allow-Origin", "*");
  30. response.writeHead(200, {'Content-Type': 'text/html'});
  31. response.write(output);
  32. response.end();
  33.  
  34.       });
  35.     }
  36.   }
  37. }).listen(PUERTO, IP);
  38.  
  39. console.log("Server listening at " + IP + ":" + PUERTO);


En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines