filtered SQL Injections - kimeras

hola otra vez aca posteando aver para mi pata panita -carlos_bre aca le va esto creo le va servir y esta muy bonito como casi no hay mucho en la red sobre este tema pero bonito espero q les guste amigos:
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivZdfSP6Vf7bixt5laBOFGF7q_sMRbufp61WSMoLtUrmh8MY4rJIIqe2FWh8GEoGdw4A_igbBRe76vHyji3ZexIJ1ijn1wPMg0i3OfeU0KDrlPKuIaZIIFbNxRtEw2nxIYnRCWvzAgNCoT/s400/toolza-sql-injection.jpg

While participating at some CTF challenges like Codegate10 or OWASPEU10 recently I noticed that it is extremely trendy to build SQL injection challenges with very tough filters which can be circumvented based on the flexible MySQL syntax. In this post I will show some [COLOR="red"]example [/COLOR]filters and how to exploit them which may also be interesting when exploiting real life SQL injections which seem unexploitable at first glance.  For the following examples I’ll use this basic vulnerable PHP script:

Dorks

Algunos dorks bastante complejos que realizé para automatizar ...

Modulos PHP que utilizen el metodo GET para enviar variables, propensos a una posible SQLi:

Vamos a ver como realizar dorks para encontrar sitios posibles para testear vulnerabilidades SQLi, supongamos que queramos buscar archivos unicamente en PHP y que la extension no esté oculta en la url (www.sitio.com/index?pagina=1 por ejemplo). Para esto empezaremos por indicarle a google que buscaremos solo archivos de extension php con seguido, vamos a indicarle que busque sitios donde la URL contenga variables llamadas id como normalmente se buscan, para eso a nuestro dork le agregamos inurl:.php?id= y bueno, porque no especificarle que sea un sitio bajo un dominio argentino por ejemplo, al final le agregaremos y bueno tenemos un dork básico para buscar sitios para probar suerte con SQLi:

Código:
Código PHP:
filetype:php inurl:.php?id= site:.com.ar
Ahora si lo que queremos es hacer un dork mas pr0 vamos a tener que usar mas la imaginacion y darle opcionales a google para que busque. Por ejemplo, nombres comunes que se utilizan en variables del tipo MySQL son id, articulo, noticia, bueno hay muchos mas pero quedemosnos con esoso, para decirle a google que queremos que dentro de nuestro dork anterior busque URL con dichos strings como variables GET, usaremos el parentesis () para agrupar y la doble barra vertical para indicar que esto ó lo otro, nos quedará y aplicado al dork sería . Como verán, lo aplique como una string, el parentesis se utiliza en string, no lo mezclen directamente con comandos de búsqueda, pero espera que para los que le gustan los resultados a lo bruto también podemos usar comodines entre el texto para especificar que puede ir cualquier texto entre medio, de esa manera anidamos dos comodines tanto en el modulo PHP, como en la variable GET quedandonos así .

Código:
Código PHP:
filetype:php inurl:(noticia||articulo||ver||galeria).php?(id||articulo_id||noticia_id)=
Código:
Código PHP:
filetype:php inurl:*.php?*=
Y si buscamos alguno más práctico aún, le añadimos para que el valor de la variable sea un numero integro, lo más vulnerable a SQLi que se vé...

Código:
Código PHP:
filetype:php inurl:*.php?*=0..999999
Y si nos queremos hacer los anarquicos, podemos seguir filtrando, esta vez por dominio...

Código:
Código PHP:
filetype:php inurl:*.php?*=0..999999 site:gov.ar
Buscar errores MySQL para dar lugar a una posible SQLi:

También se nos puede ocurrir buscar directamente sitios que han sido indexados por google mientras estos tenian algun tipo de error MySQL, para esto nos remontaremos a ver tipicos errores MySQL como
Código PHP:
Warning: Invalid argument supplied for foreach() in /home/perko021/public_html/modules/mod_mainmenu.php on line 263
o (por ejemplo), notamos que partes son iguales siempre y cuales cambian, y de ahí, creamos nuestro dork, el primer aviso "Warning: " está siempre obviamente, luego de eso viene la declaración del error que puede contener palabras como "columns","sintax","invalid","argument", luego de decirnos la ruta del modulo nos indica en que lina falla, eso también es estático y lo agregamos al final. Utilizando lo que aprendimos hace un rato podemos llegar a crear el dork con facilidad:

Código:
Código PHP:
filetype:php inurl:.php?*= intext:"Warning:"*(argument||sintax||columns)*"on line "*
Servidores apache públicos:

Código:
Código:
intitle:index.of intext:"Last Modified" intext:Apache/0..9
Luego del dork le ingresan algun archivo que quieran buscar si quieren....

Código:
Código HTML:
intitle:index.of intext:"Last Modified" intext:Apache/0..9 Win*xp*.iso
Resultados como para descargarse el servidor entero, ja.

Dorks

Algunos dorks bastante complejos que realizé para automatizar ...

Modulos PHP que utilizen el metodo GET para enviar variables, propensos a una posible SQLi:

Vamos a ver como realizar dorks para encontrar sitios posibles para testear vulnerabilidades SQLi, supongamos que queramos buscar archivos unicamente en PHP y que la extension no esté oculta en la url (www.sitio.com/index?pagina=1 por ejemplo). Para esto empezaremos por indicarle a google que buscaremos solo archivos de extension php con seguido, vamos a indicarle que busque sitios donde la URL contenga variables llamadas id como normalmente se buscan, para eso a nuestro dork le agregamos inurl:.php?id= y bueno, porque no especificarle que sea un sitio bajo un dominio argentino por ejemplo, al final le agregaremos y bueno tenemos un dork básico para buscar sitios para probar suerte con SQLi:

