4A安全性分析

0x00.概述

0.1 原由

前段時間在zone裏看到有人問4A的滲透測試,本人正好接觸過幾款4A和堡壘機產品,今天抽空就總結下我的在滲透中遇到的4A問題。php

0.2 4A

4A是指:認證Authentication、帳號Account、受權Authorization、審計Audit,中文名稱爲統一安全管理平臺解決方案。即將身份認證、受權、審計和帳號(即不能否認性及數據完整性)定義爲網絡安全的四大組成部分,從而確立了身份認證在整個網絡安全系統中的地位與做用。(百度百科)。html

 

0x01.認證Authentication

認證的方式通常有如下幾種:web

  1. 靜態口令windows

  2. 動態口令令牌瀏覽器

  3. USB令牌安全

存在的問題有:cookie

1.1 帳號枚舉

這裏的帳號枚舉並非僅僅知道哪一個帳號存在,哪一個帳號不存在。網絡

$mobile = $_GET["mobile"];  
......
if(empty($errMsg)){
    $errMsg = "認證失敗"
}
$oper = "主帳號:".$username."登陸失敗,緣由:".$errMgs;
......

從上面帳號能夠看到,登陸時,若是你輸入的是手機號,那麼登陸失敗的時候,就會將手機號對應的username返回,那麼咱們就能夠拿手機號和用戶名到密碼找回頁面等地方作進一步的測試。app

1.2 認證繞過

不少寫的不嚴謹的程序,在判斷用戶是否處於登陸狀態時,都是根據cookie判斷,以下面代碼,直接根據cookie中的userid和username,若是存在,就判斷用戶已經登陸。由此就能夠修改cookie,登陸任意用戶的帳號。運維

public function index(){
$userid = intval($_COOKIE['userid']);
$username = $_COOKIE['username']; if($userid){
echo '<a href="'.C('web_path').'index.php?s=user/show" target="_blank" class="username">'.htmlspecialchars($username).'</a> | <a href="'.C('web_path').'index.php?s=user/logout/re/true">退出</a>';
}else{
echo 'false';
} }

0x02.帳號Account

4A中帳號分爲主帳號和從帳號,一個用戶只會有一個主帳號,惟一標識了他的身份。這個主帳號還會有N個從帳號,對不一樣的系統會有不一樣的從帳號,方便用戶訪問其能夠訪問的系統。以下圖

enter image description here

2.1 重置用戶密碼

WooYun: 帕拉迪堡壘機任意用戶密碼重置

在這個bug中,能夠經過修改密碼的功能,重置其餘用戶的密碼。典型的帳號管理問題。

2.2 token

token在4A中可謂是處處都是,那麼若是token驗證不嚴謹,極可能出現戲劇性的結果。接下來這個漏洞給你們展現token失效的時候。

enter image description here

這個頁面不是經過4A登陸過來的,而是直接訪問網站的登陸界面,登陸後的頁面。

enter image description here

上面的圖是經過4A登陸後,訪問系統時,將URL和username修改成管理員的頁面和用戶名,而後能夠看到,頁面顯示的就是管理員的頁面了。

0x03.受權Authorization

受權通常分爲:

1.基於用戶的受權UBAC

2.基於用戶角色的受權RBAC

3.基於資源的受權ABAC

存在的問題有:

3.1 調用cmd

4A權限分配中有個很重要的功能就是基於資源的受權,好比給主帳號A分配一個securecrt,讓其可使用SSH,給主帳號B分配一個notepad,讓其可使用記事本。可是你們都知道經過瀏覽器、記事本等「查找文件」的功能能夠調出cmd等功能。

以下圖,是經過分配的IE瀏覽器,直接調用出cmd窗口,接下來,你想幹什麼,都OK。

enter image description here

3.2 越權問題

無可厚非,越權問題在如今的程序中,幾乎都存在,這個問題,並無獲得太大的重視。

public function payfor() {
    $subaction = $this­>ev­>url(3); 
    switch($subaction)
    {
        case 'remove':
        $oid = $this­>ev­>get('ordersn');
        $order = $this­>order­>getOrderById($oid); 
        if($order['orderstatus'] == 1)
        {
            $this­>order­>delOrder($oid); 
            $message = array(
                'statusCode' => 200,
                "message" => "訂單信息成功", "callbackType" => 'forward', "forwardUrl" => "reload"
            ); 
        }
    }
}

看上面代碼,代碼獲取到ordersn後,直接執行了刪除的動做,而代碼自己並無使用RBAC之類的權限管理,致使存在越權問題。這種屬於水平越權,還有一種垂直越權,這裏不列舉了。

3.3 下載文件

一樣是我的文件夾(或者其餘提供下載的地方)的問題,能夠下載指定的文件,可是沒有對文件作限制,能夠下載任意文件。

public function download(){
    $filename = $_SERVER[DOCUMENT_ROOT].__ROOT__.'/Public/'.(C('UPLOAD_DIR')?C('UPLOAD_DIR'):'Upload').'/download/'.$_GET['filename']; header("Content­type: application/octet­stream");
    header("Content­Length: ".filesize($filename));
    header("Content­Disposition: attachment; filename={$_GET['filename']}");
    $fp = fopen($filename, 'rb');
    fpassthru($fp);
    fclose($fp);
}

從代碼中能夠看到,經過獲取filename等參數,而後直接就下載文件了。。

3.4 前置機

一些堡壘機具備前置機,意思是某些在堡壘機中實現不了的功能(好比內置pcanywhere,只是好比),那麼就須要把pcanywhere放到前置機中,當須要使用pcanywhere時,就會遠程登陸到前置機上,調用pcanywhere的頁面。

問題是什麼呢,既然是遠程登陸調用pcanywhere的頁面,那麼咱們只要使用windows鍵或者使用alt+tab就能夠切換到其餘程序上,進而就控制了前置機。

3.5 奇葩問題

WooYun: AuditSec運維操做審計-堡壘機密碼的利用

你們能夠看看這個密鑰問題。。

0x04.審計Audit

審計主要是對登陸、訪問等全部的動做記錄日誌,查看是否有不合規的事件。

4.1 僞造登陸IP

WooYun: 帕拉迪/華爲/江南天安堡壘機僞造WEB登陸來源IP漏洞

在這個bug中經過x-forwarded-for僞造了登陸的IP,這就對日誌形成了影響,若是之後須要整理日誌,或者根據日誌找出不合規事件,那就會存在很大的影響。

0x05. 總結

以上只是列舉了我在測試4A或堡壘機時遇到過的問題,確定還有許多猥瑣的方式我沒有觀察到,歡迎你們補充。 元旦在家碼字不容易。

相關文章
相關標籤/搜索