天天看點

用docker搭建的Vulfocus鏡像管理界面沒有鏡像可以拉取解決辦法

作者:網絡安全菜鳥

用docker搭建的Vulfocus鏡像管理界面沒有鏡像可以拉取解決辦法

ps:截止到今天2023.4.2,kali和vps的docker拉取的vulfocus鏡像會有版本的差別,雖然都是拉取的最新版,vps上鏡像為3個月以前,kali上為16個月以前,==是以在修改 views.py 檔案時,可能會發現檔案内容不一樣==。版本不同也導緻一鍵同步報錯的解決辦法在vps上可行,但是在kali上就不行

用docker搭建的Vulfocus鏡像管理界面沒有鏡像可以拉取解決辦法
用docker搭建的Vulfocus鏡像管理界面沒有鏡像可以拉取解決辦法

#在開始操作之前,需要将使用者切換為root使用者૮(˶ᴖ ᴗ ᴖ˶)ა,當kali和vps上出現不同操作時我會分開說,那麼現在讓我們開始

用docker搭建的Vulfocus鏡像管理界面沒有鏡像可以拉取解決辦法

#1、檢視容器ID

用指令 檢視 vulfocus 容器的ID ,接下來會使用到它docker ps -a

用docker搭建的Vulfocus鏡像管理界面沒有鏡像可以拉取解決辦法

#2、啟動容器

啟動容器(==如果啟動了就不用執行==),這裡用到指令docker start 你的容器ID

用docker搭建的Vulfocus鏡像管理界面沒有鏡像可以拉取解決辦法

#3、檢視需要修改的檔案

先去容器裡确定是否有我們需要修改的檔案,先用 進入容器,通過指令 進入 dockerapi 目錄(進入時我們已經在 vulfocus-API 目錄下了),再輸入 ls 檢視是否有 views.py 檔案,如果沒有的話,可能需要重新從 docker 拉取 vulfocus 的鏡像,如果有請輸入退出容器docker exec -it 你的容器ID /bin/bashcd ./dockerapi

用docker搭建的Vulfocus鏡像管理界面沒有鏡像可以拉取解決辦法

#4、拷貝出需要修改檔案(容器裡沒有vim指令,不能直接修改)

Kali:輸入指令 ,将容器裡的 views.py 檔案拷貝到 kali 機器上的 ==/home/kali 目錄下==docker cp 你的容器ID:/vulfocus-api/dockerapi/views.py /home/kali/

用docker搭建的Vulfocus鏡像管理界面沒有鏡像可以拉取解決辦法

VPS:輸入指令 ,将容器裡的 views.py 檔案拷貝到 ==/home/使用者 目錄下==,然後到這個目錄用 檢視一下docker cp 你的容器ID:/vulfocus-api/dockerapi/views.py /home/使用者/ls

用docker搭建的Vulfocus鏡像管理界面沒有鏡像可以拉取解決辦法

#5、修改檔案

Kali:打開 views.py 檔案,在第 1576 行處,将 url 改為 ,如果打開發現 1576 行不是這樣,而是和 ==VPS== 這邊的圖一樣,請看 ==VPS== 這邊https://vulfocus.cn/api/imgs/info

用docker搭建的Vulfocus鏡像管理界面沒有鏡像可以拉取解決辦法

VPS:将 views.py 檔案下載下傳到本地,這樣修改起來會友善一點,儲存時也不會報權限錯誤。如果打開檔案時第 1575 行不是圖這樣,而是和 ==Kali== 的一樣,可以直接按 Kali 的來修改

用docker搭建的Vulfocus鏡像管理界面沒有鏡像可以拉取解決辦法

這種情況需要添加一大段代碼,需要添加的代碼如下