Código:
Código PHP:
filetype:php inurl:.php?id= site:.com.ar
Ahora si lo que queremos es hacer un dork mas pr0 vamos a tener que usar mas la imaginacion y darle opcionales a google para que busque. Por ejemplo, nombres comunes que se utilizan en variables del tipo MySQL son id, articulo, noticia, bueno hay muchos mas pero quedemosnos con esoso, para decirle a google que queremos que dentro de nuestro dork anterior busque URL con dichos strings como variables GET, usaremos el parentesis () para agrupar y la doble barra vertical para indicar que esto ó lo otro, nos quedará y aplicado al dork sería . Como verán, lo aplique como una string, el parentesis se utiliza en string, no lo mezclen directamente con comandos de búsqueda, pero espera que para los que le gustan los resultados a lo bruto también podemos usar comodines entre el texto para especificar que puede ir cualquier texto entre medio, de esa manera anidamos dos comodines tanto en el modulo PHP, como en la variable GET quedandonos así .

Código:
Código PHP:
filetype:php inurl:(noticia||articulo||ver||galeria).php?(id||articulo_id||noticia_id)=
Código:
Código PHP:
filetype:php inurl:*.php?*=
Y si buscamos alguno más práctico aún, le añadimos para que el valor de la variable sea un numero integro, lo más vulnerable a SQLi que se vé...

Código:
Código PHP:
filetype:php inurl:*.php?*=0..999999
Y si nos queremos hacer los anarquicos, podemos seguir filtrando, esta vez por dominio...

Código:
Código PHP:
filetype:php inurl:*.php?*=0..999999 site:gov.ar
Buscar errores MySQL para dar lugar a una posible SQLi:

También se nos puede ocurrir buscar directamente sitios que han sido indexados por google mientras estos tenian algun tipo de error MySQL, para esto nos remontaremos a ver tipicos errores MySQL como
Código PHP:
Warning: Invalid argument supplied for foreach() in /home/perko021/public_html/modules/mod_mainmenu.php on line 263
o (por ejemplo), notamos que partes son iguales siempre y cuales cambian, y de ahí, creamos nuestro dork, el primer aviso "Warning: " está siempre obviamente, luego de eso viene la declaración del error que puede contener palabras como "columns","sintax","invalid","argument", luego de decirnos la ruta del modulo nos indica en que lina falla, eso también es estático y lo agregamos al final. Utilizando lo que aprendimos hace un rato podemos llegar a crear el dork con facilidad:

Código:
Código PHP:
filetype:php inurl:.php?*= intext:"Warning:"*(argument||sintax||columns)*"on line "*
Servidores apache públicos:

Código:
Código:
intitle:index.of intext:"Last Modified" intext:Apache/0..9
Luego del dork le ingresan algun archivo que quieran buscar si quieren....

Código:
Código HTML:
intitle:index.of intext:"Last Modified" intext:Apache/0..9 Win*xp*.iso
Resultados como para descargarse el servidor entero, ja.

Bad chars y encoders/decoders en payloads

s por eso que voy a introducir un poco estos conceptos:
Una payload como todos sabemos es una combinacion de codigo y datos que se inyectan en un proceso corriendo para explotarlo, puede ser para un buffer overflow, memory corruption, heap overflow, etc.
Esta payload generalmente debe tener unos requisitos para que el programa la acepte, por ejemplo si la payload pasa por strcpy no podemos tener un caracter nulo porque no terminaria de copiar todo el buffer, sino que lo haria hasta donde este el caracter nulo (0).
Ejemplo:

Código PHP:
buffer = "\x12\x41\x23\x34\x21\x34\x23\x00\x98\x93\x83\x11";
__________________________________||______________ _
strcpy copia hasta aca, el resto no lo copia

A ese byte lo consideramos un bad char y es lo que tenemos que evitar, se puede utilizar un encoder en asm si nuestra payload va a ser ejecutada, sino tenemos que pensar en cambiar la payload.
El caracter nulo es un bad char caracteristico de strcpy y varias funciones mas porque es el caracter que se usa para terminar las cadenas en C (y varios lenguajes mas). Pero si nos encontramos ante un servidor HTTP por ejemplo tendriamos que tener en cuenta otros bad chars como es el caso de '\r' o '\n' que son terminadores de linea en el protocolo y seguramente nos van a interrumpir la payload cuando el server la parsee.
Otros protocolos/programas tendran otros bad chars y es por eso que a veces tendremos que reversear el programa si nuestra payload por alguna razon no llega a provocar la corrupcion que estamos buscando.

Aqui por ejemplo tenemos un pequeno programa en python para buscar bad chars en una payload, solamente ponemos nuestra payload y los bad chars que no acepta el programa que queremos explotar.

Código
Code (python):
Código PHP:
payload = "\x12\x41\x23\x34\x21\x34\x23\x00\x98\x93\x83\x11"
bad_chars = "\x00\n"

for offset in range(0, len(payload)):
if(
payload[offset] in bad_chars):
print
"tienes un bad char en el offset %s" % (offset)

Por otro lado como habia mencionado hay veces que no podemos remover ese bad char porque puede ser una intruccion fundamental en nuestra shellcode como un long jump obligatorio a una direccion que contenga 0.
Aqui entran en juego los encoders, lo que se hace es codificar la payload y agregar un decoder en la misma, que son pequenos stubs en ASM que se ejecutan antes de la payload y decodifican el resto.
Una de las codificaciones mas usadas es la que se hace con XOR, como bien sabemos si nosotros xoreamos un byte con otro podemos volver al estado inicial volviendolo a xorear con el mismo byte.

Ejemplo :
Código PHP:
10 XOR 32 = 22
22
XOR 32 = 10
Ahora que tenemos la teoria, sabemos que podemos xorear toda la payload y agregar un header que la vuelva a su estado decodificado.

Un codificador de payload podria ser asi:

Código
Code (c):
Código PHP:
#include

int size_payload = 12;
char *payload = "\x12\x41\x23\x34\x21\x34\x23\x00\x98\x93\x83\x11";
char xor_code = 0x22; //este byte tiene que ser igual en el stub en asm

int main(int argc, char *argv[])
{
int i;
for(
i = 0; i < size_payload; i++){
printf("0\\x%x", (char *)payload[i] ^ xor_code);
}
}

y el stub que se le agregaria a una payload seria algo asi:

