Post

Pentest Manager A Simple Vulnerability Management System

Pentest Manager A Simple Vulnerability Management System

๐Ÿ›ก๏ธ Pentest Manager

Faraday์—์„œ ์˜๊ฐ์„ ๋ฐ›์€ ๊ฐ„๋‹จํ•œ ์ทจ์•ฝ์  ๊ด€๋ฆฌ ์‹œ์Šคํ…œ (Vulnerability Management System)

  • Antigravity๋ฅผ ํ†ตํ•ด ์ž‘์„ฑ

Pentest Manager๋Š” ๋ณด์•ˆ ํ…Œ์ŠคํŠธ ์ค‘ ๋ฐœ๊ฒฌ๋œ ์ทจ์•ฝ์ ์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋Š” ์›น ๊ธฐ๋ฐ˜ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

Dashboard Backend Frontend License

โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ๐Ÿ—‚๏ธ ์›Œํฌ์ŠคํŽ˜์ด์Šค ๊ด€๋ฆฌ - ํ”„๋กœ์ ํŠธ๋ณ„๋กœ ์ž‘์—… ๊ทธ๋ฃนํ™”
  • ๐Ÿ’ป ํ˜ธ์ŠคํŠธ ๊ด€๋ฆฌ - ์Šค์บ” ๋Œ€์ƒ ์‹œ์Šคํ…œ ์ถ”์ 
  • ๐Ÿ” ์ทจ์•ฝ์  ๊ด€๋ฆฌ - ์‹ฌ๊ฐ๋„๋ณ„ ์ทจ์•ฝ์  ๋ถ„๋ฅ˜ ๋ฐ ๊ด€๋ฆฌ
  • ๐Ÿ“Š ๋Œ€์‹œ๋ณด๋“œ - ์‹ค์‹œ๊ฐ„ ํ†ต๊ณ„ ๋ฐ ์‹œ๊ฐํ™”
  • ๐Ÿ“ ์ž๋™ ๋ฌธ์„œํ™” - Swagger UI๋ฅผ ํ†ตํ•œ API ๋ฌธ์„œ

๐Ÿ—๏ธ ๊ธฐ์ˆ  ์Šคํƒ

๋ฐฑ์—”๋“œ

  • FastAPI - ๊ณ ์„ฑ๋Šฅ Python ์›น ํ”„๋ ˆ์ž„์›Œํฌ
  • SQLAlchemy - ORM (Object-Relational Mapping)
  • SQLite - ๊ฒฝ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
  • Pydantic - ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ

ํ”„๋ก ํŠธ์—”๋“œ

  • React 18 - UI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • TypeScript - ํƒ€์ž… ์•ˆ์ •์„ฑ
  • Vite - ๋น ๋ฅธ ๋นŒ๋“œ ๋„๊ตฌ
  • Axios - HTTP ํด๋ผ์ด์–ธํŠธ

๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Dashboard/
โ”œโ”€โ”€ backend/              # FastAPI ๋ฐฑ์—”๋“œ
โ”‚   โ”œโ”€โ”€ api/             # API ๋ผ์šฐํ„ฐ
โ”‚   โ”‚   โ”œโ”€โ”€ dashboard.py
โ”‚   โ”‚   โ”œโ”€โ”€ hosts.py
โ”‚   โ”‚   โ”œโ”€โ”€ vulnerabilities.py
โ”‚   โ”‚   โ””โ”€โ”€ workspaces.py
โ”‚   โ”œโ”€โ”€ main.py          # ์•ฑ ์ง„์ž…์ 
โ”‚   โ”œโ”€โ”€ database.py      # DB ์„ค์ •
โ”‚   โ”œโ”€โ”€ models.py        # ORM ๋ชจ๋ธ
โ”‚   โ”œโ”€โ”€ schemas.py       # Pydantic ์Šคํ‚ค๋งˆ
โ”‚   โ””โ”€โ”€ requirements.txt
โ”‚
โ””โ”€โ”€ frontend/            # React ํ”„๋ก ํŠธ์—”๋“œ
    โ”œโ”€โ”€ src/
    โ”‚   โ”œโ”€โ”€ components/  # React ์ปดํฌ๋„ŒํŠธ
    โ”‚   โ”œโ”€โ”€ services/    # API ํด๋ผ์ด์–ธํŠธ
    โ”‚   โ”œโ”€โ”€ App.tsx
    โ”‚   โ””โ”€โ”€ main.tsx
    โ”œโ”€โ”€ package.json
    โ””โ”€โ”€ vite.config.ts

๐Ÿš€ ์‹œ์ž‘ํ•˜๊ธฐ

