iT邦幫忙

2025 iThome 鐵人賽

DAY 2
0
自我挑戰組

利用生成式AI等工具來學習資安系列 第 6

Day 6 「建立可重複的本地實驗環境(簡易脆弱 web app)」

  • 分享至 

  • xImage
  •  

建立一個本地可啟動的脆弱 Web Lab(含反射/儲存 XSS 範例)。

用 Docker 把環境封裝成映像,能快速啟動/重置。

確認可以在 lab 做 Day5/Day4 的測試(抓封包、重放 payload)。

僅在本機或隔離 VM 執行。

啟動時請綁定到 localhost(127.0.0.1),不要對外開放。

若你在可共用網路,啟動時加 --network none 或用 127.0.0.1:PORT 綁定。
app.py

from flask import Flask, request, render_template_string

app = Flask(__name__)

@app.route('/')
def index():
    return '<a href="/search">Go to search</a>'

@app.route('/search')
def search():
    q = request.args.get('q', '')
    # 故意不做輸出編碼(vulnerable)
    template = """
    <h1>Search</h1>
    <form action="/search" method="get">
      <input name="q" value="{{q}}" />
      <button type="submit">Search</button>
    </form>
    <div>Results for: %s</div>
    """ % q
    return render_template_string(template)

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=False)

requirements.txt

Flask==2.2.5

Dockerfile

FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY app.py .
EXPOSE 5000
CMD ["python", "app.py"]

docker-compose.yml(可選,方便管理)

version: "3.8"
services:
  vuln_web:
    build: .
    ports:
      - "127.0.0.1:5000:5000"   # 僅綁定本機
    restart: unless-stopped

啟動步驟(在 vuln_lab 目錄)

建檔後,建立映像:

docker build -t vuln_lab:1.0 .

或使用 compose:

docker-compose up --build -d

開瀏覽器到 http://127.0.0.1:5000,點 Search,輸入 alert('XSS') 測試反射 XSS。

若要停止並移除容器(reset lab):

docker-compose down
# 或
docker ps | grep vuln_lab && docker stop <container_id> && docker rm <container_id>

安全強化(測試結束後建議)

停止容器、移除映像:docker rmi vuln_lab:1.0

若你在公開網路執行過,記得檢查防火牆與 port 映射,並移除任何外放設定。

今天完成 Day6:在本機用 Flask + Docker 建置脆弱實驗室並成功觸發反射型 XSS。過程學會把容器綁定於 localhost、建立映像與重置流程,體會測試需在隔離環境進行以確保安全。下一步計畫加入儲存型 XSS 與自動化測試,並把測試步驟與證據整理成可重複的報告。


上一篇
Day 5 Web 常見漏洞實作入門:XSS(跨站腳本攻擊)
下一篇
Day 7:安全倫理與法規(Rules of Engagement)
系列文
利用生成式AI等工具來學習資安8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言