try:
        url = "http://vulfocus.cn/api/imgs/info"
        res = requests.get(url, verify=False).content
        req = json.loads(res)
        image_names = list(ImageInfo.objects.all().values_list('image_name', flat=True))
        for item in req:
            if item['image_name'] == "":
                continue
            if 'is_docker_compose' in item:
                if item['is_docker_compose'] == True:
                    continue
            if item['image_name'] in image_names:
                if item['image_name'] == "vulfocus/vulfocus:latest":
                    continue
                single_img = ImageInfo.objects.filter(image_name__contains=item['image_name']).first()
                if single_img.image_vul_name != item['image_vul_name'] or single_img.image_vul_name == "":
                    single_img.image_vul_name = item['image_vul_name']
                if single_img.image_desc == "":
                    single_img.image_desc = item['image_desc']
                if single_img.rank != item['rank']:
                    single_img.rank = item['rank']
                if single_img.degree != item['degree']:
                    single_img.degree = json.dumps(item['degree'])
                if "writeup_date" in item and single_img.writeup_date != item['writeup_date']:
                    single_img.writeup_date = item['writeup_date']
                single_img.save()
            else:
                if "writeup_date" in item:
                    writeup_date = item['writeup_date']
                else:
                    writeup_date = ""
                image_info = ImageInfo(image_name=item['image_name'], image_vul_name=item['image_vul_name'],
                                       image_desc=item['image_desc'], rank=item['rank'],
                                       degree=json.dumps(item['degree']),
                                       is_ok=False, create_date=timezone.now(), writeup_date=writeup_date,
                                       update_date=timezone.now())
                image_info.save()
        return JsonResponse({"code": 200, "data": "成功"})
    except Exception as e:
        return JsonResponse({"code": 201, "data": e})
           

添加在如圖所示位置,需要注意代碼格式和排版,他們都在自定義的 get_timing_imgs 函數下

用docker搭建的Vulfocus鏡像管理界面沒有鏡像可以拉取解決辦法

#6、關于一鍵同步報錯問題

關于一鍵同步報錯問題,vps 上拉取的vulfocus并沒有這個問題,如圖所示的這個代碼,紅框部分就是和同步有關的,它并不能放在 try 這段代碼後面,如果 kali 上想嘗試解決一鍵同步報錯,可以嘗試将這個段代碼加載如圖所示位置(但是,截至寫這篇文章為止,我嘗試加這段代碼并不能解決)

tasks.synchronous_image.delay()
return JsonResponse({"code": 200, "data": "鏡像同步中"})
           
用docker搭建的Vulfocus鏡像管理界面沒有鏡像可以拉取解決辦法

#7、儲存

Kali:點選儲存,另存為到桌面(不替換的原因是我嘗試之後發現替換不了)

用docker搭建的Vulfocus鏡像管理界面沒有鏡像可以拉取解決辦法

VPS:直接 Ctrl + s 儲存

#8、替換檔案

Kali:将原來 /home/kali 目錄下的 views.py 檔案删除,把桌面新儲存的 views.py 檔案移動到 /home/kali 目錄下

用docker搭建的Vulfocus鏡像管理界面沒有鏡像可以拉取解決辦法

VPS:将原來的 views.py 檔案删除,再把桌面上修改好的檔案上傳到相同目錄

#9、替換容器内的檔案

Kali:輸入指令 ,将 views.py 檔案拷貝到容器内,替換掉原來的檔案,再使用指令 重新開機容器docker cp /home/kali/views.py 你的容器ID:/vulfocus-api/dockerapi/views.pydocker restart 你的容器ID

用docker搭建的Vulfocus鏡像管理界面沒有鏡像可以拉取解決辦法

VPS:輸入指令 ,将 views.py 檔案拷貝到容器内,替換掉原來的檔案,再使用指令 重新開機容器docker cp /home/使用者/views.py 你的容器ID:/vulfocus-api/dockerapi/views.pydocker restart 你的容器ID

用docker搭建的Vulfocus鏡像管理界面沒有鏡像可以拉取解決辦法

#10、等待重新開機完成後,在浏覽器中通路Vulfocus,點選鏡像管理,檢視是否有鏡像可以拉取

用docker搭建的Vulfocus鏡像管理界面沒有鏡像可以拉取解決辦法

#11、查詢功能可以正常使用,涵蓋了 vulfocus 上的所有靶場,但是添加功能裡的搜尋鏡像的功能還沒有解決,本地靶場還是能正常導入

希望能幫助到你૮(˶ᵔ ᵕ ᵔ˶)ა