Código
Code (asm):
Código PHP:
jmp call_inicio
inicio
:
pop esi ; sacamos la direccion de la payload codificada de la pila y la guardamos en esi
mov eax
, payload_code ; con el byte que xoreamos nuestra payload
xor ebx,ebx ;
mov ecx, payload_size ; el tamano que tiene nuestra payload
otra_vez
:
xor
dword ptr[esi+ebx], eax ; aqui aplicamos el xor
inc eax ; aumentamos eax, es con el que contamos las posiciones de memoria
dec ecx
jnz otra_vez
; si no terminamos de decodificar la payload saltamos a otra_vez
jmp comienzo_payload
; una vez que terminamos saltamos a la payload real
call_inicio
:
call inicio ; usamos este truco para guardar la direccion de memoria donde comienza la payload, recordemos que call pone en la pila la
;siguiente memoria
comienzo_payload
:
;
aqui va nuestra payload codificada.
Como veran es un codigo de apenas unos bytes y aunque este no esta optimizado pueden conseguir encoders/decoders muy eficientes que pueden hasta comprimir la payload si es muy grande

Bad chars y encoders/decoders en payloads

s por eso que voy a introducir un poco estos conceptos:
Una payload como todos sabemos es una combinacion de codigo y datos que se inyectan en un proceso corriendo para explotarlo, puede ser para un buffer overflow, memory corruption, heap overflow, etc.
Esta payload generalmente debe tener unos requisitos para que el programa la acepte, por ejemplo si la payload pasa por strcpy no podemos tener un caracter nulo porque no terminaria de copiar todo el buffer, sino que lo haria hasta donde este el caracter nulo (0).
Ejemplo:

Código PHP:
buffer = "\x12\x41\x23\x34\x21\x34\x23\x00\x98\x93\x83\x11";
__________________________________||______________ _
strcpy copia hasta aca, el resto no lo copia

A ese byte lo consideramos un bad char y es lo que tenemos que evitar, se puede utilizar un encoder en asm si nuestra payload va a ser ejecutada, sino tenemos que pensar en cambiar la payload.
El caracter nulo es un bad char caracteristico de strcpy y varias funciones mas porque es el caracter que se usa para terminar las cadenas en C (y varios lenguajes mas). Pero si nos encontramos ante un servidor HTTP por ejemplo tendriamos que tener en cuenta otros bad chars como es el caso de '\r' o '\n' que son terminadores de linea en el protocolo y seguramente nos van a interrumpir la payload cuando el server la parsee.
Otros protocolos/programas tendran otros bad chars y es por eso que a veces tendremos que reversear el programa si nuestra payload por alguna razon no llega a provocar la corrupcion que estamos buscando.

Aqui por ejemplo tenemos un pequeno programa en python para buscar bad chars en una payload, solamente ponemos nuestra payload y los bad chars que no acepta el programa que queremos explotar.

Código
Code (python):
Código PHP:
payload = "\x12\x41\x23\x34\x21\x34\x23\x00\x98\x93\x83\x11"
bad_chars = "\x00\n"

for offset in range(0, len(payload)):
if(
payload[offset] in bad_chars):
print
"tienes un bad char en el offset %s" % (offset)

Por otro lado como habia mencionado hay veces que no podemos remover ese bad char porque puede ser una intruccion fundamental en nuestra shellcode como un long jump obligatorio a una direccion que contenga 0.
Aqui entran en juego los encoders, lo que se hace es codificar la payload y agregar un decoder en la misma, que son pequenos stubs en ASM que se ejecutan antes de la payload y decodifican el resto.
Una de las codificaciones mas usadas es la que se hace con XOR, como bien sabemos si nosotros xoreamos un byte con otro podemos volver al estado inicial volviendolo a xorear con el mismo byte.

Ejemplo :
Código PHP:
10 XOR 32 = 22
22
XOR 32 = 10
Ahora que tenemos la teoria, sabemos que podemos xorear toda la payload y agregar un header que la vuelva a su estado decodificado.

Un codificador de payload podria ser asi:

Código
Code (c):
Código PHP:
#include

int size_payload = 12;
char *payload = "\x12\x41\x23\x34\x21\x34\x23\x00\x98\x93\x83\x11";
char xor_code = 0x22; //este byte tiene que ser igual en el stub en asm

int main(int argc, char *argv[])
{
int i;
for(
i = 0; i < size_payload; i++){
printf("0\\x%x", (char *)payload[i] ^ xor_code);
}
}

y el stub que se le agregaria a una payload seria algo asi:

Código
Code (asm):
Código PHP:
jmp call_inicio
inicio
:
pop esi ; sacamos la direccion de la payload codificada de la pila y la guardamos en esi
mov eax
, payload_code ; con el byte que xoreamos nuestra payload
xor ebx,ebx ;
mov ecx, payload_size ; el tamano que tiene nuestra payload
otra_vez
:
xor
dword ptr[esi+ebx], eax ; aqui aplicamos el xor
inc eax ; aumentamos eax, es con el que contamos las posiciones de memoria
dec ecx
jnz otra_vez
; si no terminamos de decodificar la payload saltamos a otra_vez
jmp comienzo_payload
; una vez que terminamos saltamos a la payload real
call_inicio
:
call inicio ; usamos este truco para guardar la direccion de memoria donde comienza la payload, recordemos que call pone en la pila la
;siguiente memoria
comienzo_payload
:
;
aqui va nuestra payload codificada.
Como veran es un codigo de apenas unos bytes y aunque este no esta optimizado pueden conseguir encoders/decoders muy eficientes que pueden hasta comprimir la payload si es muy grande

Protocols

aca les dejo unos Protocolos espero q les sirva:
http://download.oracle.com/docs/cd/B14099_19/portal.1012/b14037/img/cg_protocol.gif
1. Physical Layer

RS-232
RS-449
V.35
V.34
I.430
I.431
T1
E1
POTS
SONET/SDH
OTN
DSL
802.11a/b/g/n PHY
ITU-T G.hn PHY
Ethernet
USB
Bluetooth
2. Data Link Layer

ARP
CSLIP
SLIP
Ethernet
Frame relay
ITU-T G.hn DLL
L2TP
PPP
PPTP
3. Network Layer