์‚ฌ์ „ ์š”๊ตฌ์‚ฌํ•ญ

  • Python 3.9+
  • Node.js 16+
  • npm ๋˜๋Š” yarn

๋ฐฑ์—”๋“œ ์„ค์ •

1
2
3
4
5
6
7
8
9
10
11
12
# ๋ฐฑ์—”๋“œ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™
cd backend

# ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ (์˜ต์…˜)
python3 -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# ์˜์กด์„ฑ ์„ค์น˜
pip3 install -r requirements.txt

# ์„œ๋ฒ„ ์‹คํ–‰
python3 -m uvicorn main:app --reload --port 8000

๋ฐฑ์—”๋“œ ์„œ๋ฒ„๊ฐ€ http://127.0.0.1:8000 ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“– API ๋ฌธ์„œ: http://127.0.0.1:8000/docs

ํ”„๋ก ํŠธ์—”๋“œ ์„ค์ •

์ƒˆ ํ„ฐ๋ฏธ๋„ ์ฐฝ์—์„œ:

1
2
3
4
5
6
7
8
# ํ”„๋ก ํŠธ์—”๋“œ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™
cd frontend

# ์˜์กด์„ฑ ์„ค์น˜
npm install

# ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹คํ–‰
npm run dev

ํ”„๋ก ํŠธ์—”๋“œ๊ฐ€ http://localhost:5173 ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“– API ์—”๋“œํฌ์ธํŠธ

Workspaces

  • GET /api/workspaces - ์›Œํฌ์ŠคํŽ˜์ด์Šค ๋ชฉ๋ก ์กฐํšŒ
  • POST /api/workspaces - ์ƒˆ ์›Œํฌ์ŠคํŽ˜์ด์Šค ์ƒ์„ฑ
  • GET /api/workspaces/{id} - ์›Œํฌ์ŠคํŽ˜์ด์Šค ์ƒ์„ธ ์กฐํšŒ
  • PUT /api/workspaces/{id} - ์›Œํฌ์ŠคํŽ˜์ด์Šค ์ˆ˜์ •
  • DELETE /api/workspaces/{id} - ์›Œํฌ์ŠคํŽ˜์ด์Šค ์‚ญ์ œ

Hosts

  • GET /api/hosts - ํ˜ธ์ŠคํŠธ ๋ชฉ๋ก ์กฐํšŒ
  • POST /api/hosts - ์ƒˆ ํ˜ธ์ŠคํŠธ ์ถ”๊ฐ€
  • GET /api/hosts/{id} - ํ˜ธ์ŠคํŠธ ์ƒ์„ธ ์กฐํšŒ
  • PUT /api/hosts/{id} - ํ˜ธ์ŠคํŠธ ์ •๋ณด ์ˆ˜์ •
  • DELETE /api/hosts/{id} - ํ˜ธ์ŠคํŠธ ์‚ญ์ œ

Vulnerabilities

  • GET /api/vulnerabilities - ์ทจ์•ฝ์  ๋ชฉ๋ก ์กฐํšŒ
  • POST /api/vulnerabilities - ์ƒˆ ์ทจ์•ฝ์  ๋“ฑ๋ก
  • GET /api/vulnerabilities/{id} - ์ทจ์•ฝ์  ์ƒ์„ธ ์กฐํšŒ
  • PUT /api/vulnerabilities/{id} - ์ทจ์•ฝ์  ์ •๋ณด ์ˆ˜์ •
  • DELETE /api/vulnerabilities/{id} - ์ทจ์•ฝ์  ์‚ญ์ œ

Dashboard

  • GET /api/dashboard/stats - ๋Œ€์‹œ๋ณด๋“œ ํ†ต๊ณ„ ์กฐํšŒ

๐ŸŽจ ์ฃผ์š” ํŠน์ง•

๋ฐฑ์—”๋“œ

  • โœ… RESTful API ์„ค๊ณ„
  • โœ… ์ž๋™ ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ (Pydantic)
  • โœ… Swagger/OpenAPI ์ž๋™ ๋ฌธ์„œํ™”
  • โœ… CORS ์ง€์›
  • โœ… SQLAlchemy ORM

ํ”„๋ก ํŠธ์—”๋“œ

  • โœ… ๋‹คํฌ ํ…Œ๋งˆ UI
  • โœ… ๋ฐ˜์‘ํ˜• ๋””์ž์ธ
  • โœ… ๋ถ€๋“œ๋Ÿฌ์šด ์• ๋‹ˆ๋ฉ”์ด์…˜
  • โœ… ์‹ฌ๊ฐ๋„๋ณ„ ์ƒ‰์ƒ ์ฝ”๋“œ (Critical, High, Medium, Low, Info)
  • โœ… TypeScript ํƒ€์ž… ์•ˆ์ •์„ฑ

