当前位置: 首页 > news >正文

用docker搭建的Vulfocus镜像管理界面没有镜像可以拉取解决办法

ps:截止到今天2023.4.2,kali和vps的docker拉取的vulfocus镜像会有版本的区别,虽然都是拉取的最新版,vps上镜像为3个月以前,kali上为16个月以前,==所以在修改 views.py 文件时,可能会发现文件内容不一样==。版本不同也导致一键同步报错的解决办法在vps上可行,但是在kali上就不行

17.png

18.png

在开始操作之前,需要将用户切换为root用户 ૮(˶ᵔ ᵕ ᵔ˶)ა,当kali和vps上出现不同操作时我会分开说,那么现在让我们开始

RC.gif

# 1、查看容器ID

用命令 docker ps -a 查看 vulfocus 容器的ID ,接下来会使用到它

1.png

# 2、启动容器

启动容器(==如果启动了就不用执行==),这里用到命令 docker start 你的容器ID

2.png

# 3、查看需要修改的文件

先去容器里确定是否有我们需要修改的文件,先用 docker exec -it 你的容器ID /bin/bash 进入容器,通过命令 cd ./dockerapi 进入 dockerapi 目录(进入时我们已经在 vulfocus-api 目录下了),再输入 ls 查看是否有 views.py 文件,如果没有的话,可能需要重新从 docker 拉取 vulfocus 的镜像,如果有请输入exit退出容器

3.png

# 4、拷贝出需要修改文件(容器里没有vim命令,不能直接修改)

Kali:输入命令 docker cp 你的容器ID:/vulfocus-api/dockerapi/views.py /home/kali/ ,将容器里的 views.py 文件拷贝到 kali 机器上的 ==/home/kali 目录下==

4.jpg

VPS:输入命令 docker cp 你的容器ID:/vulfocus-api/dockerapi/views.py /home/用户/ ,将容器里的 views.py 文件拷贝到 ==/home/用户 目录下==,然后到这个目录用 ls 查看一下

5.png

# 5、修改文件

Kali:打开 views.py 文件,在第 1576 行处,将 url 改为 https://vulfocus.cn/api/imgs/info,如果打开发现 1576 行不是这样,而是和 ==VPS== 这边的图一样,请看 ==VPS== 这边

6.png

VPS:将 views.py 文件下载到本地,这样修改起来会方便一点,保存时也不会报权限错误。如果打开文件时第 1575 行不是图这样,而是和 ==Kali== 的一样,可以直接按 kali 的来修改

7.png

这种情况需要添加一大段代码,需要添加的代码如下

    try:url = "http://vulfocus.cn/api/imgs/info"res = requests.get(url, verify=False).contentreq = json.loads(res)image_names = list(ImageInfo.objects.all().values_list('image_name', flat=True))for item in req:if item['image_name'] == "":continueif 'is_docker_compose' in item:if item['is_docker_compose'] == True:continueif item['image_name'] in image_names:if item['image_name'] == "vulfocus/vulfocus:latest":continuesingle_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 函数下

8.png

9.png

# 6、关于一键同步报错问题

关于一键同步报错问题,vps 上拉取的vulfocus并没有这个问题,如图所示的这个代码,红框部分就是和同步有关的,它并不能放在 try 这段代码后面,如果 kali 上想尝试解决一键同步报错,可以尝试将这个段代码加载如图所示位置(但是,截至写这篇文章为止,我尝试加这段代码并不能解决)

tasks.synchronous_image.delay()
return JsonResponse({"code": 200, "data": "镜像同步中"})

11.png

# 7、保存

Kali:点击保存,另存为到桌面(不替换的原因是我尝试之后发现替换不了)

12.png

VPS:直接 Ctrl + s 保存

# 8、替换文件

Kali:将原来 /home/kali 目录下的 views.py 文件删除,把桌面新保存的 views.py 文件移动到 /home/kali 目录下

13.png

VPS:将原来的 views.py 文件删除,再把桌面上修改好的文件上传到相同目录

# 9、替换容器内的文件

Kali:输入命令 docker cp /home/kali/views.py 你的容器ID:/vulfocus-api/dockerapi/views.py ,将 views.py 文件拷贝到容器内,替换掉原来的文件,再使用命令 docker restart 你的容器ID 重启容器

14.png

VPS:输入命令 docker cp /home/用户/views.py 你的容器ID:/vulfocus-api/dockerapi/views.py ,将 views.py 文件拷贝到容器内,替换掉原来的文件,再使用命令 docker restart 你的容器ID 重启容器

15.png

# 10、等待重启完成后,在浏览器中访问Vulfocus,点击镜像管理,查看是否有镜像可以拉取

16.png

# 11、查询功能可以正常使用,涵盖了 vulfocus 上的所有靶场,但是添加功能里的搜索镜像的功能还没有解决,本地靶场还是能正常导入

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

http://www.lryc.cn/news/360421.html

相关文章:

  • CSPM.pdf
  • 多个短视频剪辑成一个视频:四川京之华锦信息技术公司
  • 算法第三天力扣第69题:X的平方根
  • 异常处理。
  • MySQL—函数(介绍)—字符串函数(基础)
  • CTF本地靶场搭建——静态flag题型的创建
  • 基于Django的博客系统之用HayStack连接elasticsearch增加搜索功能(五)
  • 开源VS闭源:大模型发展路径之争,你站哪一派?
  • Python | Leetcode Python题解之第115题不同的子序列
  • STM32高级控制定时器应用之检测输入PWM周期和占空比
  • [AI Google] 三种新方法利用 Gemini 提高 Google Workspace 的生产力
  • 【U-Net验证】逐元素乘积将特征投射到极高维隐式特征空间的能力
  • 快团团大团长帮卖如何导出单个团购的订单?免费教程教你怎么做!
  • services层和controller层
  • Pycharm编辑器下自定义模块导入报错:no module named问题
  • C#使用GDI对一个矩形进行任意角度旋转
  • 打印机的ip不同且连不上
  • 关于linux程序的查看、前台运行、后台运行、杀死的管理操作。
  • STM32作业设计
  • PHPSTOM配置Laradock,xdebug,phpunit
  • 使用Java进行数据分析和处理:应用在实际业务场景中的技术
  • C++中的List
  • go map 如何比较两个 map 相等
  • 牛客网刷题 | BC108 反斜线形图案
  • 数据的表示和运算
  • 【爬虫工具】油管视频批量采集软件
  • 【LeetCode刷题】二分查找:寻找旋转排序数组中的最小值、点名
  • 使用python绘制小提琴图
  • 【C++】6-7 你好,输出的格式控制(三角形)
  • 力扣每日一题 6/1