Tag Archive | hacking

Hack Story

Hola!

Muy buenas a todos/as!

No podía dejar de poner en este blog la web de Hack Story un proyecto que administra la ya conocida en la red Merce Molist.

Así que empezamos el “primer día” laborable en la que os recomiendo esta web.

Hack Story nace en verano de 2008 en Barcelona. Es un proyecto vivo de recuperación de la historia de la comunidad hacker.

Os copio y pego la definición del about:

Hack Story nace en verano de 2008 en Barcelona. Es un proyecto vivo de recuperación de la historia de la comunidad hacker.

Actualmente abarca la comunidad hacker hispana, aunque tiene vocación planetaria, de ahí el uso del inglés en los principales parámetros, categorías y textos de presentación. El contenido, en cambio, se escribe en el idioma de sus protagonistas. Otras lenguas, espacios y tiempos son bienvenidos.

Hack Story se manifiesta en la red a través de una plataforma wiki, para que cualquiera pueda corregir errores o añadir datos (debido a recientes bombardeos de “spam”, hemos moderado la introducción de nueva información en el wiki, así como la creación de nuev@os usuari@s).

Mercè Molist es la administradora del wiki en lo que a contenidos se refiere. Xavi Caballé aportó desinteresadamente el alojamiento en sus inicios y Alfonso, la personalización del wiki y ayuda técnica. Gracias a Harko por el apoyo gráfico y a Blackhold por actualizar el software, ambos de forma voluntaria. Actualmente la Hackstory tiene alojamiento y servicio técnico gratuitos en NONFQDN. ¡Gracias!

Hack Story está sujeta a su propia política, a la ética hacker y a las leyes vigentes, por este orden

Os adjunto un pantallazo del Hack Story

Os animo a pasaros por esta Wiki a aprender mas sobre los Hackers ;)

 

Saludos

0day en sistema operativo airos

Hola!

Muy buenas a todos/as!

Es MUY conocida la marca Ubiquity como producto Wireless. Su bajo coste, además de lo fácil, rápido y la gran cantidad de funcionalidades que tienen convierte este tipo de dispositivos en una gran ayuda en el montaje de infraestructuras Wireless.

El sistema operativo que administra estos dispositivos es airos, y no está exento a fallos de seguridad.

El fallo reside en que poder visitar la página de administración llamando directamente al admin.cgi del dispositivo.

Un PoC puede este mismo, nos encontramos con la pantalla de login:

En la URL solo tendríamos que invocar el archivo admin.cgi/sd.css para acceder a la parte de administración:

Este sería el resultado de poder pedir la petición al archivo de admin.CGI

Este fallo es bastante grande ya que permite administrar el dispositivo sin tener credenciales sobre el mismo.

Además gracias a Shodan es posible encontrar dispositivos con airos

http://www.shodanhq.com/search?q=airos

Es importante actualizar los dispositivos a última versión para corregir este fallo

Saludos cordiales

Preparando Windows XP-SP2 para entorno de pruebas de auditoría

Hola!

Muy buenas a todos/as!

Si queremos hacer prácticas con Metasploit u otras herramientas en un entorno controlado es bueno poder tener un sistema operativo configurado de manera que pueda ser susceptible a ataques para poder practicar. Los de Offensive Security tienen una guía de como configurar un Windows XP Service Pack 2 para habilitar servicios y aplicaciones vulnerables. Me he basado en la web de Offensive Security, recordad que para habilitar estos servicios deberemos de contar una licencia de Windows XP SP2.

No entraré en detalles de como realizar una instalación de Windows, sólo hay que instalarla con las opciones por defecto.

Una vez instalado vamos a configurar ciertas cosas.

  • Primero lo que haremos será deshabilitar protecciones nativas del sistema operativo además de desactivar las notificaciones.

Nos vamos al centro de Seguridad en Windows XP.

Desactivamos Firewall, antivirus, y vamos a las opciones de notificación que hay marcadas en la imagen

Desmarcamos las checkboxes.

Por defecto viene activado la compartición de archivos simple, pero  no está de mas revisarlo. En opciones de carpeta comprobamos que este marcado:

Ahora ya hemos configurado una parte de sistema operativo

  • Lo segundo es configurar servicios adicionales, por eso nos iremos a añadir o remover componentes de Windows en Agregar o quitar programas