IP
ICMP
IPsec
IGMP
IPX
AppleTalk
4. Transport Layer

TCP
UDP
SCTP
DCCP
5. Session Layer

Named Pipes
NetBIOS
SAP
6. Presentation Layer

MIME
XDR
TLS
SSL
AFP, Apple Filing Protocol
ASCII, American Standard Code for Information Interchange
EBCDIC, Extended Binary Coded Decimal Interchange Code
ICA, Independent Computing Architecture, the Citrix system core protocol
LPP, Lightweight Presentation Protocol
NCP, NetWare Core Protocol
NDR, Network Data Representation
XDR, eXternal Data Representation
X.25 PAD, Packet Assembler/Disassembler Protocol
7. Application Layer



3
3G-324M
9
9P
A
ARPA Host Name Server Protocol
Advanced Message Queuing Protocol
Aggregate Level Simulation Protocol
Application Layer
Architecture for Control Networks
B
BitTorrent (protocol)
User:Chrisballinger/Anomos (protocol)
Boot Service Discovery Protocol
C
CCSO Nameserver
CHARGEN
Camel Application Part
Cipher suite
D
DAYTIME
DISCARD
Direct Save Protocol
Directory Access Protocol
Distributed Interactive Simulation
Domain Name System
Dynamic Host Configuration Protocol
E
E2eTechnology
EAIF
EGL (OpenGL)
Echo protocol
Etch (protocol)
F
FTP servlet
File Access Listener
File Transfer Protocol
Files2u
FTAM
G
Gnutella
Gopher (protocol)
H
HTTP body data
Hyper Text Coffee Pot Control Protocol
Hypertext Transfer Protocol
I
IBM Advanced Program-to-Program Communication
INAP
ISDN User Part
Internet Communications Engine
Internet Open Trading Protocol
Internet Relay Chat
ISCSI
J
Java Remote Method Protocol
L
Lightweight Directory Access Protocol
Link-local Multicast Name Resolution
List of video telecommunication services and product brands
List of web service protocols
M
MIME
MIMIC Simulator
MM7
Mail Transfer Protocol
Media Resource Control Protocol
Message Oriented Text Interchange Systems
Message Session Relay Protocol
Message send protocol
Microsoft Media Server
Mobile Application Part
N
NETCONF
National Information Standards Organization Circulation Interchange Protocol
National Transportation Communications for Intelligent Transportation System Protocol
Net-SNMP
Network File System (protocol)
Network News Transfer Protocol
O
Open Settlement Protocol
P
Persistent Shared Object Model
R
RADIUS
RTP Control Protocol
RWhois
Real Data Transport
Real Time Streaming Protocol
Real-time Transport Protocol
Realtek Remote Control Protocol
Remote Desktop Protocol
Remote procedure call
S
SPDY
Server Message Block
Server Routing Protocol
Service discovery
Service layer
Session Initiation Protocol
Session Traversal Utilities for NAT
Shared resource
Simple Network Management Protocol
Simple Sensor Interface protocol
Simple Update Protocol
Skinny Call Control Protocol
SOAP
Streaming Text Orientated Messaging Protocol
T
TIME protocol
Tabular Data Stream
Telnet
Apache Thrift
Transport Layer Security
V
Variant object
Video Acceleration API
W
WebNFS
X
X Image Extension
X Window System
X Window System protocols and architecture
X video extension
X-Video Bitstream Acceleration
X-Video Motion Compensation
X.400
X.500
XML Configuration Access Protocol
XML
Z Z39.50

Protocols

aca les dejo unos Protocolos espero q les sirva:
http://download.oracle.com/docs/cd/B14099_19/portal.1012/b14037/img/cg_protocol.gif
1. Physical Layer

RS-232
RS-449
V.35
V.34
I.430
I.431
T1
E1
POTS
SONET/SDH
OTN
DSL
802.11a/b/g/n PHY
ITU-T G.hn PHY
Ethernet
USB
Bluetooth
2. Data Link Layer

ARP
CSLIP
SLIP
Ethernet
Frame relay
ITU-T G.hn DLL
L2TP
PPP
PPTP
3. Network Layer

IP
ICMP
IPsec
IGMP
IPX
AppleTalk
4. Transport Layer

TCP
UDP
SCTP
DCCP
5. Session Layer

Named Pipes
NetBIOS
SAP
6. Presentation Layer

MIME
XDR
TLS
SSL
AFP, Apple Filing Protocol
ASCII, American Standard Code for Information Interchange
EBCDIC, Extended Binary Coded Decimal Interchange Code
ICA, Independent Computing Architecture, the Citrix system core protocol
LPP, Lightweight Presentation Protocol
NCP, NetWare Core Protocol
NDR, Network Data Representation
XDR, eXternal Data Representation
X.25 PAD, Packet Assembler/Disassembler Protocol
7. Application Layer



