합법적으로 해킹을 연습하는 8가지 취약한 웹 애플리케이션

윤리적 해킹 기술 향상을 위한 실전 연습

윤리적 해킹 기술을 숙달하는 가장 효과적인 방법 중 하나는 직접 테스트해 보는 것입니다. 하지만 윤리적 해커나 침투 테스터가 합법적으로 자신의 능력을 시험할 수 있는 환경을 찾기란 쉽지 않습니다. 그래서 보안 취약점을 의도적으로 포함한 웹사이트나 앱을 활용하는 것이 훌륭한 대안이 될 수 있습니다.

이러한 취약한 웹 환경은 새로운 해커들이 보안 취약점을 발견하는 방법을 배우고, 숙련된 보안 전문가와 버그 바운티 사냥꾼들이 새로운 취약점을 찾아내고 전문성을 강화하는 데 이상적인 학습 기반을 제공합니다.

취약한 웹 애플리케이션 활용

의도적으로 취약하게 설계된 웹사이트와 앱을 테스트에 활용하면 법적인 제약 없이 안전하게 해킹 기술을 연마할 수 있는 환경을 만들 수 있습니다. 이러한 환경은 실제 해킹 시 발생할 수 있는 법적 문제에서 벗어나 안전하게 기술을 습득하도록 돕습니다.

이러한 애플리케이션들은 정보 보안과 침투 테스트 기술을 배우고 향상시키고자 하는 보안 애호가들을 위해 특별히 고안되었습니다.

이 글에서는 대표적인 “취약한” 웹 앱 몇 가지를 소개합니다.

오픈 소스 무료 도구인 BWAPP는 PHP 기반 애플리케이션으로, MySQL 데이터베이스를 백엔드로 사용합니다. 여기에는 윤리적 해킹 능력을 시험해 볼 수 있는 100가지 이상의 다양한 버그가 포함되어 있으며, 모든 주요 보안 취약점을 망라하고 있습니다.

OWASP Top 10 프로젝트를 기반으로 한 이 도구는 100가지 이상의 온라인 애플리케이션 취약점과 결함을 제공하며, 그 예시는 다음과 같습니다.

  • XSS (크로스 사이트 스크립팅) 및 CSRF (크로스 사이트 요청 위조)
  • DoS (서비스 거부) 공격
  • 중간자 공격
  • 서버 측 요청 위조 (SSRF)
  • SQL, OS Command, HTML, PHP, SMTP 인젝션 등 다양한 인젝션 공격

이 웹 애플리케이션을 통해 합법적인 윤리적 해킹 및 침투 테스트를 수행할 수 있습니다. BWAPP 다운로드는 여기에서 할 수 있습니다.

DVWA (Damn Vulnerable Web Application)

악명 높은 취약 웹 애플리케이션인 DVWA는 PHP와 MySQL로 개발되었습니다. 보안 전문가와 윤리적 해커가 합법적인 테두리 안에서 기술을 테스트할 수 있도록 의도적으로 취약하게 설계되었습니다. DVWA를 실행하려면 웹 서버, PHP, MySQL이 필요하며, 이러한 환경을 구축하는 가장 빠른 방법은 XAMPP를 다운로드하여 설치하는 것입니다. XAMPP는 여기에서 다운로드할 수 있습니다.

DVWA는 다음을 포함한 다양한 취약점을 제공합니다.

  • 무차별 대입 공격
  • 명령어 실행
  • CSRF 및 파일 포함 공격
  • XSS 및 SQL 인젝션
  • 안전하지 않은 파일 업로드

DVWA의 주요 장점은 보안 수준을 설정하여 각 취약점에 대한 테스트를 연습할 수 있다는 점입니다. 또한 개발자가 소스 코드를 공개했기 때문에 백엔드에서 일어나는 일을 파악할 수 있어 연구자들이 학습하고 다른 사람들을 교육하는 데 도움이 됩니다.

Google Gruyere

Gruyere는 초보자들이 취약점을 찾아 악용하고 이에 대응하는 방법을 배울 수 있는 좋은 선택입니다. ‘치즈’라는 단어와 ‘해킹’이 함께 사용되는 것이 흔하지는 않지만, 이 웹사이트는 그 이름처럼 구멍이 가득합니다. 또한 사이트 전체 디자인이 치즈를 기반으로 만들어졌습니다.

이미지 출처: Google Gruyere

Python으로 작성되었으며, 취약점 유형별로 분류되어 있습니다. 각 작업은 블랙박스 또는 화이트박스 해킹(또는 두 가지 기술의 조합)을 사용하여 취약점을 찾고, 악용하고, 식별하는 간략한 설명을 제공하며, 그 중 일부는 다음과 같습니다.

  • 정보 유출
  • SQL 인젝션
  • 사이트 간 요청 위조
  • 서비스 거부 공격

사전 지식이 약간 필요하지만, 초보자에게 매우 적합한 옵션입니다.

WebGoat

