2/16/2016

[WEB HACKING] SQLNinja를 이용한 SQL Injection(Install SQLNinja and SQL Injection with SQLNinja)

SQL NINJA란?

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

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

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


SQL NINJA 설치하기(Install SQL NINJA)


먼저 sqlninja 공식 홈페에지(http://sqlninja.sourceforge.net/download.html) 에서 0.2.999나 0.2.6-r1을 다운로드 받습니다.
stable version 인지 testing version 인지 차이가 있습니다.


다운로드 후 압축을 해제합니다.

#> 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--
# "이 부분에 설정 값을 넣어줍니다."

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이 훨씬 편하고 좋더군요.

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


HAHWUL

Security engineer, Gopher and H4cker!

Share: | Coffee Me:

2 comments:

  1. 안녕하세요 보안을 이제 막 배우기 시작한 학생입니다.
    Kali Linux의 툴들을 조사하면서 해당 정보 정말 잘 보고갑니다.
    위에 sqlninja.conf 파일을 통해 타켓과 URL을 지정해야한다고 하셨는데
    해당 파일에 넣어야 하는 정보들은 어떻게 알 수 있는지 궁금합니다.

    ReplyDelete
    Replies
    1. 바쁘다 보니 답변이 좀 늦었네요..
      sqlninja 공식 홈페이지 내 configuration file 부분에 관련 내용 많이 있습니다. 참고해주세요~

      http://sqlninja.sourceforge.net/sqlninja-howto.html#s3

      Delete