3
3G-324M
9
9P
A
ARPA Host Name Server Protocol
Advanced Message Queuing Protocol
Aggregate Level Simulation Protocol
Application Layer
Architecture for Control Networks
B
BitTorrent (protocol)
User:Chrisballinger/Anomos (protocol)
Boot Service Discovery Protocol
C
CCSO Nameserver
CHARGEN
Camel Application Part
Cipher suite
D
DAYTIME
DISCARD
Direct Save Protocol
Directory Access Protocol
Distributed Interactive Simulation
Domain Name System
Dynamic Host Configuration Protocol
E
E2eTechnology
EAIF
EGL (OpenGL)
Echo protocol
Etch (protocol)
F
FTP servlet
File Access Listener
File Transfer Protocol
Files2u
FTAM
G
Gnutella
Gopher (protocol)
H
HTTP body data
Hyper Text Coffee Pot Control Protocol
Hypertext Transfer Protocol
I
IBM Advanced Program-to-Program Communication
INAP
ISDN User Part
Internet Communications Engine
Internet Open Trading Protocol
Internet Relay Chat
ISCSI
J
Java Remote Method Protocol
L
Lightweight Directory Access Protocol
Link-local Multicast Name Resolution
List of video telecommunication services and product brands
List of web service protocols
M
MIME
MIMIC Simulator
MM7
Mail Transfer Protocol
Media Resource Control Protocol
Message Oriented Text Interchange Systems
Message Session Relay Protocol
Message send protocol
Microsoft Media Server
Mobile Application Part
N
NETCONF
National Information Standards Organization Circulation Interchange Protocol
National Transportation Communications for Intelligent Transportation System Protocol
Net-SNMP
Network File System (protocol)
Network News Transfer Protocol
O
Open Settlement Protocol
P
Persistent Shared Object Model
R
RADIUS
RTP Control Protocol
RWhois
Real Data Transport
Real Time Streaming Protocol
Real-time Transport Protocol
Realtek Remote Control Protocol
Remote Desktop Protocol
Remote procedure call
S
SPDY
Server Message Block
Server Routing Protocol
Service discovery
Service layer
Session Initiation Protocol
Session Traversal Utilities for NAT
Shared resource
Simple Network Management Protocol
Simple Sensor Interface protocol
Simple Update Protocol
Skinny Call Control Protocol
SOAP
Streaming Text Orientated Messaging Protocol
T
TIME protocol
Tabular Data Stream
Telnet
Apache Thrift
Transport Layer Security
V
Variant object
Video Acceleration API
W
WebNFS
X
X Image Extension
X Window System
X Window System protocols and architecture
X video extension
X-Video Bitstream Acceleration
X-Video Motion Compensation
X.400
X.500
XML Configuration Access Protocol
XML
Z Z39.50

Frameworks PHP MVC ligeros/livianos

Actualmente hay muchos frameworks conocidos de PHP, este lenguaje cada día está evolucionando gracias a la gran comunidad que lo apoya.
Claramente hay muchos frameworks famosos como CakePHP, Zend, Symfony, CodeIgniter, Yii y muchos más, pero la mayoría son bastante pesados.
En este artículo vamos a mencionar algunos frameworks livianos que dispongan de documentación y lo más importante es que, una vez descomprimido que ocupen poco espacio y que estén bajo una licencia libre.
PHP Fat-Free Framework

Framework bastante conocido en la comunidad PHP, caracterizado por su sencillez.
Características destacables:
  • Comprimido pesa 55 KB.
  • Sistema de Plantillas.
  • Dispone de Sistema Caché.
  • Monitor de Ancho de Banda utilizado.
  • Protección ante ataques Denial Of Service (DoS).
  • Dispone de Plug-Ins.
  • Soporte para varias APIs, como Google, Twitter, etc.
Enlace | Página oficial
DOO PHP Framework

Se autocaracteriza como posiblemente uno de los frameworks más rápidos.
Características destacables:
  • Soporte para AJAX (librerías como JQuery y Mootolls).
  • Fácil de aprender y usar.
  • Sistema de control de acceso tipo ACL (Access Control List).
  • Sistema Caché para la base de datos.
  • Soporte para clientes y servidores de servicios web.
  • Funciona en cualquier hosting compartido.
Enlace | Página oficial

MicroMVC

Como su nombre indica no ofrece todas las funciones que nos puede ofrecer un framework más pesado como Zend,
los propios desarrolladores dicen que no es un sustituto para un framework completamente MVC y que pienses en desarrollar
aplicaciones como Facebook con él.
Características destacables:
  • Escrito totalmente en PHP5.
  • Ideal para iniciarse en el mundo de los frameworks MVC.
  • El código esta bien documentado.
  • Usado para aplicaciones pequeñas como blogs, sistemas de noticias, etc.
Enlace | Página oficial
Dingo Framework

Emplea la ideología KISS (Keep It Simple Stupid), se pueden extender con otras librerías o frameworks.
Características destacables:
  • Dispone de una documentación bastante completa.
  • Descomprimido pesa menos de 100 KB.
  • Muy flexible al poder usarse con otras librerías.
Enlace | Página oficial
Phraw – PHP Mini Framework

Ideal para desarrollar aplicaciones pequeñas y rápidas en el menor tiempo posible. Si se usa junto con Smarty, en cuanto a la velocidad de carga, se pueden obtener resultados cercanos al framework Yii.
Características destacables:
  • Comprimido pesa 15 KB.
  • Viene con varios ejemplos de utilización.
  • El núcleo está escrito en 130 líneas de código.
  • Varias funcionalidades para aumentar el SEO.
Enlace | Página oficial
Flourish

Básicamente se trata de una librería POO, posee una estructura modular por lo que no tiene que ser obligatoriamente MVC.
Actualmente está en estado Beta, por lo que pueden surgir varios cambios en cuanto al diseño del framework.
Características destacables:
  • Soporte para varias Bases de Datos (MySQL, PostgreSQL, SQLite, MSSQL, Oracle, DB2).
  • Compatibiliza bien con otras librerías y frameworks.
  • La seguridad es un factor importante en este pequeño framework.
  • Fácil manipulación de imágenes.
  • Soporte para cálculos matemáticos.
Enlace | Página oficial
Light VC

Se trata de un framework MVC pero sin la capa modelo, por lo que se puede acoplar cualquier modelo.
Los autores lo comparan con grandes frameworks como CakePHP y Zend.
Características destacables:
  • Permite usar cualquier modelo o ORM.
  • Facilita el re-uso del código.
  • Altamente configurable.
  • Aprovecha la mayoría de las características de PHP5.
Enlace | Página oficial
Cough Framework

Guarda cierta relación con el framework LightVC. Se trata de un framework orientado a ORM, utilizando un motor de persistencia. Implementa funcionalidades CRUD.
No controla como se utilizará la capa vista, por lo que se puede combinar con LightVC.
Características destacables:
  • Genera el 80% del código necesario para trabajar con bases de datos.
  • Arquitectura extensible.
  • Compatible con otros frameworks o librerías.
  • Bastante personalizable.
Enlace | Página oficial
Konstrukt

Un framework amigable para crear controladores con PHP5. Dispone de foro y mail list.
Características destacables:
  • Los controladores son recursos.
  • Mucho más directo al protocolo HTTP que los demás.
  • Gran flexibilidad.
  • Soporte para otras bases de datos como SQLite.
