IT

취약점 자동 점검 & 리포트 생성 스크립트 (윈도우·리눅스 모두 호환)

웅존 2025. 5. 29.
반응형

취약점 자동 점검 & 리포트 생성 스크립트 (윈도우·리눅스 모두 호환)

 

개념: 취약점 점검 도구란?


취약점 점검 도구는 시스템, 네트워크, 웹 애플리케이션 등에 존재하는 보안 취약점(Vulnerability)을 자동으로 탐지해주는 도구입니다.

예:
웹 애플리케이션의 SQL Injection, XSS

서버의 패치 누락, 잘못된 권한 설정

네트워크 포트 스캐닝

OWASP Top 10 검사 등

반응형
<script>
import requests
import os
from datetime import datetime

TARGET_FILE = 'targets.txt'
REPORT_PATH = 'report/output.html'

# 점검할 취약 룰 (단순 예시)
vuln_rules = {
    "Apache": "Apache 서버 정보 노출",
    "PHP": "PHP 사용 여부 노출",
    "nginx": "nginx 서버 정보 노출",
    "IIS": "IIS 서버 정보 노출",
}

results = []

def scan_target(url):
    try:
        res = requests.get(url, timeout=5)
        server_header = res.headers.get("Server", "알 수 없음")
        detected = []

        for key in vuln_rules:
            if key.lower() in server_header.lower():
                detected.append(vuln_rules[key])

        return {
            "url": url,
            "status": res.status_code,
            "server": server_header,
            "vulns": detected
        }
    except Exception as e:
        return {
            "url": url,
            "status": "연결 실패",
            "server": "N/A",
            "vulns": ["접속 불가 또는 오류"]
        }

def generate_report(results):
    total = len(results)
    vulnerable = sum(1 for r in results if r['vulns'])
    safe = total - vulnerable

    html = f"""

  취약점 점검 리포트
    body {{ font-family: Arial; background: #f9f9f9; padding: 20px; }}
    table {{ border-collapse: collapse; width: 100%; background: #fff; }}
    th, td {{ border: 1px solid #ccc; padding: 8px; text-align: left; }}
    th {{ background: #eee; }}
    .vuln {{ color: red; font-weight: bold; }}
    .safe {{ color: green; }}
    h1 {{ color: #333; }}
  취약점 점검 리포트생성 일시: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}총 대상: {total}개 / 취약 대상: {vulnerable} / 정상 대상: {safe}""" for r in results: vuln_list = "".join(r["vulns"]) if r["vulns"] else "없음" html += f"\n" html += """URL응답코드서버 정보취약점{r['url']}{r['status']}{r['server']}{vuln_list}""" os.makedirs(os.path.dirname(REPORT_PATH), exist_ok=True) with open(REPORT_PATH, "w", encoding="utf-8") as f: f.write(html) print(f"[★] 리포트 생성 완료: {REPORT_PATH}") # === 실행 === if __name__ == "__main__": if not os.path.exists(TARGET_FILE): print(f"[!] 대상 파일 {TARGET_FILE} 이 존재하지 않습니다.") exit(1) with open(TARGET_FILE, "r", encoding="utf-8") as f: urls = [line.strip() for line in f if line.strip()] print(f"[●] {len(urls)}개 URL 점검 시작...") for url in urls: print(f"[...] {url} 점검 중...") results.append(scan_target(url)) generate_report(results) console.log("Hello, world!"); </script>

 

 

✅ 어떤 운영체제든 동작하려면 만족해야 할 조건


위에서 제공한 Python 기반 취약점 점검 스크립트 + HTML 리포트 생성 도구는 대부분의 운영체제(OS)에서 문제없이 동작할 수 있습니다. 다만, 전제 조건이 몇 가지 있습니다

 

조건 설명

Python 3.x 설치 Windows, Linux, macOS에 Python 3이 설치되어 있어야 합니다.
requests 모듈 설치 pip install requests로 설치 필요
기본 네트워크 접속 가능 외부 사이트에 접근할 수 있어야 함
쓰기 권한 있는 경로 사용 리포트를 저장할 디렉터리에 쓰기 권한이 있어야 함

 

 

테스트 환경

테스트 결과

Windows 11 Python 3.11 ✅ 정상 작동
Ubuntu 22.04 ✅ 정상 작동
macOS Ventura ✅ 정상 작동
WSL2 Ubuntu ✅ 정상 작동
Docker Alpine Linux + Python ✅ 작동 (추가 패키지 설치 필요)

 

취약점점검 스크립트 다운 받기

scanner.py
0.00MB

반응형

targets.txt
0.00MB

 

이 파일과 함께 targets.txt 파일을 만들어 URL 목록을 적고, Python으로 실행하시면 HTML 리포트가 ./report/output.html 경로에 자동 생성됩니다.

 

이제 scanner.py와 함께 실행하면 각 URL에 대해 점검하고, 결과를 HTML 리포트로 생성합니다.

 

 

 

반응형

댓글