De cara, eu já dou um baita parabéns ao time de desenvolvimento do Uniscan, isso porque eles simplesmente facilitaram a vida da galera que entende pouco sobre módulos Perl – o uniscan é desenvolvido em Perl e tem uma série de módulos como pre-req.

Eu baixei a nova versão do Uniscan, 5.2, e comecei a analisar as suas mudanças – não sei ao certo se o lance do instalador de módulos indicado abaixo já estava presente nas versões anteriores, mas acredito que todo mundo que cria ferramentas com Perl devem seguir a mesma cartilha do pessoal do Uniscan.

Eu, por exemplo, fiz uma baita cagada no meu Mac Book pro e removi, sem querer, é claro, alguns módulos do Perl, resultado: deu merrrrda. Aí eu vejo essa belezura:

more install-modules.sh
#!/bin/bash

cpan -i Moose
cpan -i threads
cpan -i threads::shared
cpan -i Thread::Queue
cpan -i HTTP::Response
cpan -i HTTP::Request
cpan -i LWP::UserAgent
cpan -i Net::SSLeay
cpan -i Getopt::Std
cpan -i MIME::Base64
cpan -i YAML

Faz alguns minutos que rodei o script e o meu mac continua instalando os módulos do Perl, blz, vamos ao Uniscan. Ele nada mais é que um scan para aplicações Web que tem como objetivo “encontrar diversos tipos de vulnerabilidades nas aplicações” isso porque “desenvolvedores Web fazem muito, mais mutia cagada”.

Vejam as features do Uniscan:

  • Identification of system pages through a Web Crawler.
  • Use of threads in the crawler.
  • Control the maximum number of requests the crawler.
  • Control of variation of system pages identified by Web Crawler.
  • Control of file extensions that are ignored.
  • Test of pages found via the GET method.
  • Test the forms found via the POST method.
  • Support for SSL requests (HTTPS).
  • Proxy support.
  • Generate site list using Google.
  • Generate site list using Bing.
  • Plug-in support for Crawler.
  • Plug-in support for dynamic tests.
  • Plug-in support for static tests.
  • Plug-in support for stress tests.

Um outro ponto bem interessante foi a lista de tutoriais disponibilizados para que possamos criar alguns plugins para a própria ferramenta, a lá metasploit:

http://www.uniscan.com.br/tutorial1.php
http://www.uniscan.com.br/tutorial2.php
http://www.uniscan.com.br/tutorial3.php

Mais uma coisa e bem interessante no Uniscan é quanto o seu arquivo de configuração, o uniscan.conf — vejam que eu dei um print abaixo nele e dá para vocês verificarem quais parâmetros poderão ser alterados.

O legal é que podemos fazer um hardening no Mod_security e no Nginx apra bloquear alguns scanners Web baseando-se no user-agent, mas o Uniscan possibilita que você altere este parâmetro. Interessante, não ? Resta testar para saber se funciona.

# max_threads is the integer number of maximum threads uniscan will use
max_threads=5

# max_reqs is the integer number of maximum requestes that crawler can do
max_reqs=1500

# timeout is the time in seconds that uniscan wait for a connection to webserver
timeout=10

use_proxy=0

# for use proxy you need change de value of proxy from 0.0.0.0 to your proxy ip
proxy=0.0.0.0

# for use proxy you need change de value of proxy_port from 65000 to your proxy port
proxy_port=65000

# log file of uniscan
log_file=uniscan.log

# Current version of uniscan
version=5.2

# maximum size of one request in bytes
max_size=512000

# maximum variation of a page
variation=5

# extensions that uniscan will ignore on crawler
extensions = .exe.pdf.xls.csv.mdb.rpm.deb.doc.jpg.jpeg.png.gif.bmp.tgz.gz.bz2.zip.rar.tar.asf.avi.bin.dll.js.fla.mp3.mpg.mov.ogg.ppt.rtf.scr.wav.msi.swf.JPG.DOC.BMP.JS.PNG

# codes acceptable by uniscan in directory, files and backup file checks
code=200

# the return of file http://www.uniscan.com.br/c.txt used in RFI checks
rfi_return=unipampascanunipampa

# 0 = disable basic auth, 1 = enable
use_basic_auth=0

# username to basic auth
basic_login=admin

# password to basic auth
basic_pass=admin

# 0 = disable cookie auth, 1 = enable
use_cookie_auth=0

# here is the url to post the login form content
url_cookie_auth=http://url/login.php

# method = POST or GET
method_cookie_login=POST

# here is the where you put the inputs and the values of login form
input_cookie_login=”&input1=value1&input2=value2&inputN=valueN”

# to use urlencode set url_encode = 1 and 0 to disable
# the | and % will not be encoded because RCE does not work if it is encoded
url_encode=0

# the user-agent of uniscan
user_agent=”Uniscan 5.2″

Bem que o uniscan não consegue, ainda, superar o Wapiti e o Acunetix — vamos aos testes, vai que ele melhorou 🙂