[번역] SQL 인젝션 테스트를 위한 Burp 플러그인 활용(SQLiPy)

본 블로그 포스트는 아래 블로그 내용을 그대로 번역한 것입니다.
약간의 의역이 포함되어 있음을 미리 알려드립니다.

[ 원문 글 주소 : https://www.codewatch.org/blog/?p=402 ]


 

나는 수년간 웹 어플리케이션에 대한 평가(점검)를 수행해왔다.
웹 보안 점검을 수행할 때 가장 많이 사용하는 두가지 도구를 꼽으라면 Burp Suite Pro와 SQLMap을 선택할 것이다.

Burp Suite 는 웹 보안 점검을 수행하는데 있어 가장 기본적이면서도 훌륭한 도구라 할 수 있다.
만약 당신이 이미 웹 보안 점검을 수행한 경험이 있다면 이 도구에 대한 사용법을 이미 알고 있을것이라 생각한다.

또한, SQLMap 은 SQL 인젝션 공격을 시도할 때 Burp Suite를 기능적으로 보완해주는 역할을 한다.
과거 이 기능을 알았을 때 유연성과 확장성을 보고 크게 놀랐는데, 아직까지 이보다 더 좋은 플러그인은 보지 못한 것 같다
(아마도 내가 모르는 것일 수도 있지만)

예전에 내가 이 플러그인에 대해 알고있던 내용은 다음과 같다.

1. 플러그인으로 커맨드 라인 명령어 (당신이 실행하고자 하는 방향으로)를 생성한 후,
해당 구문을 복사하여 SQLMap을 직접 실행하거나2. 플러그인이 직접 SQLMap을 실행한 후, 결과를 콘솔 화면에 보여준다.

개발쪽에 발을 많이 담그지 않았기 때문에, 이 두가지를 하나로 통합해야겠다는 생각을 해본적은 없다..
어느날 SQLMap 이 설치된 디렉토리에 sqlmapapi.py 파일이 있다는것을 알기 전까지는 말이다.

이전까지 이 파일이 있었다는 것을 몰랐지만, 알고 난 직후 이 스크립트가 무엇을 위한 것인지 자세히 들여다보기 시작했다.
이 api 파일은 RESTful 인터페이스를 가진 웹서버 역할을 하며,
SQLMap을 실행, 중단, 결과 가져오기 등의 행위를 JSON 리퀘스트를 통해 수행할 수 있게 해준다.

이 것을 보고 나는 Burp 와 SQLMap을 하나로 통합하는 것을 시작하게 되었다.

API를 본격적으로 살펴보기 시작하면서, 운좋게도 이미 다른 이가 해당 내용에 대해 정리해놓은것을 찾을 수 있었다.
다음 블로그 포스트 가 바로 그것이다.

나는 곧바로 API를 이용해 플러그인을 만들기 시작했는데, 만들고자 했던 기능은 다음과 같다.

1. Burp 안에서 바로 API를 통해 SQLMap을 실행할 수 있는 기능. 사실 Jythoon이 가진 한계 때문에 추천하지는 않는다.
Jython의 popen 함수를 이용하면 PID를 얻을 수 없으며, 이는 프로세스를 수동으로 종료할 수 밖에 없다는 것을 의미한다.2. Burp 에서 플러그인으로 리퀘스트를 전송할 때 필요한 메뉴 옵션

3. SQLMap에 리퀘스트 전송 전에 설정 내용을 바꿀수 있는 메뉴

4. 스캔 실행 후 발견된 결과물이 존재하는지 여부를 지속적으로 확인할 수 있는 스레드 기능

5. SQLMap 스캔 결과 정보와 Burp 스캔 결과 리스트의 연동

위에 열거한 모든 기능들을 나는 첫번째 릴리즈에 포함시켰다.
테스트를 완벽하게 할 만한 능력은 안되므로, 사용해 본 이들이 피드백을 준다면 감사히 받겠다.

아래는 플러그인 개발과 관련하여 간단하게 정리한 내용이다.

1. Burp 플러그인을 개발해본 것은 이번이 처음이다.이러한 내가 결과물을 만들어 낼 수 있다는 것은 쉽게 접근할 수 있도록 만든 Burp 개발자 덕분이다.

2. Jython도 이번에 처음 사용해보았다. Java  GUI 코드도 물론 마찬가지이다.

3. 당신이 보기에 코드가 허접해 보일 수도 있다. 그러므로 당신의 조언이 필요하다.
위에서 말한 두가지 사항과 “내가 개발자가 아니라는 점”을 다시 한번 기억해주기 바란다.

파이썬/자이썬/자바 그리고 Burp와의 통합작업을 이해하기 위해 여러개의 플러그인 소스코드를 리뷰했는데,
특히 다음 플러그인들의 소소코드를 리뷰하면서 개발 작업을 이해하는데 많은 도움이 되었다.

가장 먼저 해야할 일은 베타버전의 자이썬을 다운로드 받는 것이다.
JSON 모듈을 사용하기 위해서는  2.7 베타 버전이 필요하며, 이전 버전은 해당 모듈을 지원하지 않는다.
해당 자이썬 버전은 자바 1.7 또는 1.8 버전에서 동작하며 이 전 버전에서는 동작하지 않는 다는 것을 기억해두자.

Burp의 Exntender-> Options 탭을 클릭한 후, 아래 스크린샷과 같이 자이썬 경로를 설정하도록 하자.

다음으로 해야할 일은 플러그인을 추가 하는 것이다. Extender -> Extensions으로 이동 후
add 버튼을 누른다.
아래 그림과 같이 플러그인 경로를 설정한다.

스캔을 수행하기 위해서 SQLMap API 서버를 반드시 실행해야 한다.
SQLiPy -> SQLMap API 탭으로 이동한 후, IP, Port,  파이썬 설치 경로 그리고 sqlmapapi.py 파일이 있는
경로를 다음 그림과 같이 설정한다.

더 나은 방법으로는 SQLMap API 서버를 수동으로 구동시키는 것이다.
(당신의 시스템 혹은 SQLMap이 설치된 원격 서버에)

앞서 말한 자이썬의 한계 (PID를 부여 받지 않는 문제…)에 대한 해결책이 될 수 있을 것이다.
명령어는 다음과 같다.

Burp에 자이썬을 설치하고 플러그인이 로드되었다. SQLMap API 서버도 동작하고 있다.

이제 SQLMap 스캔을 동작시킬 모든 준비가 끝났다.
Proxy 탭에서 마우스 오른쪽 버튼을 눌러보면 SQLiPy Scan이라는 서브 메뉴가
등록되어 있는 것을 볼 수 있을 것이다.

SQLiPy-> SQLMap Scanner 탭으로 이동하면 다음화면과 같이 리퀘스트와 정보를 확인할 수 있다.

인젝션 공격을 위한 옵션을 원하는 값으로 설정하도록 한다.
또한 SQLMap API IP와 Port가 정확하게 설정되어 있는지도 확인한다.

Start Scan 버튼을 클릭하면 인젝션 테스트가 시작된다.
진행 과정과 정보가 담긴 메시지는 Ouptup 탭에서 확인할 수 있다. (아래 그림)

스캔을 시작하면 스레드를 발생시켜 주기적으로 인젝션 공격 결과를 체크하게 된다.

업데이트된 결과는 Output 탭에서 확인할 수 있으며, 인젝션 테스트 종료시에도 마찬가지이다.

만약 테스트한 페이지가 SQL인젝션 취약점을 갖고 있다면, Scaner->Result 탭에서
사용자가 설정한 옵션 내용에 기반한 모든 스캔 결과물을 확인할 수 있다.

이 플러그인은 다음 환경에서 테스트 완료 하였다.

  • Burp Suite 1.6 and 1.6.05
  • SQLMap 1.0
  • Python 2.7.2 and 2.7.7
  • Java 1.7.0_03, 1.7.0_60, and 1.8.0_11
  • Jython 2.7 Beta 3
  • Windows 7 and 8.1
  • Linux (Fedora 20)

플러그인은  이 곳 에서 받을 수 있다. 이제 즐기는 일 만 남았다~!!!


 

발 번역이므로…. 감안해서 봐주시면 감사하겠습니다 ㅋ

Site Footer

Sliding Sidebar

About Me

About Me

June Park