Instalamos ISS y FTP. Además también instalamos SNMP

  • Tercero instalamos SQL Server Express para configurar una aplicación vulnerable

Para instalar SQL Server Express nos hará falta como requisitos Net Framework y Windows Installer 3.1

Net Framework 2.0

Windows Installer 3.1

SQL Server Express

En la instalación de SQLL Server Express cuando lleguemos al apartado de autenticación

Ponemos como password password1

Una vez terminada la instalación tenemos que configurarlo.

Accedemos al SQL Server Configuration Manager

En el apartado de TCP/IP en propiedades configuramos

Dejamos los valores como pone en la imagen

En el apartado de SQL Browser ponemos que se inicie de manera automática

Ahora para finalizar con Netstat miramos las conexiones

 

Primero bajamos Server Management Studio Express

Una vez abierto, nos autenticamos con sa y password1

Creamos una nueva base de datos

En la nueva base de datos creamos una tabla

Rellenamos la tabla con los siguientes campos

Rellenamos la tabla con datos reales

Ahora en el apartado de Seguridad le damos a New Login

En Login le damos a search y buscamos el usuario aspnet

Por último configuramos que el usuario aspnet sea owner de la base de datos que hemos creado

Para crear la aplicación vulnerable web creamos en wwwroot el archivo Default.aspx

<%@ Page Language=”C#” AutoEventWireup=”true” ValidateRequest=”false” CodeFile=”Default.aspx.cs” Inherits=”_Default” %> <%–the ValidateRequest=”true” in the page directive will check for <script> and other potentially dangerous inputs–%> <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” > <head runat=”server”>
</head> <body bgcolor=”white”> <form id=”form1″ runat=”server”> <div>
<font color=”black”><h1>Login Page</h1></font> <asp:Label ID=”lblErrorMessage” Font-Size=”Larger” ForeColor=”red” Visible=”false” runat=”server” />
<font color=”black”> <asp:Panel ID=”pnlLogin” Visible=”true” runat=”server”> <asp:Table ID=”tblLogin” runat=”server”> <asp:TableRow> <asp:TableCell> <asp:Literal Text=”Login:” runat=”server” /> </asp:TableCell> <asp:TableCell> <asp:TextBox ID=”txtLogin” width=”200″ BackColor=”white” ForeColor=”black” runat=”server” /> </asp:TableCell> </asp:TableRow> <asp:TableRow> <asp:TableCell> <asp:Literal ID=”ltrlPassword” Text=”Password” runat=”server” /> </asp:TableCell> <asp:TableCell> <asp:TextBox ID=”txtPassword” width=”200″ TextMode=”password” BackColor=”white” ForeColor=”black” runat=”server” /> </asp:TableCell> </asp:TableRow> <asp:TableRow> <asp:TableCell ColumnSpan=”2″ HorizontalAlign=”center”> <asp:Button ID=”btnSubmit” BorderColor=”white” BackColor=”white” ForeColor=”black” Text=”Login” OnClick=”btnSubmit_Clicked” runat=”server” /> <br /></asp:TableCell> </asp:TableRow> </asp:Table> <h5>Please dont hack this site :-( </asp:Panel> <asp:Panel ID=”pnlChatterBox” Visible=”false” runat=”server”> You haz logged in! :-) </asp:Panel> </font>
</div> </form> </body> </html>

También creamos el archivo Default.aspx.cs

using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
protected SqlConnection objConn = new SqlConnection(ConfigurationManager.ConnectionStrings["test"].ToString());
protected string sql = "";
protected void Page_Load(object sender, EventArgs e)
{
if((Request.QueryString["login"] != null) &&
(Request.QueryString["password"] != null))
{
Response.Write(Request.QueryString["login"].ToString() + "<BR><BR><BR>" + Request.QueryString["password"].ToString());

sql = "SELECT first_name + ' ' + last_name + ' ' + middle_name FROM users WHERE username = '" + Request.QueryString["login"] + "' " +
"AND password = '" + Request.QueryString["password"] + "'";
Login();
}
}