Enlace | Página oficial
Recess PHP

Los autores lo caracterizan como un framework de desarrollo ameno con el que pasaremos buenos ratos.
No hay que usar la consola de comandos y tampoco requiere una gran curva de aprendizaje.
Características destacables:
  • Facilidad de creación de clientes y servidores de servicios web.
  • Recomendable para entornos LAMPP.
  • Funciona en todos los hostings compartidos.
  • Provee un sistema de detección de errores.
Enlace | Página oficial
Tekuna

Este framework es poco intrusivo con la generación de “datos basura” en la base de datos. Se da soporte en varios idiomas,
Características destacables:
  • Manejo de URL’s amigables.
  • Sistema de manejo de errores.
  • Arquitectura 100% MVC.
  • Probado intensivamente y no produce errores ni advertencias.
Enlace | Página oficial
Emission

Usado para desarrollar aplicaciones a medida en entornos empresariales. En el futuro se incluirán varias librerías javascript.
Básicamente está orientado a la creación de servicios web.
Características destacables:
  • Cliente y creación de servicios web con SOAP.
  • Desarrollo de servicios web REST.
  • Cliente ICQ.
  • Algunos componentes Front-End (UI).
Enlace | Página oficial
Vork

Tal como lo pintan los desarrolladores del framework, parece una maravilla, genera código HTML completamente válido y no provoca ninguna advertencia o error.
También provee funcionalidades que pueden interesar a un desarrollador y diseñador web a la vez, funciones como mejora de SEO, plantillas, marcas de agua para imágenes.
Características destacables:
  • Soporte para trabajar con varias API conocidas, como OpenAuth, PayPal, Flickr, Google, YouTube, etc.
  • Compatibilidad con otros frameworks como Zend, CakePHP.
  • Funciona perfectamente tanto en Apache como en IIS.
  • Compatible con bases de datos NoSQL.
  • Dispone de sistema de caché.
Enlace | Página oficial
Base App Framework

Framework de reducido tamaño inspirado en CakePHP, muy recomendable si recién si empieza a trabajar con frameworks MVC.
No tiene nada que envidiar a los demás frameworks y comprimido pesa unos 50KB.
Características destacables:
  • Fácil extensión del framework.
  • 100% MVC pero también puede ser usado como librería.
  • Parecido al 80% con CakePHP.
  • Integra soporte de AdoDB.
  • Dispone de varias herramientas de depuración como FireBug.
Enlace | Página oficial
Simple PHP Framework

Este proyecto nació hace 5 años, está orientado al desarrollo de sitios web como blogs, tiendas virtuales,etc.
Cuenta con el apoyo de Yahoo!, dentro de la misma organización utilizan un fork de este framework.
Características destacables:
  • Dispone de sistema de autentificación de usuarios, lector de RSS, etc.
  • Completamente escrito usando las mejoras de PHP5.
  • Requiere bastante esfuerzo aprender a usarlo y tiene gran curva de aprendizaje.
Enlace | Página oficial
Obullo

Creado para programadores web que necesiten un framework sencillo para desarrollar aplicaciones de forma rápida.
Se caracteriza como una caja de herramientas.
Características destacables:
  • Utiliza métodos estáticos de PHP5.
  • Emplea PDO para trabajar con bases de datos.
  • Un directorio puede tener más de un controlador.
  • Se puede extender fácilmente.
Enlace | Página oficial
Akelos PHP Framework

Se trata de un framework “standalone”, no necesita ninguna dependencia externa o del sistema.
Se trata de un port de Ruby On Rails a PHP, es la elección elegida de los programadores del framework mencionado.
Características destacables:
  • Dispone de soporte para AJAX.
  • Similar a Ruby On Rails o Django.
  • Incorpora validadores de código.
  • Sistema de páginación incorporado.
Enlace | Página oficial
Samstyle PHP Framework

Se trata de un framework desarrollado por Sam Yong, al que se le dejo de dar soporte, finalmente el proyecto fue retomado por otro programador.
Orientado para programar aplicaciones web 2.0.
Características destacables:
  • Compatible con versiones de PHP > v4.
  • Fácil integración con otras API y servicios web.
  • Soporte para AJAX.
  • Incluye mecanismos de seguridad, validaciones de inputs, caché de parte del servidor.
Enlace | Página oficial
PHP Peanuts

Al igual que otros frameworks mencionados en este artículo, está inspirado en Ruby on Rails.
Cuenta con dos versiones, la versión 1.5.0 es libre y la versión 2.0 es comercial, en este aspecto pierde puntos.
Características destacables:
  • Fácil de instalar.
  • Validación y generación automatizada de formularios.
  • Soporte para AJAX.
  • Incorpora elementos UI.
  • Soporta varias bases de datos, como SQLite, PostGreSQL.
Enlace | Página oficial
Zephyr Framework

Su principal característica es la incorporación de AJAX. Orientado principalmente para aplicaciones corporativas.
Características destacables:
  • Incorpora adoDB.
  • Utiliza Smarty para el sistema de plantillas.
  • Fácil integración con otros frameworks o librerías, ya sean PHP o javascript.
  • Incorpora mecanismo de CronJobs.
  • Se puede integrar cualquier paquete PEAR.
Enlace | Página oficial
Valence Web Framework

Antes llamado Caffeine Web Framework.
Características destacables:
  • Emplea sistema de plantillas propio.
  • Se utilizan URL’s cortas sin necesidad de .htaccess.
  • Subsistema para manejar permisos de usuarios.
  • Utiliza PDO para acceder a las bases de datos.
Enlace | Página oficial
Fuel PHP

Una de la gran ventaja de este framework es el soporte por la comunidad, disponen de foro, tutoriales y screencasts.
Recomendado por Nakp, ahora mismo lo estoy probando y de momento me está convenciendo.
Características destacables:
  • Poca curva de aprendizaje.
  • Su tamaño no llega a pesar un 1MB (son unos 750 KB comprimido).
  • Gran soporte por parte de la comunidad y buena documentación.
  • Son los creadores de PyroCMS (un CMS creado con CodeIgniter).
Enlace | Página oficial
Limonade PHP

