• EnglishSpanishGermanFrenchPolishChinese (Traditional)


EnglishSpanishGermanFrenchPolishChinese (Traditional)

Operating systems, scripting, PowerShell and security

Operating systems, software development, scripting, PowerShell tips, network and security

Menú principal
  • Categorías
  • Cursos
  • Libro de PowerShell
  • Lo mejor
  • Lo último
  • Proyectos
  • Contactar
Ir al contenido

Sistema que permite almacenar en un fichero los credenciales de usuario de Windows haciendo una petición a un servidor web mediante el método POST. Después obtener el password en texto plano

Contenidos

  • Fichero que almacena los credenciales que llegan por método POST
  • Script en PowerShell que envía los credenciales
  • Ejemplo de fichero con los credenciales que se crea en el servidor
  • Script en PowerShell que lee los credenciales almacenados en el servidor y comprueba si puede abrir una aplicación con dichos credenciales
  • Si los credenciales son correctos no aparece mensaje de error y se abre la aplicación
  • Si los credenciales son incorrectos aparece mensaje de error
  • Obtener el password en texto plano

Fichero que almacena los credenciales que llegan por método POST

Cuando llegan los credenciales se almacenan en un fichero cuyo nombre es fichero12.txt, el usuario y el password se separan por el caracter «|»

PHP
1
2
3
4
5
<?php
$fh = fopen("fichero12.txt", 'w') or die("Se produjo un error al crear el archivo");
fwrite($fh, $_POST['nombre'] . '|' . $_POST['pass']) or die("No se pudo escribir en el archivo");
fclose($fh);
?>

Script en PowerShell que envía los credenciales

PowerShell
1
2
3
4
5
# Almacenar credenciales en una variable y enviarlo por método POST a un servidor
$enviar = Get-Credential | Select Username,@{n="Password"; e={$_.password | ConvertFrom-SecureString}}
 
$postParams = @{nombre=($enviar.UserName);pass=($enviar.Password)}
$web=Invoke-WebRequest -Uri 'https://jesusninoc.com/no212.php' -Method Post -Body $postParams

Ejemplo de fichero con los credenciales que se crea en el servidor

Script en PowerShell que lee los credenciales almacenados en el servidor y comprueba si puede abrir una aplicación con dichos credenciales

PowerShell
1
2
3
4
# Abrir una aplicación por ejemplo Notepad con los credenciales que se han almacenado en el paso anterior
$jsonc = (iwr "https://jesusninoc.com/fichero12.txt").content
$cred = New-Object -TypeName PSCredential $jsonc.Split("|")[0],($jsonc.Split("|")[1] | ConvertTo-SecureString)
Start-Process notepad -Credential $cred

Si los credenciales son correctos no aparece mensaje de error y se abre la aplicación

Si los credenciales son incorrectos aparece mensaje de error


Obtener el password en texto plano

PowerShell
1
2
3
4
5
6
7
8
9
# Extraer password de tipo SecureString
 
$jsonc = (iwr "https://jesusninoc.com/fichero12.txt").content
 
$cred = New-Object -TypeName PSCredential $jsonc.Split("|")[0],($jsonc.Split("|")[1] | ConvertTo-SecureString)
 
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($cred.Password)
$PlainPassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)
$PlainPassword
Publicado el día 22 de mayo de 2020

CATEGORÍAS

PHP, PowerShell, Seguridad, Servidores

ETIQUETAS

ConvertFrom-SecureString, ConvertTo-SecureString, env, Get-Credential, HTTPS, Invoke-WebRequest, iwr, Jesús Niño, Jesús Niño Camazón, New-Object, password, SecureString, Split, Start-Process, System.Runtime.InteropServices, Windows

MÁS

  • Técnico en Sistemas Microinformáticos y Redes
  • Crear un sistema en PHP que permita almacenar cuatro valores (longitud, latitud, altitud y velocidad) en un fichero con el método POST
  • Administración de servidores de aplicaciones (Despliegue de aplicaciones web)
  • Adopción de pautas de seguridad informática (Seguridad y alta disponibilidad)
  • Listar los nombres de los ficheros DLL que hay en System32 con PowerShell
  • Administración de servidores Web (Despliegue de aplicaciones web)