网站首页 > 基础教程 正文
用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 上的所有靶场,但是添加功能里的搜索镜像的功能还没有解决,本地靶场还是能正常导入
希望能帮助到你?(?? ? ??)?
猜你喜欢
- 2024-12-07 别再问了,万字长文教你用 Celery 执行和周期任务(多图)
- 2024-12-07 「项目部署」使用Jenkins一键打包部署SpringBoot应用
- 2024-12-07 基于(springboot+vue+mqtt协议)的智能家居系统
- 2024-12-07 NVIDIA Jetson Nano 2GB 系列文章(43):CSI摄像头安装与测试
- 2024-12-07 神级开源Markdown笔记应用,多端适配,怎能不让人迷糊?
- 2024-12-07 如何制作 NodeMCU ESP32 自定义固件
- 2024-12-07 .NET 6 从0到1使用Docker部署至Linux环境
- 2024-12-07 「Docker类」 使用Dockerfile构建并部署nginx
- 2024-12-07 我是如何使用docker安装nginx并配置https服务的
- 2024-12-07 jeecg-boot 容器(docker)部署方式(转载)
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)