public void btnSubmit_Clicked(object o, EventArgs e)
{
lblErrorMessage.Text = "";
lblErrorMessage.Visible = false;

if (txtLogin.Text == "")
{
lblErrorMessage.Text = "Missing login name!<br />";
lblErrorMessage.Visible = true;
}
else
{
if (txtPassword.Text == "")
{
lblErrorMessage.Text = "Missing password!<br />";
lblErrorMessage.Visible = true;
}
else
{
sql = "SELECT first_name + ' ' + last_name + ' ' + middle_name FROM users WHERE username = '" + txtLogin.Text + "' " +
"AND password = '" + txtPassword.Text + "'";
Login();
}
}
}

private void Login()
{
//correct sql string using sql parameters.
//string sql = "SELECT first_name + ' ' + last_name FROM users WHERE username = @txtLogin " +
// "AND password = @txtPassword";

SqlCommand cmd = new SqlCommand(sql, objConn);

//each parameter needs added for each user inputted value...
//to take the input literally and not break out with malicious input....
//cmd.Parameters.AddWithValue("@txtLogin", txtLogin.Text);
//cmd.Parameters.AddWithValue("@txtPassword", txtPassword.Text);

objConn.Open();

if (cmd.ExecuteScalar() != DBNull.Value)
{
if (Convert.ToString(cmd.ExecuteScalar()) != "")
{
lblErrorMessage.Text = "Sucessfully logged in!";
lblErrorMessage.Visible = true;
pnlLogin.Visible = false;
pnlChatterBox.Visible = true;
}
else
{
lblErrorMessage.Text = "Invalid Login!";
lblErrorMessage.Visible = true;
}
}
else
{
lblErrorMessage.Text = "Invalid Username/";
lblErrorMessage.Visible = true;
}

objConn.Close();
}

//<style type="text/css">TABLE {display: none !important;}</style> //remove tables totally.
//<style type="text/css">body{background-color: #ffffff;}</style> //change background color
//<style type="text/css">div {display: none !important;}</style> //remove all divs, blank out page
//<script>alert("hello");</script>
//<meta http-equiv="refresh" content="0; url=http://www.google.com" />
}

Y por último creamos el archivo web.config

<?xml version=”1.0″?> <configuration> <connectionStrings> <add name=”test” connectionString=”server=localhost;database=WebApp;uid=sa;password=password1;” providerName=”System.Data.SqlClient”/> </connectionStrings> <system.web>
<!– DYNAMIC DEBUG COMPILATION Set compilation debug=”true” to enable ASPX debugging. Otherwise, setting this value to false will improve runtime performance of this application. Set compilation debug=”true” to insert debugging symbols(.pdb information) into the compiled page. Because this creates a larger file that executes more slowly, you should set this value to true only when debugging and to false at all other times. For more information, refer to the documentation about debugging ASP.NET files. –> <compilation defaultLanguage=”c#” debug=”true”> <assemblies> <add assembly=”System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A”/> <add assembly=”System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089″/></assemblies></compilation> <!– CUSTOM ERROR MESSAGES Set customErrors mode=”On” or “RemoteOnly” to enable custom error messages, “Off” to disable. Add <error> tags for each of the errors you want to handle.
“On” Always display custom (friendly) messages. “Off” Always display detailed ASP.NET error information. “RemoteOnly” Display custom (friendly) messages only to users not running on the local Web server. This setting is recommended for security purposes, so that you do not display application detail information to remote clients. –> <customErrors mode=”Off”/> <!– AUTHENTICATION This section sets the authentication policies of the application. Possible modes are “Windows”, “Forms”, “Passport” and “None”
“None” No authentication is performed. “Windows” IIS performs authentication (Basic, Digest, or Integrated Windows) according to its settings for the application. Anonymous access must be disabled in IIS. “Forms” You provide a custom form (Web page) for users to enter their credentials, and then you authenticate them in your application. A user credential token is stored in a cookie. “Passport” Authentication is performed via a centralized authentication service provided by Microsoft that offers a single logon and core profile services for member sites. –> <authentication mode=”Windows”/> <!– AUTHORIZATION This section sets the authorization policies of the application. You can allow or deny access to application resources by user or role. Wildcards: “*” mean everyone, “?” means anonymous (unauthenticated) users. –> <authorization> <allow users=”*”/> <!– Allow all users –> <!– <allow users=”[comma separated list of users]” roles=”[comma separated list of roles]“/> <deny users=”[comma separated list of users]” roles=”[comma separated list of roles]“/> –> </authorization> <!– APPLICATION-LEVEL TRACE LOGGING Application-level tracing enables trace log output for every page within an application. Set trace enabled=”true” to enable application trace logging. If pageOutput=”true”, the trace information will be displayed at the bottom of each page. Otherwise, you can view the application trace log by browsing the “trace.axd” page from your web application root. –> <trace enabled=”false” requestLimit=”10″ pageOutput=”false” traceMode=”SortByTime” localOnly=”true”/> <!– SESSION STATE SETTINGS By default ASP.NET uses cookies to identify which requests belong to a particular session. If cookies are not available, a session can be tracked by adding a session identifier to the URL. To disable cookies, set sessionState cookieless=”true”. –> <sessionState mode=”InProc” stateConnectionString=”tcpip=127.0.0.1:42424″ sqlConnectionString=”data source=127.0.0.1;Trusted_Connection=yes”
cookieless=”false” timeout=”20″/> <!– GLOBALIZATION This section sets the globalization settings of the application. –> <globalization requestEncoding=”utf-8″ responseEncoding=”utf-8″/> </system.web> </configuration>

