html調(diào)用chatGPT 某”基于ChatGPT“開源項目引發(fā)的交互接口getshell
0X00 前情提要
前段時間火爆一時,隨著-3.5到4的發(fā)布,誕生出了很多基于API密鑰調(diào)用服務的第三方開源項目。但是不安全的問題也隨之出現(xiàn),使用者怎么保護好自己的API密鑰不被惡意攻擊者獲取,變得尤為重要。
上月某日html調(diào)用chatGPT,網(wǎng)上出現(xiàn)了一款開源的第三方項目來調(diào)用服務() ,其中某論壇放出了具有后臺管理功能的二開源碼,于是下載了源代碼,在相關文件中發(fā)現(xiàn)后臺未嚴格過濾用戶輸入的字符,可導致API接口密鑰泄露和獲取權(quán)限。
0x01 代碼分析
先看下作者原版的代碼,是沒有.php這個文件的,而二開版本中也就是通過這個文件實現(xiàn)了所謂的后臺管理功能。
下圖是二開版本的源碼
打開.php文件,可以看到進行后臺操作,需要通過標頭的形式進行后臺用戶登錄驗證的,同時源代碼中還寫了后臺的登錄用戶名和密碼。
訪問 ,并且登錄成功html調(diào)用chatGPT,只有更新API Key和更新代理兩個功能。但是不論是該源碼的原始版本還是這個二開版本,都是不需要數(shù)據(jù)庫就可以直接運行的,所以它既然能更新Key不排除是寫入到了本地文件中再進行調(diào)用的。
通過查看其它文件,印證了前面的推斷。每次通過后臺更新的Key被覆蓋寫入了.php文件里的$變量中了。
再來看下.php文件中關于更新KEY這部分的代碼,標簽中name屬性定義的值為,再使用預定義的$變量拿到標簽傳進來的值,也就是用戶輸入的Key,使用函數(shù)正則匹配.php文件中原Key值的位置并替換為新key的值html調(diào)用chatGPT,整個更新key的過程沒有發(fā)現(xiàn)有對人機接口做字符過濾或長度限制。
0x02 獲取思路
a.使用echo函數(shù)打印.php中的變量獲取API Key。
b.使用注釋法令其部分php代碼部分無法正常解析,插入新的PHP代碼從而獲取API Key。
0x03 Key密鑰獲取
');echo $OPENAI_API_KEY;/*
此時我們?nèi)ピL問下存放API密鑰的.php這個文件,已成功回顯sk-開頭的密鑰了。
下圖為沒插入構(gòu)造語句時,訪問.php文件返回的頁面
');?>/*
0x04 寫入思路
既然能通過調(diào)用變量獲取API密鑰,那么寫馬進去是不是也能執(zhí)行呢?嘗試了下顯然沒有達到預期效果,相關函數(shù)會執(zhí)行,但到瀏覽器前端不解析了,直接加載出了html代碼,分析下原因應該是PHP文件中出現(xiàn)了多個
免責聲明:本文系轉(zhuǎn)載,版權(quán)歸原作者所有;旨在傳遞信息,不代表本站的觀點和立場和對其真實性負責。如需轉(zhuǎn)載,請聯(lián)系原作者。如果來源標注有誤或侵犯了您的合法權(quán)益或者其他問題不想在本站發(fā)布,來信即刪。
聲明:本站所有文章資源內(nèi)容,如無特殊說明或標注,均為采集網(wǎng)絡資源。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系本站刪除。