OWASP 프로젝트 중 하나이자 매우 인기 있는 WebGoat은 일반적인 서버 측 애플리케이션 문제를 학습하는 데 사용할 수 있는 취약한 프로그램입니다. 애플리케이션 보안에 대해 배우고 침투 테스트 기술을 연마하는 데 도움을 주도록 설계되었습니다.

각 강의를 통해 특정 보안 결함에 대해 학습하고 앱에서 직접 공격을 시도할 수 있습니다.

WebGoat에 포함된 취약점의 예시는 다음과 같습니다.

  • 버퍼 오버플로
  • 부적절한 오류 처리
  • 인젝션 취약점
  • 안전하지 않은 통신 및 구성
  • 세션 관리 결함
  • 매개변수 변조

Metasploitable 2

보안 연구원들 사이에서 Metasploitable 2는 가장 흔히 사용되는 온라인 취약점 학습 환경입니다. 보안 애호가들은 Metasploit 및 Nmap과 같은 고급 도구를 사용하여 이 애플리케이션을 테스트할 수 있습니다.

이 취약한 애플리케이션의 주된 목적은 네트워크 테스트입니다. 보안 연구원이 보안 결함을 찾는 데 사용하는 Metasploit 프로그램을 모델로 만들어졌습니다. 또한 이 애플리케이션에는 WebDAV, phpMyAdmin, DVWA와 같은 기능이 내장되어 있습니다.

애플리케이션의 GUI를 찾을 수는 없지만, 터미널이나 명령줄을 통해 다양한 도구를 사용하여 취약점을 찾을 수 있습니다. 특히 포트, 서비스, 버전을 확인하는 데 유용하며, 이는 Metasploit 도구를 학습하고 사용하는 데 도움이 됩니다.

DVIA (Damn Vulnerable iOS App)

DVIA는 모바일 보안 전문가, 애호가, 개발자들이 침투 테스트를 연습할 수 있는 iOS 애플리케이션입니다. 최근에 다시 공개되었으며, 이제 GitHub에서 무료로 사용할 수 있습니다.

OWASP Top 10 모바일 위험을 기반으로 하며, 일반적인 iOS 앱 취약점이 포함되어 있습니다. Swift로 개발되었으며 모든 취약점은 iOS 11까지 테스트되었습니다. 사용하려면 Xcode가 필요합니다.

DVIA에서 제공하는 기능은 다음과 같습니다.

  • 탈옥 감지
  • 피싱
  • 취약한 암호화
  • 런타임 조작
  • 애플리케이션 패치
  • 바이너리 패치

OWASP Mutillidae II

Mutillidae II는 OWASP에서 개발한 오픈 소스 무료 프로그램으로, 사용자 친화적인 해킹 환경을 제공하여 많은 보안 전문가들이 활용하고 있습니다. 다양한 취약점과 취약점 악용에 도움이 되는 권장 사항을 제공하며, 침투 테스트나 해킹을 취미로 하는 사람들이 기술을 연마하는 데 적합합니다.

클릭재킹, 인증 우회 등 다양한 취약점을 테스트할 수 있으며, 취약점 섹션은 추가적인 대안을 제공하는 하위 범주로 나뉩니다.

시스템에 XAMPP를 설치해야 하지만 Mutillidae 자체에 XAMPP가 포함되어 있습니다. 또한 보안 모드와 비보안 모드 간 전환이 가능합니다. Mutillidae는 필요한 모든 것을 갖춘 완벽한 실험실 환경입니다.

Web Security Dojo

WSD는 Burp Suite 및 Ratproxy와 같은 도구와 WebGoat 같은 대상 머신을 포함한 교육 환경입니다. Ubuntu 12.04 운영 체제를 기반으로 하는 오픈 소스 교육 환경으로, 일부 목표에는 교육 자료와 사용 설명서도 포함되어 있습니다.

다른 도구를 실행할 필요 없이 이 VM만으로 충분합니다. 먼저 VirtualBox 5 이상을 설치하고 실행해야 하지만, VMware를 대신 사용할 수도 있습니다. 그런 다음 OVA 파일을 VirtualBox/VMware로 가져오면 모든 준비가 끝납니다. 다른 Ubuntu OS와 동일한 경험을 제공합니다.

이 VM은 취약점에 대해 배우고자 하는 초보자, 전문가, 교육자들이 자가 학습을 진행하는 데 이상적입니다.

결론 😎

정보 보안 분야에 진입하기 전에 취약한 애플리케이션에 대한 실무 경험을 쌓는 것은 매우 중요합니다. 이러한 경험은 능력 개발에 큰 도움이 됩니다.

또한 취약점을 발견하고 연습하는 데 도움이 됩니다. 특수 제작된 애플리케이션을 통해 윤리적 해킹을 연습함으로써 해킹 능력과 보안 영역에서 자신의 위치를 더 잘 파악할 수 있습니다. 이러한 지식을 다른 사람과 공유하여 일반적인 웹 애플리케이션 결함을 찾는 방법을 알려주는 것도 좋은 방법입니다.