C++17과 Qt 6로 구축된 웹 취약점 스캐너로, GUI, CLI, 구성 가능한 크롤링, JSON 보고서 기능을 갖추고 있습니다. 교육 목적으로 재구성되었습니다.
C++17과 Qt 6으로 구축된 웹 취약점 스캐너로, 그래픽 및 명령줄 인터페이스를 제공합니다.
이 저장소는 교육 목적으로 SmartScanner 3.0.0을 재구성한 것을 포함합니다. 웹 크롤링 엔진, 취약점 탐지 모듈, JSON 보고 기능을 결합합니다.
robots.txt 및 사이트맵 처리, 구성 가능한 크롤링 깊이와 범위.실행되는 모듈은 구성과 스캔 중 발견된 리소스에 따라 달라집니다.
| 구성 요소 | 버전 / 세부 정보 |
|---|
| CMake | 3.21 이상 |
| 컴파일러 | C++17 호환 |
| Qt | 6.2 이상 |
| Qt 모듈 | Core, Gui, Widgets, Network, WebChannel, WebEngineWidgets, Xml |
| Ninja | 포함된 Windows 빌드 스크립트에서 필요 |
아래 지침은 Windows를 대상으로 하며, Visual Studio C++ 빌드 도구와 호환되는 Qt MSVC 키트를 사용합니다. GUI 진입점은 Windows API(windows.h)를 직접 사용하므로, Linux나 macOS에서 전체 프로젝트를 빌드하려면 수정이 필요합니다.
CLI용으로 프로젝트를 구성할 때도 Qt GUI 종속성이 필요합니다. 두 실행 파일이 동일한 라이브러리를 공유하기 때문입니다.
Visual Studio 빌드 환경이 구성된 PowerShell 터미널을 열고 저장소 루트로 이동합니다. Qt 경로를 설치 환경에 맞게 조정하세요.
.\build.ps1 -QtPath "C:\Qt\6.8.3\msvc2022_64" -BuildType Release
.\deploy.ps1 -QtPath "C:\Qt\6.8.3\msvc2022_64"
첫 번째 스크립트는 Ninja로 프로젝트를 빌드합니다. 두 번째 스크립트는 사용 가능한 Qt 라이브러리, 플러그인, WebEngine 리소스를 build 디렉터리로 복사합니다.
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="C:\Qt\6.8.3\msvc2022_64"
cmake --build build --parallel
.\deploy.ps1 -QtPath "C:\Qt\6.8.3\msvc2022_64"
빌드는 두 개의 실행 파일을 생성합니다:
build/sms.exe: 명령줄 인터페이스.build/gui.exe: 그래픽 인터페이스.assets 디렉터리는 빌드 중에 실행 파일 옆으로 자동 복사됩니다. 기본 구성을 로드하는 데 필요하므로 실행 파일과 함께 유지하세요.
.\build\gui.exe
다음 예제는 http://localhost:8080의 로컬 테스트 애플리케이션을 사용합니다.
# Display help and version information
.\build\sms.exe --help
.\build\sms.exe --version
# Scan a target and save a JSON report
.\build\sms.exe -u http://localhost:8080 -o report.json
# Scan multiple targets
.\build\sms.exe -u http://localhost:8080 -u http://localhost:8081
# Load a file containing one URL per line
.\build\sms.exe -f targets.txt -o report.json
# Limit crawl depth
.\build\sms.exe -u http://localhost:8080 --crawl-depth 2
# Use HTTP Basic authentication
.\build\sms.exe -u http://localhost:8080 --auth-basic "username:password"
# Use an HTTP proxy
.\build\sms.exe -u http://localhost:8080 --proxy http://localhost:8082
# Select a test module
.\build\sms.exe -u http://localhost:8080 -t httpheaders@o=owasp,others
| 옵션 | 설명 |
|---|---|
-u, --url <URL> | 대상 추가; 반복 가능 |
-f, --file <FILE> | 파일에서 대상 읽기 |
-c, --config <FILE> | JSON 구성 로드 |
-o, --output <FILE> | JSON 보고서 저장 |
-d, --crawl-depth <DEPTH> | 크롤링 깊이 설정: 0은 크롤링 비활성화, 1은 입력 URL만 가져오기, 2 이상은 링크 따라가기 |
--no-discovery | --crawl-depth 0과 동일 |
--no-follow | --crawl-depth 1과 동일 |
-s, --scope <REGEX> | 정규 표현식을 사용하여 범위 정의 |
-t, --test <TESTS> | 모듈 선택; 반복 가능 |
--auth-basic <user:pass> | HTTP Basic 자격 증명 설정 |
--proxy <URL> | 명시적 포트로 프록시 구성 |
--proxy-auth <user:pass> | 프록시 자격 증명 설정 |
--user-agent <STRING> | 사용자 정의 User-Agent 설정 |
--exit-on <LEVEL> | informational, low, medium, high 심각도 임계값에서 스캔 중지 |
CLI는 http:// 및 socks:// 스킴을 사용하는 프록시를 허용합니다. 현재 도움말 텍스트에 언급된 socks5:// 스킴은 파서에서 거부됩니다.
--exit-on을 사용하면 문제가 요청된 심각도에 도달하거나 초과할 때 스캔이 중지됩니다. 그러나 현재 구현은 발견 사항이 요청된 심각도와 정확히 일치하는 경우에만 종료 코드 1을 반환합니다.
assets/default-scan-config.json 파일은 기본 구성을 제공합니다: 활성화된 모듈, HTTP 타임아웃, 병렬 요청, 크롤링, 제외, 인증, 폼 매개변수.
자체 구성을 만들려면:
Copy-Item assets/default-scan-config.json scan-config.json
# Edit scan-config.json, then start the scan
.\build\sms.exe -c scan-config.json -u http://localhost:8080 -o report.json
--test에서 허용되는 모듈 식별자는 이 파일의 tests.scripts 아래에 나열되어 있습니다. --test 옵션은 구성의 모듈 선택을 대체합니다.
스캔이 진행됨에 따라 발견 사항이 콘솔에 나타납니다. --output 옵션은 스캔이 끝날 때 JSON 보고서를 작성하며, 다음을 포함합니다:
대상 디렉터리가 이미 존재해야 합니다. 기존 보고서 파일은 덮어쓰여집니다.
스모크 테스트(*_smoke.cpp)는 BUILD_TESTS로 활성화할 수 있습니다:
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="C:\Qt\6.8.3\msvc2022_64" -DBUILD_TESTS=ON
cmake --build build --parallel
ctest --test-dir build --output-on-failure
현재 CTest 구성은 모든 테스트를 인수 없이 실행합니다. sms_cli_smoke, issuedb_smoke, httpheader_smoke를 포함한 일부 테스트는 인수가 필요하며 적절한 경로와 함께 별도로 실행해야 합니다. 따라서 전체 CTest 스위트를 실행하면 이 구성으로 인한 실패가 보고될 수 있습니다.
예를 들어, CLI 테스트를 다음과 같이 실행합니다:
.\build\sms_cli_smoke.exe .\build\sms.exe
GUI 테스트는 Qt와 WebEngine을 초기화할 수 있는 환경이 필요합니다.
SmartScanner-Source/
├── CMakeLists.txt # Shared library, executables, and tests
├── src/ # Engine, crawler, detectors, CLI, and GUI
├── tests/ # Smoke tests
├── assets/ # Configuration, definitions, and scan resources
├── gui_assets/ # Embedded web interface: HTML, CSS, and JavaScript
├── sms_resources.qrc # CLI Qt resources
├── gui_resources.qrc # GUI Qt resources
├── build.bat # Windows build script
├── build.ps1 # PowerShell build script
└── deploy.ps1 # Copies Qt dependencies for Windows
원본 문서는 이 프로젝트를 독점적이며 교육 목적으로 재구성됨("Proprietary — Reconstructed for educational purposes")으로 설명합니다. 이 저장소에는 별도의 LICENSE 파일이 포함되어 있지 않습니다.