<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    CTFd動態靶機搭建筆記

    一顆小胡椒2022-04-28 22:00:10

    聲明:本人堅決反對利用文章內容進行惡意攻擊行為,一切錯誤行為必將受到懲罰,綠色網絡需要靠我們共同維護,推薦大家在了解技術原理的前提下,更好的維護個人信息安全、企業安全、國家安全。

    CTFd是一個Capture The Flag框架,側重于易用性和可定制性。它提供了運行CTF所需的一切,并且可以使用插件和主題輕松進行自定義。

    官方網站:https://ctfd.io/下載ctfd:https://github.com/glzjin/CTFd.git下載frp:https://github.com/fatedier/frp/releases/download/v0.29.0/frp_0.29.0_linux_amd64.tar.gz下載ctf-whale:https://github.com/glzjin/CTFd-Whale
    

    01

    安裝部署frps服務

    步驟1. 安裝啟動frps

    wget https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gz tar -zxvf frp_0.36.2_linux_amd64.tar.gz cd frp_0.36.2_linux_amd64 sudo cp systemd/* /etc/systemd/system/ sudo mkdir /etc/frp sudo cp frpc.ini  frps.ini /etc/frp/ sudo cp frpc  frps /usr/bin/ sudo chmod a+x /usr/bin/frpc /usr/bin/frps
    

    步驟2. 編輯frps.ini

    sudo vim /etc/frp/frps.ini 
    [common] bind_port = 7897 bind_addr = 0.0.0.0 token =thisistoken vhost_http_port=80 #如果是http動態域名需要這個。80端口開啟需要systemmd使用root權限啟用frp
    

    步驟3. 啟動frps服務

    sudo systemctl start frps
    

    步驟4. 創建網絡并啟動frpc容器


    sudo docker network create ctfd_frp-containers sudo docker network ls
    

    sudo docker run -d -v ~/frp_0.36.2_linux_amd64/frpc.ini:/etc/frp/frpc.ini --network="ctfd_frp-containers" --restart=always "glzjin/frp"
    

    注意:如果執行上述命令行,產生的frpc容器一直循環啟動,通過指令docker logs 查看報錯內容為缺少配置文件,則可以將根目錄的frp_0.36.2_linux_amd64文件夾刪除(注意是系統生成的空文件夾),在下載的frp_0.36.2_linux_amd64文件夾目錄執行(本次操作在opt目錄下)


    sudo docker run -d -v frp_0.36.2_linux_amd64/frpc.ini:/etc/frp/frpc.ini --network="ctfd_frp-containers" --restart=always "glzjin/frp"
    

    步驟5. 創建網絡frpcadmin用于ctfd容器和frpc容器通信


    sudo docker network create frpcadmin sudo docker network connect frpcadmin  #將frpc和ctfd容器單獨連接到網絡frpcadmin,注意要等容器創建好之后再連接,因此ctfd將在稍后連接 docker network inspect frpcadmin  #查看frpcadmin網絡的連接情況并記錄frpc容器的網絡IP
    

    步驟6. 編輯frpc.ini


    vim ~/frp_0.36.2_linux_amd64/frpc.ini 
    [common] server_addr = 172.17.0.1 # 這里填寫宿主機ifconfig之后docker0的ip,因人而異,不要一摸一樣填 server_port = 7897 token=thisistoken admin_addr = 172.19.0.2 #這里填寫frpc容器在frpcadmin網絡里的ip,因人而異,不要一摸一樣填,而且要和后續下圖插件配置界面中?的一樣。admin_port = 7400 log_file = ./frpc.log
    

    編輯完之后記得重啟frpc容器

    02

    安裝靶場與插件

    步驟1. 下載靶場與插件

    將插件ctfd-whale 下載到CTFd/plugins目錄:


    git clone https://github.com/CTFd/CTFd.git cd CTFd/ git reset 6c5c63d667a17aec159c8e26ea53dccfbc4d0fa3 --hard  #回滾到當前教程適合的版本 cd CTFd/plugins  #打開ctfd插件目錄 git clone https://github.com/glzjin/CTFd-Whale.git ctfd-whale  #確保插件文件夾小寫 cd ctfd-whale git reset 5b32f457e9f56ee9b2b29495f4b3b118be3c57bd --hard  #回滾到當前教程適合的版本 cd ../..   #返回ctfd主目錄 vim docker-compose.ym
    

    步驟2. 配置docker-compose.yml


    version: '2'services:  ctfd:    build: .    user: root    restart: always    ports:      - "8000:8000" #你自己的    environment:      - UPLOAD_FOLDER=/var/uploads      - DATABASE_URL=mysql+pymysql://root:ctfd@db/ctfd      - REDIS_URL=redis://cache:6379      - WORKERS=1      - LOG_FOLDER=/var/log/CTFd      - ACCESS_LOG=-      - ERROR_LOG=-    volumes:      - .data/CTFd/logs:/var/log/CTFd      - .data/CTFd/uploads:/var/uploads      - .:/opt/CTFd:ro      - /var/run/docker.sock:/var/run/docker.sock #添加這句即可,別的基本按照官方的不用動    depends_on:      - db    networks:        default:        internal:  db:    image: mariadb:10.4.12 #這里改成10.4.12,10.4.13會出錯    restart: always    environment:      - MYSQL_ROOT_PASSWORD=ctfd      - MYSQL_USER=ctfd      - MYSQL_PASSWORD=ctfd      - MYSQL_DATABASE=ctfd    volumes:      - .data/mysql:/var/lib/mysql    networks:        internal:    # This command is required to set important mariadb defaults    command: [mysqld, --character-set-server=utf8mb4, --collation-server=utf8mb4_unicode_ci, --wait_timeout=28800, --log-warnings=0]  cache:    image: redis:4    restart: always    volumes:    - .data/redis:/data    networks:        internal:networks:    default:         external:          name: frpcadmin    internal:        internal: true
    

    步驟3. 重新build后啟動ctfd


    FROM python:3.6-alpineRUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories &&\    apk update && \    apk add python3 python3-dev linux-headers libffi-dev gcc make musl-dev py-pip mysql-client git openssl-dev g++RUN adduser -D -u 1001 -s /bin/bash ctfdWORKDIR /opt/CTFdRUN mkdir -p /opt/CTFd /var/log/CTFd /var/uploadsRUN pip3 config set global.index-url https://pypi.doubanio.com/simpleRUN pip3 config set install.trusted-host pypi.doubanio.comCOPY requirements.txt .RUN pip install -r requirements.txt -i  https://pypi.doubanio.com/simpleCOPY . /opt/CTFdRUN for d in CTFd/plugins/*; do \      if [ -f "$d/requirements.txt" ]; then \        pip install -r $d/requirements.txt -i  https://pypi.doubanio.com/simple; \      fi; \    done;RUN chmod +x /opt/CTFd/docker-entrypoint.shRUN chown -R 1001:1001 /opt/CTFdRUN chown -R 1001:1001 /var/log/CTFd /var/uploadsUSER 1001EXPOSE 8000ENTRYPOINT ["/opt/CTFd/docker-entrypoint.sh"]
    

    步驟4. 構建啟動鏡像。


    docker-compose build docker-compose up -d
    

    步驟5. 將ctfd連接frpcadmin網絡


    docker network connect frpcadmin 
    

    03

    CTFd部署及插件配置

    步驟1. 啟動ctfd后進入管理頁面選擇插件

    步驟2. 填寫相關參數

    進入后隨便設置,然后進Admin Panel進行設置

    屬性

    配置

    Docker API URL

    unix://var/run/docker.sock

    Frp API IP

    frpc的ip配置

    Frp API Port

    frpc的端口配置

    Frp Http Domain Suffix

    Docker API URL to connect(可填None)

    Frp Http Port

    80

    Frp Direct IP Address

    你的公網ip,本機即為127.0.0.1

    Frp Direct Minimum Port

    與之前frps最小端口呼應

    Frp Direct Minimum Port

    與之前frps最大端口呼應

    Max Container Count

    不超過最大-最小

    Max Renewal Times

    最大實例延時次數

    Frp config template

    填入frps的配置,只需填[common]

    Docker Auto Connect Containers

    ctfd_frpc_1

    Docker Dns Setting

    可填機器內DNS,沒有可填個外網DNS

    Docker Swarm Nodes

    linux-1 與前面swarm集群呼應

    Docker Multi-Container Network Subnet

    內網題大子網ip配置/CIDR

    Docker Multi-Container Network Subnet New Prefix

    每個內網題實例的CIDR

    Docker Container Timeout

    單位為秒

    最后附上我的配置圖片

    示例:接下來帶領大家創建一個web容器:

    首先通過命令行,下載容器鏡像,記錄好鏡像名稱,然后在challenge進行配置:

    版權申明:內容來源網絡,版權歸原創者所有。除非無法確認,都會標明作者及出處,如有侵權,煩請告知,我們會立即刪除并致歉!

    docker容器技術
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    主要介紹了容器技術的發展、以Docker為代表的容器技術生態以及容器技術的應用場景。
    容器安全是一個龐大且牽涉極廣的話題,而容器的安全隔離往往是一套縱深防御的體系,牽扯到AppArmor、Namespace、Capabilities、Cgroup、Seccomp等多項內核技術和特性,但安全卻是一處薄弱則全盤皆輸的局面,一個新的內核特性可能就會讓看似無懈可擊的防線存在突破口。隨著云原生技術的快速發展,越來越多的容器運行時組件在新版本中會默認配置AppArmor策略,原本我們在《紅藍對
    在完成了這項針對 Linux 中多個受控制用戶空間的基礎性工作后,Linux 容器開始逐漸成形并最終發展成了現在的模樣。開源 Docker 社區致力于改進這類技術,并免費提供給所有用戶,使之獲益。除了運行容器之外,Docker 技術還具備其他多項功能,包括簡化用于構建容器、傳輸鏡像以及控制鏡像版本的流程。與此相反,Docker 技術鼓勵應用程序各自獨立運行其進程,并提供相應工具以實現這一功能。
    目前發現并沒有將kubernetes和Docker技術產生背景和需求進行比較的文章,本文從最純正的官方定義角度出發并展開,闡述二者產生背景及與傳統技術對比。官方定義2:k8s是一個開源的容器集群管理系統,可以實現容器集群的自動化部署、自動擴縮容、維護等功能。
    云原生安全工具合集
    2023-04-11 10:06:28
    以Docker+K8s為代表的容器技術得到了越來越廣泛的應用,從安全攻防的角度,攻擊者已經不再滿足于容器逃逸,進而攻擊整個容器編排平臺,如果可以拿下集群管理員權限,其效果不亞于域控失陷。在云原生安全攻防的場景下,甲乙攻防雙方對于安全工具的關注點也不一樣。
    在工業開發領域也有人提出了一種被稱為 MLops 的新的開發范式,即機器學習時代的 Devops。Reproducible Machine Learning,顧名思義,即為可復現的機器學習。
    一、前言 這篇文章可能出現一些圖文截圖顏色或者命令端口不一樣的情況,原因是因為這篇文章是我重復嘗試過好多次才寫的,所以比如正常應該是訪問6443,但是截圖中是顯示大端口比如60123這種,不影響閱讀和文章邏輯,無需理會即可,另外k8s基礎那一欄。。。本來想寫一下k8s的鑒權,后來想了想,太長了,不便于我查筆記,還不如分開寫,所以K8S基礎那里屬于湊數???寫了懶得刪(雖然是粘貼的:))
    Docker容器入門指北
    2022-05-11 06:43:31
    Docker 是一種基于 Linux 的容器技術,類似于輕量的虛擬機。它采用 C/S 架構,使用Go語言開發。Docker 分為 2 個版本:社區版和企業版,社區版免費,企業版是收費的
    聲明 本文為筆者對實際容器安全事件的歸納,僅代表個人觀點。 文末為容器安全事件排查與響應思維導圖。 引子 定位初始入侵位置 首先要確認入侵是否發生在容器內,或者說只在容器內。 場景:zabbix告警一個進程占用非常高,像是挖礦程序/DOS了。 但是查看進程的PPID卻發現是systemd,這種情況大概率是容器相關了。 首先獲取程序PID,然后查看對應進程的進程樹是否父進程為contai
    軟件定義安全毫無疑問是未來數據中心安全建設發展方向,在等保合規建設中發揮重要作用,需要安全廠商對等級保護標準深入理解和云計算安全領域的持續積累創新,需要網絡安全行業進一步推進開放的生態圈建設,不斷開發出適合各種場景的完備的解決方案,應對持續加大的合規、實戰和投入的三重壓力。
    一顆小胡椒
    暫無描述
      亚洲 欧美 自拍 唯美 另类