๐Ÿ“ธ ์Šคํฌ๋ฆฐ์ƒท

๋Œ€์‹œ๋ณด๋“œ

์‹œ์Šคํ…œ ์ „์ฒด ํ†ต๊ณ„๋ฅผ ํ•œ๋ˆˆ์— ํ™•์ธ

์›Œํฌ์ŠคํŽ˜์ด์Šค

ํ”„๋กœ์ ํŠธ๋ณ„ ์ž‘์—… ๊ณต๊ฐ„ ๊ด€๋ฆฌ

ํ˜ธ์ŠคํŠธ

์Šค์บ” ๋Œ€์ƒ ์‹œ์Šคํ…œ ๋“ฑ๋ก ๋ฐ ๊ด€๋ฆฌ

์ทจ์•ฝ์ 

๋ฐœ๊ฒฌ๋œ ๋ณด์•ˆ ์ทจ์•ฝ์  ์ถ”์  ๋ฐ ๊ด€๋ฆฌ

๐Ÿ› ๏ธ ์‚ฌ์šฉ ์˜ˆ์‹œ

1. ์›Œํฌ์ŠคํŽ˜์ด์Šค ์ƒ์„ฑ

1
2
3
4
5
6
curl -X POST "http://localhost:8000/api/workspaces/" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Web Application Security Test",
    "description": "Q1 2024 Security Assessment"
  }'

2. ํ˜ธ์ŠคํŠธ ์ถ”๊ฐ€

1
2
3
4
5
6
7
8
curl -X POST "http://localhost:8000/api/hosts/" \
  -H "Content-Type: application/json" \
  -d '{
    "workspace_id": 1,
    "ip": "192.168.1.100",
    "hostname": "webserver",
    "os": "Ubuntu 22.04"
  }'

3. ์ทจ์•ฝ์  ๋“ฑ๋ก

1
2
3
4
5
6
7
8
9
curl -X POST "http://localhost:8000/api/vulnerabilities/" \
  -H "Content-Type: application/json" \
  -d '{
    "workspace_id": 1,
    "host_id": 1,
    "name": "SQL Injection",
    "severity": "high",
    "description": "SQL injection vulnerability found in login form"
  }'

๐Ÿ”ฎ ํ–ฅํ›„ ๊ฐœ์„  ๊ณ„ํš

  • ์‚ฌ์šฉ์ž ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๊ด€๋ฆฌ
  • ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹œ์Šคํ…œ (Nmap, Burp Suite ํ†ตํ•ฉ)
  • PDF ๋ณด๊ณ ์„œ ์ž๋™ ์ƒ์„ฑ
  • ๊ฒ€์ƒ‰ ๋ฐ ํ•„ํ„ฐ๋ง ๊ณ ๋„ํ™”
  • ํŽ˜์ด์ง€๋„ค์ด์…˜
  • WebSocket ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ
  • ๋ฐ์ดํ„ฐ ๋‚ด๋ณด๋‚ด๊ธฐ (CSV, JSON, XML)
  • ์ทจ์•ฝ์  ํ…œํ”Œ๋ฆฟ ์‹œ์Šคํ…œ
  • ํ˜‘์—… ๊ธฐ๋Šฅ (๋Œ“๊ธ€, ํƒœ๊ทธ)

๐Ÿค ๊ธฐ์—ฌํ•˜๊ธฐ

๊ธฐ์—ฌ๋Š” ์–ธ์ œ๋‚˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ผ์ฃผ์„ธ์š”:

  1. ์ด ์ €์žฅ์†Œ๋ฅผ Fork
  2. Feature ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ (git checkout -b feature/AmazingFeature)
  3. ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ปค๋ฐ‹ (git commit -m 'Add some AmazingFeature')
  4. ๋ธŒ๋žœ์น˜์— Push (git push origin feature/AmazingFeature)
  5. Pull Request ์ƒ์„ฑ

๐Ÿ“ ๋ผ์ด์„ ์Šค

์ด ํ”„๋กœ์ ํŠธ๋Š” MIT ๋ผ์ด์„ ์Šค ํ•˜์— ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ™ ๊ฐ์‚ฌ์˜ ๋ง

  • Faraday - ํ”„๋กœ์ ํŠธ ์˜๊ฐ
  • FastAPI - ํ›Œ๋ฅญํ•œ ์›น ํ”„๋ ˆ์ž„์›Œํฌ
  • React - UI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

**Made with โค๏ธ for Security Professionals

This post is licensed under CC BY 4.0 by the author.

ยฉ Pedro. Some rights reserved.