呢個行動之所以叫 City-Forum,係因為駭客用嘅基礎設施連接到一個叫 city-forum.com 嘅 domain。呢個 domain 原本喺 2002 年註冊,之後被棄用,然後俾人攞返嚟用。由 2025 年 3 月開始,一部喺德國租用嘅 Contabo VPS server,就一直用緊同一個 IP 地址(158.220.87.79)嚟進行攻擊。
Salesforce 同 ServiceNow 呢啲平台本身就有 Guest User(訪客用戶) 嘅設計,用嚟俾未登入嘅訪客睇某啲公開內容。呢個訪客賬戶係冇得刪除嘅,佢哋睇到啲咩嘢,完全取決於管理員點樣設定佢哋嘅權限。如果個 Guest profile 有權限讀取某個紀錄,咁全世界任何一個人,都可以透過合法嘅 API 將啲資料拎走。
針對 Salesforce(Aura 框架):
/aura 或 /s/sfsites/aura 呢啲端點發送 POST 請求。HostConfigController.getConfigData 去列舉 Guest User 可以存取到嘅物件,例如 Account、Contact、Case、User、ContentDocument 等等。SelectableListDataProviderController.getItems 逐一讀取每個物件入面嘅所有紀錄。針對 Salesforce(LWR 框架 — Lightning Web Runtime):
POST /webruntime/api/services/data/{version}/graphql?asGuest=true,先用 EntityDefinition 拎取 schema,然後用 cursor 分頁嘅方式去讀紀錄。針對 ServiceNow:
/api/now/sp/search 呢個端點發送請求。呢個係 Service Portal 嘅原生搜尋 API,幾乎冇乜公開文件,亦都好少見有開源工具提到佢。自我註冊探測(Salesforce):
/SiteRegister 同 /CommunitiesSelfReg 去測試係咪開咗自我註冊功能。如果開咗,訪客就可以自己升級做已驗證嘅外部用戶,從而讀取更多數據。158.220.87.79,由德國 Contabo 托管,對應 domain city-forum.com。Go-http-client User-Agent,所以喺 log 入面好容易認得出。Reco 指出,主要目標包括:
對 ServiceNow 嚟講: 平台嘅交易紀錄(syslog_transaction)唔會記錄 /api/now/sp/search 請求嘅 POST body。管理員只係睇到有自動化搜尋發生過,同埋大約拎咗幾多數據(透過 output length column),但係 冇辦法知道 實際嘅搜尋字詞或者邊啲紀錄俾人拎走咗。
對 Salesforce 嚟講: Guest 嘅列舉流量其實係合法、符合協議嘅 API 請求,睇落同正常網站流量冇分別。即使 Event Monitoring 可以睇到來自 Guest User 嘅 AuraRequest 同 Sites 事件有幾多,但 log 只係記錄咗有人 request 數據,而 唔會記錄 GraphQL 或者 Aura 回應入面嘅具體內容係乜。
簡單嚟講,你可以知道有人嚟過、大約拎咗幾多嘢走,但係冇辦法重組返佢哋實際偷咗邊啲紀錄或者欄位。
sp_portal、m2m_sp_portal_search_source 同 sp_search_source 表格,解除唔需要嘅搜尋來源。is_scripted_source、data_fetch_script,同埋係用 GlideRecordSecure(會執行 ACL)定係普通 GlideRecord(唔會執行 ACL)。kb_uc_can_read_mtom 連結,而唔係盲目咁改 sharing rules。getItems 同 getConfigData 事件,而且 USER_TYPE = 'Guest';檢查 /webruntime/.../vNN.0/graphql 嘅版本掃描;留意對 /SiteRegister 同 /CommunitiesSelfReg 嘅存取。syslog_transaction: 留意以 Guest 身份發出嘅 /api/now/sp/search 請求。將結果按 output length 排序,如果某啲請求返嘅數據量明顯大過 baseline(空結果時嘅大小),就可能代表有內容俾人拎走咗。呢個行動之所以叫 City-Forum,係因為駭客用嘅基礎設施連接到一個叫 city-forum.com 嘅 domain。呢個 domain 原本喺 2002 年註冊,之後被棄用,然後俾人攞返嚟用。由 2025 年 3 月開始,一部喺德國租用嘅 Contabo VPS server,就一直用緊同一個 IP 地址(158.220.87.79)嚟進行攻擊。
Salesforce 同 ServiceNow 呢啲平台本身就有 Guest User(訪客用戶) 嘅設計,用嚟俾未登入嘅訪客睇某啲公開內容。呢個訪客賬戶係冇得刪除嘅,佢哋睇到啲咩嘢,完全取決於管理員點樣設定佢哋嘅權限。如果個 Guest profile 有權限讀取某個紀錄,咁全世界任何一個人,都可以透過合法嘅 API 將啲資料拎走。
針對 Salesforce(Aura 框架):
/aura 或 /s/sfsites/aura 呢啲端點發送 POST 請求。HostConfigController.getConfigData 去列舉 Guest User 可以存取到嘅物件,例如 Account、Contact、Case、User、ContentDocument 等等。SelectableListDataProviderController.getItems 逐一讀取每個物件入面嘅所有紀錄。針對 Salesforce(LWR 框架 — Lightning Web Runtime):
POST /webruntime/api/services/data/{version}/graphql?asGuest=true,先用 EntityDefinition 拎取 schema,然後用 cursor 分頁嘅方式去讀紀錄。針對 ServiceNow:
/api/now/sp/search 呢個端點發送請求。呢個係 Service Portal 嘅原生搜尋 API,幾乎冇乜公開文件,亦都好少見有開源工具提到佢。自我註冊探測(Salesforce):
/SiteRegister 同 /CommunitiesSelfReg 去測試係咪開咗自我註冊功能。如果開咗,訪客就可以自己升級做已驗證嘅外部用戶,從而讀取更多數據。158.220.87.79,由德國 Contabo 托管,對應 domain city-forum.com。Go-http-client User-Agent,所以喺 log 入面好容易認得出。Reco 指出,主要目標包括:
對 ServiceNow 嚟講: 平台嘅交易紀錄(syslog_transaction)唔會記錄 /api/now/sp/search 請求嘅 POST body。管理員只係睇到有自動化搜尋發生過,同埋大約拎咗幾多數據(透過 output length column),但係 冇辦法知道 實際嘅搜尋字詞或者邊啲紀錄俾人拎走咗。
對 Salesforce 嚟講: Guest 嘅列舉流量其實係合法、符合協議嘅 API 請求,睇落同正常網站流量冇分別。即使 Event Monitoring 可以睇到來自 Guest User 嘅 AuraRequest 同 Sites 事件有幾多,但 log 只係記錄咗有人 request 數據,而 唔會記錄 GraphQL 或者 Aura 回應入面嘅具體內容係乜。
簡單嚟講,你可以知道有人嚟過、大約拎咗幾多嘢走,但係冇辦法重組返佢哋實際偷咗邊啲紀錄或者欄位。
sp_portal、m2m_sp_portal_search_source 同 sp_search_source 表格,解除唔需要嘅搜尋來源。is_scripted_source、data_fetch_script,同埋係用 GlideRecordSecure(會執行 ACL)定係普通 GlideRecord(唔會執行 ACL)。kb_uc_can_read_mtom 連結,而唔係盲目咁改 sharing rules。getItems 同 getConfigData 事件,而且 USER_TYPE = 'Guest';檢查 /webruntime/.../vNN.0/graphql 嘅版本掃描;留意對 /SiteRegister 同 /CommunitiesSelfReg 嘅存取。syslog_transaction: 留意以 Guest 身份發出嘅 /api/now/sp/search 請求。將結果按 output length 排序,如果某啲請求返嘅數據量明顯大過 baseline(空結果時嘅大小),就可能代表有內容俾人拎走咗。