반응형
취약점 자동 점검 & 리포트 생성 스크립트 (윈도우·리눅스 모두 호환)
개념: 취약점 점검 도구란?
취약점 점검 도구는 시스템, 네트워크, 웹 애플리케이션 등에 존재하는 보안 취약점(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 | ✅ 작동 (추가 패키지 설치 필요) |
취약점점검 스크립트 다운 받기
반응형
이 파일과 함께 targets.txt 파일을 만들어 URL 목록을 적고, Python으로 실행하시면 HTML 리포트가 ./report/output.html 경로에 자동 생성됩니다.
이제 scanner.py와 함께 실행하면 각 URL에 대해 점검하고, 결과를 HTML 리포트로 생성합니다.
반응형
'IT' 카테고리의 다른 글
힙(Heap) 메모리란? 쉽게 이해하는 힙(heap) 메모리 (0) | 2025.05.29 |
---|---|
이제 진짜 이해하는 프로세스 vs 스레드 (2) | 2025.05.29 |
리눅스 서버 점검 자동화 스크립트: 시스템 상태를 매일 자동으로 체크하는 방법 (0) | 2025.05.28 |
Red Hat 계열 리눅스에서 .conf 파일 안 특정 단어 찾기: grep 명령어 완전정복 (0) | 2025.05.28 |
AIX에서 XML 파일 내 특정 문자열 검색: [특정단어] 포함 여부 확인하는 명령어 정리 (0) | 2025.05.28 |
댓글