Bastante fácil de aprender y muy flexible. Lo he probado personalmente, si te gusta RoR este es tu framework.
Características destacables:
  • Dispone de muchas aplicaciones de ejemplo.
  • Soporte vía maillist.
  • Inspirado en otros frameworks de Ruby, como Sinatra.
Enlace | Página oficial
Como os imaginaréis existen muchos más frameworks a parte de los que he citado, os invito a que nos comentéis vuestra experiencia con los distintos frameworks de PHP.
Si conocéis algún framework más de este tipo os invito a que lo comentéis con nosotros.
Os dejo unos enlaces donde podéis leer sobre más frameworks PHP: Matrix.Include_once y PHPFrameworks


Fuente:
foro.elhacker.net

Frameworks PHP MVC ligeros/livianos

Actualmente hay muchos frameworks conocidos de PHP, este lenguaje cada día está evolucionando gracias a la gran comunidad que lo apoya.
Claramente hay muchos frameworks famosos como CakePHP, Zend, Symfony, CodeIgniter, Yii y muchos más, pero la mayoría son bastante pesados.
En este artículo vamos a mencionar algunos frameworks livianos que dispongan de documentación y lo más importante es que, una vez descomprimido que ocupen poco espacio y que estén bajo una licencia libre.
PHP Fat-Free Framework

Framework bastante conocido en la comunidad PHP, caracterizado por su sencillez.
Características destacables:
  • Comprimido pesa 55 KB.
  • Sistema de Plantillas.
  • Dispone de Sistema Caché.
  • Monitor de Ancho de Banda utilizado.
  • Protección ante ataques Denial Of Service (DoS).
  • Dispone de Plug-Ins.
  • Soporte para varias APIs, como Google, Twitter, etc.
Enlace | Página oficial
DOO PHP Framework

Se autocaracteriza como posiblemente uno de los frameworks más rápidos.
Características destacables:
  • Soporte para AJAX (librerías como JQuery y Mootolls).
  • Fácil de aprender y usar.
  • Sistema de control de acceso tipo ACL (Access Control List).
  • Sistema Caché para la base de datos.
  • Soporte para clientes y servidores de servicios web.
  • Funciona en cualquier hosting compartido.
Enlace | Página oficial

MicroMVC

Como su nombre indica no ofrece todas las funciones que nos puede ofrecer un framework más pesado como Zend,
los propios desarrolladores dicen que no es un sustituto para un framework completamente MVC y que pienses en desarrollar
aplicaciones como Facebook con él.
Características destacables:
  • Escrito totalmente en PHP5.
  • Ideal para iniciarse en el mundo de los frameworks MVC.
  • El código esta bien documentado.
  • Usado para aplicaciones pequeñas como blogs, sistemas de noticias, etc.
Enlace | Página oficial
Dingo Framework

Emplea la ideología KISS (Keep It Simple Stupid), se pueden extender con otras librerías o frameworks.
Características destacables:
  • Dispone de una documentación bastante completa.
  • Descomprimido pesa menos de 100 KB.
  • Muy flexible al poder usarse con otras librerías.
Enlace | Página oficial
Phraw – PHP Mini Framework

Ideal para desarrollar aplicaciones pequeñas y rápidas en el menor tiempo posible. Si se usa junto con Smarty, en cuanto a la velocidad de carga, se pueden obtener resultados cercanos al framework Yii.
Características destacables:
  • Comprimido pesa 15 KB.
  • Viene con varios ejemplos de utilización.
  • El núcleo está escrito en 130 líneas de código.
  • Varias funcionalidades para aumentar el SEO.
Enlace | Página oficial
Flourish

Básicamente se trata de una librería POO, posee una estructura modular por lo que no tiene que ser obligatoriamente MVC.
Actualmente está en estado Beta, por lo que pueden surgir varios cambios en cuanto al diseño del framework.
Características destacables:
  • Soporte para varias Bases de Datos (MySQL, PostgreSQL, SQLite, MSSQL, Oracle, DB2).
  • Compatibiliza bien con otras librerías y frameworks.
  • La seguridad es un factor importante en este pequeño framework.
  • Fácil manipulación de imágenes.
  • Soporte para cálculos matemáticos.
Enlace | Página oficial
Light VC

Se trata de un framework MVC pero sin la capa modelo, por lo que se puede acoplar cualquier modelo.
Los autores lo comparan con grandes frameworks como CakePHP y Zend.
Características destacables:
  • Permite usar cualquier modelo o ORM.
  • Facilita el re-uso del código.
  • Altamente configurable.
  • Aprovecha la mayoría de las características de PHP5.
Enlace | Página oficial
Cough Framework

Guarda cierta relación con el framework LightVC. Se trata de un framework orientado a ORM, utilizando un motor de persistencia. Implementa funcionalidades CRUD.
No controla como se utilizará la capa vista, por lo que se puede combinar con LightVC.
Características destacables:
  • Genera el 80% del código necesario para trabajar con bases de datos.
  • Arquitectura extensible.
  • Compatible con otros frameworks o librerías.
  • Bastante personalizable.
Enlace | Página oficial
Konstrukt

Un framework amigable para crear controladores con PHP5. Dispone de foro y mail list.
Características destacables:
  • Los controladores son recursos.
  • Mucho más directo al protocolo HTTP que los demás.
  • Gran flexibilidad.
  • Soporte para otras bases de datos como SQLite.
Enlace | Página oficial
Recess PHP

Los autores lo caracterizan como un framework de desarrollo ameno con el que pasaremos buenos ratos.
No hay que usar la consola de comandos y tampoco requiere una gran curva de aprendizaje.
Características destacables:
  • Facilidad de creación de clientes y servidores de servicios web.
  • Recomendable para entornos LAMPP.
  • Funciona en todos los hostings compartidos.
  • Provee un sistema de detección de errores.
Enlace | Página oficial
Tekuna

Este framework es poco intrusivo con la generación de “datos basura” en la base de datos. Se da soporte en varios idiomas,
Características destacables:
  • Manejo de URL’s amigables.
  • Sistema de manejo de errores.
  • Arquitectura 100% MVC.
  • Probado intensivamente y no produce errores ni advertencias.
