自动化渗透测试环境
以下内容对应仓库
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 |
|
对应仓库中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 |
|
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.py
的 parse_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)
就是这个换行测试的时候没加,导致命令怎么都执行不成功,调试了一下午也不知道问题出在哪里😥😥