用docker搭建的Vulfocus鏡像管理界面沒有鏡像可以拉取解決辦法
ps:截止到今天2023.4.2,kali和vps的docker拉取的vulfocus鏡像會有版本的差別,雖然都是拉取的最新版,vps上鏡像為3個月以前,kali上為16個月以前,==是以在修改 views.py 檔案時,可能會發現檔案内容不一樣==。版本不同也導緻一鍵同步報錯的解決辦法在vps上可行,但是在kali上就不行
#在開始操作之前,需要将使用者切換為root使用者૮(˶ᴖ ᴗ ᴖ˶)ა,當kali和vps上出現不同操作時我會分開說,那麼現在讓我們開始
#1、檢視容器ID
用指令 檢視 vulfocus 容器的ID ,接下來會使用到它docker ps -a
#2、啟動容器
啟動容器(==如果啟動了就不用執行==),這裡用到指令docker start 你的容器ID
#3、檢視需要修改的檔案
先去容器裡确定是否有我們需要修改的檔案,先用 進入容器,通過指令 進入 dockerapi 目錄(進入時我們已經在 vulfocus-API 目錄下了),再輸入 ls 檢視是否有 views.py 檔案,如果沒有的話,可能需要重新從 docker 拉取 vulfocus 的鏡像,如果有請輸入退出容器docker exec -it 你的容器ID /bin/bashcd ./dockerapi
#4、拷貝出需要修改檔案(容器裡沒有vim指令,不能直接修改)
Kali:輸入指令 ,将容器裡的 views.py 檔案拷貝到 kali 機器上的 ==/home/kali 目錄下==docker cp 你的容器ID:/vulfocus-api/dockerapi/views.py /home/kali/
VPS:輸入指令 ,将容器裡的 views.py 檔案拷貝到 ==/home/使用者 目錄下==,然後到這個目錄用 檢視一下docker cp 你的容器ID:/vulfocus-api/dockerapi/views.py /home/使用者/ls
#5、修改檔案
Kali:打開 views.py 檔案,在第 1576 行處,将 url 改為 ,如果打開發現 1576 行不是這樣,而是和 ==VPS== 這邊的圖一樣,請看 ==VPS== 這邊https://vulfocus.cn/api/imgs/info
VPS:将 views.py 檔案下載下傳到本地,這樣修改起來會友善一點,儲存時也不會報權限錯誤。如果打開檔案時第 1575 行不是圖這樣,而是和 ==Kali== 的一樣,可以直接按 Kali 的來修改
這種情況需要添加一大段代碼,需要添加的代碼如下
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 函數下
#6、關于一鍵同步報錯問題
關于一鍵同步報錯問題,vps 上拉取的vulfocus并沒有這個問題,如圖所示的這個代碼,紅框部分就是和同步有關的,它并不能放在 try 這段代碼後面,如果 kali 上想嘗試解決一鍵同步報錯,可以嘗試将這個段代碼加載如圖所示位置(但是,截至寫這篇文章為止,我嘗試加這段代碼并不能解決)
tasks.synchronous_image.delay()
return JsonResponse({"code": 200, "data": "鏡像同步中"})
#7、儲存
Kali:點選儲存,另存為到桌面(不替換的原因是我嘗試之後發現替換不了)
VPS:直接 Ctrl + s 儲存
#8、替換檔案
Kali:将原來 /home/kali 目錄下的 views.py 檔案删除,把桌面新儲存的 views.py 檔案移動到 /home/kali 目錄下
VPS:将原來的 views.py 檔案删除,再把桌面上修改好的檔案上傳到相同目錄
#9、替換容器内的檔案
Kali:輸入指令 ,将 views.py 檔案拷貝到容器内,替換掉原來的檔案,再使用指令 重新開機容器docker cp /home/kali/views.py 你的容器ID:/vulfocus-api/dockerapi/views.pydocker restart 你的容器ID
VPS:輸入指令 ,将 views.py 檔案拷貝到容器内,替換掉原來的檔案,再使用指令 重新開機容器docker cp /home/使用者/views.py 你的容器ID:/vulfocus-api/dockerapi/views.pydocker restart 你的容器ID
#10、等待重新開機完成後,在浏覽器中通路Vulfocus,點選鏡像管理,檢視是否有鏡像可以拉取
#11、查詢功能可以正常使用,涵蓋了 vulfocus 上的所有靶場,但是添加功能裡的搜尋鏡像的功能還沒有解決,本地靶場還是能正常導入
希望能幫助到你૮(˶ᵔ ᵕ ᵔ˶)ა