Wapiti - 웹 취약점 스캐너
Wapiti는 Python으로 작성된 웹 취약점 스캐너입니다.
http://wapiti-scanner.github.io/
요구사항
Wapiti가 올바르게 작동하려면 Python 3.10 또는 3.11이 필요합니다.
setup.py 스크립트 또는 pip install wapiti3을 사용하면 모든 Python 모듈 종속성이 자동으로 설치됩니다.
설치에 대한 자세한 내용은 INSTALL.md를 참조하세요.
Windows에서 Wapiti를 실행하려면 WSL을 사용하면 됩니다.
작동 원리
Wapiti는 "블랙박스" 취약점 스캐너로 작동합니다. 즉, 웹 애플리케이션의 소스 코드를 연구하지 않지만 퍼저처럼 작동하여 배포된 웹 애플리케이션의 페이지를 스캔하고 링크와 양식을 추출하고 스크립트를 공격합니다. 페이로드를 보내고 오류 메시지, 특수 문자열 또는 비정상적인 동작을 찾습니다.
일반 기능
- 다양한 형식(HTML, XML, JSON, TXT, CSV)으로 취약점 보고서를 생성합니다.
- 검사 또는 공격(sqlite3 데이터베이스를 사용하는 세션 메커니즘)을 일시 중지하고 재개할 수 있습니다.
- 취약점을 강조하기 위해 터미널에 색상을 제공할 수 있습니다.
- 다양한 수준의 장황함.
- 공격 모듈을 활성화/비활성화하는 빠르고 쉬운 방법입니다.
- 페이로드를 추가하는 것은 텍스트 파일에 줄을 추가하는 것만큼 쉽습니다.
- HTTP 요청을 수행하기 위해 구성 가능한 동시 작업 수.
탐색 기능
- HTTP, HTTPS 및 SOCKS5 프록시를 지원합니다.
- 대상의 HTTP 인증(기본, 다이제스트, NTLM)
- 로그인 양식을 작성하여 인증합니다.
- 스캔 범위(도메인, 폴더, 페이지, URL)를 제한하는 기능.
- URL에서 하나 이상의 매개변수를 자동으로 제거합니다.
- 무한 루프 스캔에 대한 다양한 보호 장치(예: 매개변수 값 제한)
- 탐색할 첫 번째 URL을 설정할 수 있습니다(범위 내에 있지 않더라도).
- 검사 및 공격의 일부 URL(예: 로그아웃 URL)을 제외할 수 있습니다.
- Chrome이나 Firefox 브라우저에서 또는 wapiti-getcookie 도구를 사용하여 쿠키를 가져오세요.
- SSL 인증서 확인을 활성화/비활성화할 수 있습니다.
- Flash SWF 파일에서 URL을 추출합니다.
- 자바스크립트(매우 기본적인 JS 인터프리터)에서 URL을 추출해 보세요.
- HTML5를 인식합니다(최근 HTML 태그 이해).
- 크롤러 동작 및 제한을 제어하는 몇 가지 옵션입니다.
- 공격 중 일부 매개변수 이름을 건너뜁니다.
- 스캔 프로세스의 최대 시간을 설정합니다.
- 일부 사용자 정의 HTTP 헤더를 추가하거나 사용자 정의 User-Agent를 설정합니다.
- 크롤링을 위해 Firefox 헤드리스 브라우저 사용
- 복잡한 인증 사례를 위한 자체 Python 코드 로드(--form-script 옵션 참조)
- Wappalyzer 데이터베이스를 업데이트하기 위해 사용자 정의 URL 또는 PATH 추가
- OpenAPI(swagger) 파일이 제공된 REST API 스캔
지원되는 공격
- SQL 주입(오류 기반, 부울 기반, 시간 기반) 및 XPath 주입
- LDAP 주입(오류 기반 및 부울 기반)
- XSS(교차 사이트 스크립팅)가 반영되고 영구적입니다.
- 파일 공개 감지(로컬 및 원격 포함, 요구, fopen, readfile...)
- 명령 실행 감지(eval(), system(), passtru()...)
- XXE(Xml eXternal Entity) 삽입
- CRLF 주입
- 서버에서 잠재적으로 위험한 파일 검색(Nikto db 덕분에)
- 약한 htaccess 구성 우회
- 서버에서 스크립트 사본(백업) 검색
- 쉘쇼크
- 폴더 및 파일 열거(DirBuster 유사)
- 서버 측 요청 위조(외부 Wapiti 웹사이트 사용을 통해)
- 오픈 리디렉션
- 일반적이지 않은 HTTP 메소드(예: PUT) 감지
- 기본 CSP 평가자
- 무차별 로그인 양식(사전 목록 사용)
- HTTP 보안 헤더 확인
- 쿠키 보안 플래그 확인(보안 및 httponly 플래그)
- CSRF(교차 사이트 요청 위조) 기본 탐지
- Wappalyzer 데이터베이스를 사용하여 웹 애플리케이션의 핑거프린팅을 통해 관련 CVE 정보 제공
- Wordpress, Drupal, Joomla, SPIP 등을 위한 CMS 모듈 열거
- 하위 도메인 인수 감지
- Log4Shell(CVE-2021-44228) 탐지
- Spring4Shell(CVE-2020-5398) 탐지
- https 리디렉션 확인
- 파일 업로드 취약점 확인
- 네트워크 장치 감지
- JSON 본문에도 페이로드를 삽입합니다.
Wapiti는 공격에 대해 GET 및 POST HTTP 방법을 모두 지원합니다. 또한 멀티파트를 지원하고 파일 이름에 페이로드를 삽입할 수 있습니다(업로드). 예외 사항(예: 500 오류 및 시간 초과)이 발견되면 경고를 표시합니다. 영구적인 XSS 취약점과 반영된 XSS 취약점을 구분합니다.
모듈 이름
앞서 언급한 공격은 다음 모듈 이름과 연결되어 있습니다.
- 백업(웹 서버의 스크립트 및 아카이브 사본 검색)
- brute_login_form(사전 목록을 사용한 무차별 로그인 양식)
- Buster (DirBuster 같은 모듈)
- cms(CMS 및 해당 버전을 검색하기 위한 스캔)
- cookieflags(Secure 및 HttpOnly 플래그 확인)
- crlf(HTTP 헤더에 CR-LF 삽입)
- csp (CSP 부족 또는 약한 CSP 구성 감지)
- csrf(CSRF로부터 보호되지 않거나 약한 안티-CSRF 토큰을 사용하는 양식 감지)
- exec(코드 실행 또는 명령 주입)
- 파일(경로 탐색, 파일 포함 등)
- htaccess(잘못 구성된 htaccess 제한)
- htp(HashThePlanet 데이터베이스를 사용하는 웹 기술 식별)
- http_header(HTTP 보안 헤더 확인)
- https_redirect(https 리디렉션 확인)
- ldap(오류 기반 및 부울 기반 LDAP 주입 감지)
- log4shell(CVE-2021-44228에 취약한 웹사이트 탐지)
- 메소드(PUT과 같이 일반적으로 사용 가능한 HTTP 메소드를 찾으십시오)
- network_device(네트워크 장치를 감지하기 위한 공통 파일 찾기)
- nikto(URL 존재 여부를 테스트하고 응답을 확인하여 알려진 취약점을 찾습니다)
- Permanentxss(이전에 오염된 페이로드를 찾기 위해 xss 모듈 실행 후 전체 대상을 다시 검색)
- 리디렉션(오픈 리디렉션)
- shellshock(Shellshock 공격 테스트, Wikipedia 참조)
- spring4shell(CVE-2020-5398에 취약한 웹사이트 탐지)
- sql(오류 기반 및 부울 기반 SQL 주입 감지)
- ssl(SSL/TLS 인증서 구성의 보안 평가, sslscan 필요)
- ssrf(서버측 요청 위조)
- 인수(하위 도메인 인수)
- timesql(시간 기반 방법으로 탐지된 SQL 주입 취약점)
- 업로드(파일 업로드 취약점)
- wapp(공격 모듈이 아니며 대상에서 사용 중인 버전 및 카테고리가 있는 웹 기술을 검색하고 해당 CVE를 찾습니다.)
- wp_enum(Wordpress 웹사이트의 플러그인 및 테마 열거)
- xss(XSS 주입 모듈)
- xxe(XML 외부 엔터티 공격)
모듈 이름은 "-m" 또는 "--module" 옵션을 사용하여 쉼표로 구분된 목록으로 제공될 수 있습니다.
최상의 결과를 얻는 방법
더 많은 취약점을 찾으려면(일부 공격은 오류 기반이므로) 웹 서버 구성을 수정할 수 있습니다.
예를 들어, PHP 구성에서 다음 값을 설정할 수 있습니다.
safe_mode = 꺼짐
display_errors = 켜기(권장)
Magic_quotes_gpc = 끄기
allow_url_fopen=켜짐
mysql.trace_mode = 켜짐
도움을 받을 수 있는 곳
프롬프트에서 다음 명령을 입력하면 기본 사용법을 얻을 수 있습니다.
와피티 -h
각 옵션에 대한 자세한 내용은 맨페이지(wapiti.1 또는 wapiti.1.html)를 참조하세요.
또한 더 철저한 공식 위키도 있습니다: https://github.com/wapiti-scanner/wapiti/wiki
다른 질문이 있으시면 먼저 FAQ를 확인해주세요
버그를 발견하면 문제를 작성하세요: https://github.com/wapiti-scanner/wapiti/issues
Wapiti 프로젝트를 돕는 방법
다음을 수행할 수 있습니다.
- 기부를 통해 프로젝트를 지원하세요. ( http://sf.net/donate/index.php?group_id=168625 )
- 공격 모듈 생성 또는 개선
- 보고서 생성기 및 템플릿 생성 또는 개선
- 버그 수정, 패치 보내기...
- GUI 작성
- PCAP 파일을 Wapiti sqlite3 세션 파일로 변환하는 도구 만들기
- 주변의 와피티에 대해 이야기해 보세요.
라이선스
Wapiti는 GNU General Public License 버전 2(GPL)에 따라 출시됩니다. 소스코드는 Github에서 보실 수 있습니다.
Nicolas SURRIBAS가 제작했습니다.
후원자
사이버워치 https://cyberwatch.fr/
모두를 위한 보안 https://securityforeveryone.com/
부인 성명
Wapiti는 사이버 보안 소프트웨어입니다. 제공된 대상에 대해 보안 평가를 수행하며, 이로 인해 대상의 오작동 및 충돌이 발생할 수 있을 뿐만 아니라 잠재적인 데이터 손실이 발생할 수 있습니다.
소유자의 사전 동의 없이 대상을 공격하기 위해 와피티를 사용하는 것은 불법입니다. 모든 관련 현지 법률을 준수하는 것은 최종 사용자의 책임입니다.
Wapiti 프로젝트에 관련된 개발자와 사람들은 어떠한 책임도 지지 않으며 이 프로그램으로 인한 오용이나 피해에 대해 책임을 지지 않습니다.