Enlace | Página oficial
Emission

Usado para desarrollar aplicaciones a medida en entornos empresariales. En el futuro se incluirán varias librerías javascript.
Básicamente está orientado a la creación de servicios web.
Características destacables:
  • Cliente y creación de servicios web con SOAP.
  • Desarrollo de servicios web REST.
  • Cliente ICQ.
  • Algunos componentes Front-End (UI).
Enlace | Página oficial
Vork

Tal como lo pintan los desarrolladores del framework, parece una maravilla, genera código HTML completamente válido y no provoca ninguna advertencia o error.
También provee funcionalidades que pueden interesar a un desarrollador y diseñador web a la vez, funciones como mejora de SEO, plantillas, marcas de agua para imágenes.
Características destacables:
  • Soporte para trabajar con varias API conocidas, como OpenAuth, PayPal, Flickr, Google, YouTube, etc.
  • Compatibilidad con otros frameworks como Zend, CakePHP.
  • Funciona perfectamente tanto en Apache como en IIS.
  • Compatible con bases de datos NoSQL.
  • Dispone de sistema de caché.
Enlace | Página oficial
Base App Framework

Framework de reducido tamaño inspirado en CakePHP, muy recomendable si recién si empieza a trabajar con frameworks MVC.
No tiene nada que envidiar a los demás frameworks y comprimido pesa unos 50KB.
Características destacables:
  • Fácil extensión del framework.
  • 100% MVC pero también puede ser usado como librería.
  • Parecido al 80% con CakePHP.
  • Integra soporte de AdoDB.
  • Dispone de varias herramientas de depuración como FireBug.
Enlace | Página oficial
Simple PHP Framework

Este proyecto nació hace 5 años, está orientado al desarrollo de sitios web como blogs, tiendas virtuales,etc.
Cuenta con el apoyo de Yahoo!, dentro de la misma organización utilizan un fork de este framework.
Características destacables:
  • Dispone de sistema de autentificación de usuarios, lector de RSS, etc.
  • Completamente escrito usando las mejoras de PHP5.
  • Requiere bastante esfuerzo aprender a usarlo y tiene gran curva de aprendizaje.
Enlace | Página oficial
Obullo

Creado para programadores web que necesiten un framework sencillo para desarrollar aplicaciones de forma rápida.
Se caracteriza como una caja de herramientas.
Características destacables:
  • Utiliza métodos estáticos de PHP5.
  • Emplea PDO para trabajar con bases de datos.
  • Un directorio puede tener más de un controlador.
  • Se puede extender fácilmente.
Enlace | Página oficial
Akelos PHP Framework

Se trata de un framework “standalone”, no necesita ninguna dependencia externa o del sistema.
Se trata de un port de Ruby On Rails a PHP, es la elección elegida de los programadores del framework mencionado.
Características destacables:
  • Dispone de soporte para AJAX.
  • Similar a Ruby On Rails o Django.
  • Incorpora validadores de código.
  • Sistema de páginación incorporado.
Enlace | Página oficial
Samstyle PHP Framework

Se trata de un framework desarrollado por Sam Yong, al que se le dejo de dar soporte, finalmente el proyecto fue retomado por otro programador.
Orientado para programar aplicaciones web 2.0.
Características destacables:
  • Compatible con versiones de PHP > v4.
  • Fácil integración con otras API y servicios web.
  • Soporte para AJAX.
  • Incluye mecanismos de seguridad, validaciones de inputs, caché de parte del servidor.
Enlace | Página oficial
PHP Peanuts

Al igual que otros frameworks mencionados en este artículo, está inspirado en Ruby on Rails.
Cuenta con dos versiones, la versión 1.5.0 es libre y la versión 2.0 es comercial, en este aspecto pierde puntos.
Características destacables:
  • Fácil de instalar.
  • Validación y generación automatizada de formularios.
  • Soporte para AJAX.
  • Incorpora elementos UI.
  • Soporta varias bases de datos, como SQLite, PostGreSQL.
Enlace | Página oficial
Zephyr Framework

Su principal característica es la incorporación de AJAX. Orientado principalmente para aplicaciones corporativas.
Características destacables:
  • Incorpora adoDB.
  • Utiliza Smarty para el sistema de plantillas.
  • Fácil integración con otros frameworks o librerías, ya sean PHP o javascript.
  • Incorpora mecanismo de CronJobs.
  • Se puede integrar cualquier paquete PEAR.
Enlace | Página oficial
Valence Web Framework

Antes llamado Caffeine Web Framework.
Características destacables:
  • Emplea sistema de plantillas propio.
  • Se utilizan URL’s cortas sin necesidad de .htaccess.
  • Subsistema para manejar permisos de usuarios.
  • Utiliza PDO para acceder a las bases de datos.
Enlace | Página oficial
Fuel PHP

Una de la gran ventaja de este framework es el soporte por la comunidad, disponen de foro, tutoriales y screencasts.
Recomendado por Nakp, ahora mismo lo estoy probando y de momento me está convenciendo.
Características destacables:
  • Poca curva de aprendizaje.
  • Su tamaño no llega a pesar un 1MB (son unos 750 KB comprimido).
  • Gran soporte por parte de la comunidad y buena documentación.
  • Son los creadores de PyroCMS (un CMS creado con CodeIgniter).
Enlace | Página oficial
Limonade PHP

Bastante fácil de aprender y muy flexible. Lo he probado personalmente, si te gusta RoR este es tu framework.
Características destacables:
  • Dispone de muchas aplicaciones de ejemplo.
  • Soporte vía maillist.
  • Inspirado en otros frameworks de Ruby, como Sinatra.
Enlace | Página oficial
Como os imaginaréis existen muchos más frameworks a parte de los que he citado, os invito a que nos comentéis vuestra experiencia con los distintos frameworks de PHP.
Si conocéis algún framework más de este tipo os invito a que lo comentéis con nosotros.
Os dejo unos enlaces donde podéis leer sobre más frameworks PHP: Matrix.Include_once y PHPFrameworks


Fuente:
foro.elhacker.net