Ya tenemos la aplicación web vulnerable, mas adelante haremos prueba de intrusión.

 

Saludos cordiales

 

 

 

Reconocimiento activo y pasivo

Hola!

Muy buenas a todos/as!

A la hora de hacer una auditoría es importante saber que vamos a auditar. Hay dos maneras de hacer esto, de manera activa o de manera pasiva.

La diferencia es, de manera activa que sería usando herramientas que generen avisos en el sitio remoto donde haremos la auditoría.

Y la alternativa sería de manera pasiva que sería usando herramientas que recopilen información de manera pasiva, es decir, que sea pública.

En un proceso de reconocimiento podemos indicar 10 fases:

  1. Bloques de red
  2. DNS
  3. Nombres y dominios
  4. Rango de red y subred
  5. Direcciones IP’s específicas
  6. Máquinas activas
  7. Puertos abiertos y aplicaciones
  8. Detectar sistema operativo
  9. Información relacionada con el email, teléfonos
  10. País y ciudad donde residen los servidores

Con esta información si logramos identificarla de manera pasiva tendremos muchos datos, sin que lo sepan,  para poder hacer el ataque.

Empezamos con los bloques de red, es decir, que direcciones IP utiliza la organización en cuestión

Podemos por ejemplo hacer una enumeración de los servidores de email, los servidores DNS etc.. Para ello podemos usar DNSrecon

macbook:dnsrecon seifreed$ python dnsrecon.py -d aeat.es
[*] Performing General Enumeration of Domain: aeat.es
[*]	SOA esifw1.tsai.es 213.0.43.37
[*]	NS esifw1.tsai.es 213.0.43.37
[*]	NS esifw2.tsai.es 213.4.194.5
[*]	MX correodeempresas.telefonica.es 212.170.236.87
[*]	A aeat.es 195.235.106.193
[*] Enumerating SRV Records
[-] No SRV Records Found for aeat.es
[*] 0 Records Found

Y también de la Agencia Tributaria

macbook:dnsrecon seifreed$ python dnsrecon.py -d agenciatributaria.es
[*] Performing General Enumeration of Domain: agenciatributaria.es
[*]	SOA ns1.telefonica-data.com 213.0.43.37
[*]	NS ns2.telefonica-data.com 213.4.194.5
[*]	NS ns1.telefonica-data.com 213.0.43.37
[-] Could not Resolve MX Records for agenciatributaria.es
[*]	A agenciatributaria.es 212.170.236.148
[*] Enumerating SRV Records
[-] No SRV Records Found for agenciatributaria.es
[*] 0 Records Found

Ya hemos obtenido diferente información acerca de los NS y los MX y los DNS

La segunda parte que era obtener información acerca de los DNS, ya los tenemos.

Ahora obtendremos los diferentes dominios, podemos usar para ello Maltego

Ya tenemos mas información, ahora con otra herramienta como es netcraft podemos obtener sistemas operativos y demás

La información la podemos obtener desde aquí

Informción NetCraft

 

Estos son algunas de las cosas que podemos obtener de manera pasiva.

Así que ya sabéis

 

Un saludo