SQLNinja를 이용한 SQL Injection 테스팅

SQL NINJA란?

SqlMap과 함께 SQL Injection Testing 도구로 유명한 툴입니다. perl 기반으로 제작되었으며, Kali Default Tool에도 포함될 만큼 좋은 성능을 자랑하지요.

SqlMap과 많이 비교되긴 합니다만 장점을 뽑자면 연동성과 Reverse Shell과 같이 바로 강력한 영향력을 보여줄 수 있다 정도인것 같습니다.

SqlMap이 스캐너의 성격을 띈다면 SqlNinja는 Payload쪽으로 치중된 모습을 보입니다.

SQL NINJA 설치하기(Install SQL NINJA)

먼저 sqlninja 공식 홈페이지 또는 kali gitlab에서 에서 다운로드 받습니다. 이후 압축을 해제합니다.

#> wget https://sourceforge.net/projects/sqlninja/files/sqlninja/sqlninja-0.2.6-r1.tgz
#> tar zxvf sqlninja-0.2.3-r1.tgz
#> cd sqlninja-0.2.3-r1

SQLNINJA는 Perl로 제작된 툴이며 아래 패키지가 추가로 필요합니다.

  • NetPacket
  • Net-Pcap
  • Net-DNS
  • Net-RawIP
  • DBI

간단하게 apt 패키지 매니저를 이용하여 설치하여 줍니다.

#> apt-get install libpcap0.8 libpcap0.8-dev
#> apt-get install libnetpacket-perl libnet-rawip-perl libnet-pcap-perl libnet-dns-perl libdbi-perl

apt 패키지 매니저 이외에도 perl 자체 기능을 통해 설치가 가능합니다.

#> perl –MCPAN –e ‘install NetPacket’
#> perl –MCPAN –e ‘install Net::Pcap’
#> perl –MCPAN –e ‘install Net::DNS’
#> perl –MCPAN –e ‘install Net::RawIP’
#> perl –MCPAN –e ‘install IO::Socket::SSL’

설치 후 실행해보면 잘 실행됨을 확인할 수 있습니다.

#> ./sqlninja
Sqlninja rel. 0.2.6-r1
Copyright (C) 2006-2011 icesurfer <r00t@northernfortress.net>
Usage: ./sqlninja
    -m <mode> : Required. Available modes are:
        t/test - test whether the injection is working
        f/fingerprint - fingerprint user, xp_cmdshell and more
..snip..

SQL NINJA를 이용한 SQL Injection

sqlninja는 sqlninja 하단에 sqlninja.conf 파일을 통해 타켓과 URL을 지정하여 테스트를 진행합니다.

#> vim sqlninja.con.example
 --httprequest_start--
# "이 부분에 설정 값을 넣어줍니다."

e.g

GET http://127.0.0.1/?a=zzz HTTP/1.0
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.13) Gecko/200604    18 Firefox/1.0.8
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text    /plain;q=0.8,image/png,*/*
Accept-Language: en-us,en;q=0.7,it;q=0.3
Accept-Charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7
Content-Type: application/x-www-form-urlencoded
Cookie: ASPSESSIONID=xxxxxxxxxxxxxxxxxxxx
Authorization: Basic yyyyyyyyyyyyyyyyyyyyy
Connection: close
 --httprequest_end--

이후 sqlninja를 실행하여 테스트를 진행합니다.

#> ./sqlninja -m f
Sqlninja rel. 0.2.6-r1
Copyright (C) 2006-2011 icesurfer <r00t@northernfortress.net>
[+] Parsing sqlninja.conf...
  - Host: 127.0.0.1
  - Port: 80
  - method: GET
..snip..

sqlninja는 많은 모듈을 지원합니다.

    -m <mode> : Required. Available modes are:
      t/test - test whether the injection is working
      f/fingerprint - fingerprint user, xp_cmdshell and more
      b/bruteforce - bruteforce sa account
      e/escalation - add user to sysadmin server role
      x/resurrectxp - try to recreate xp_cmdshell
      u/upload - upload a .scr file
      s/dirshell - start a direct shell
      k/backscan - look for an open outbound port
      r/revshell - start a reverse shell
      d/dnstunnel - attempt a dns tunneled shell
      i/icmpshell - start a reverse ICMP shell
      c/sqlcmd - issue a 'blind' OS command
      m/metasploit - wrapper to Metasploit stagers

reverse shell 부터 metasploit 연동까지 좋은 기능을 많이 가지고 있네요.

간단하게 살펴봤습니다만.. 개인 분석 스타일에 따라 호불호가 좀 갈릴 것 같습니다. 저의 경우에는 burp를 많이 사용하기 때문에 유용할 것 같았지만.. sqlmap이 훨씬 편하고 좋더군요.

물론 잘 맞거나, 적응하면 매력있는 툴인 것은 확실합니다. :)