
2024年您產(chǎn)品必備的10大AI API推薦
POST
PUT
DELETE
unauthorized request
發(fā)現(xiàn) BFLA 的最簡(jiǎn)單方法是查找管理 API 文檔,并以測(cè)試管理功能和能力的非特權(quán)用戶身份發(fā)送請(qǐng)求。如果特權(quán)操作的 API 文檔不可用,則需要在測(cè)試用于執(zhí)行特權(quán)操作的終結(jié)點(diǎn)之前發(fā)現(xiàn)或?qū)ζ溥M(jìn)行反向工程。
當(dāng) API 使用者在其請(qǐng)求中包含比應(yīng)用程序預(yù)期更多的參數(shù),并且應(yīng)用程序?qū)⑦@些參數(shù)添加到代碼變量或內(nèi)部對(duì)象時(shí),就會(huì)發(fā)生批量分配?!拔矣X得這看起來(lái)像參數(shù)污染”
例如,應(yīng)用程序可能具有帳戶更新功能,用戶應(yīng)僅使用該功能來(lái)更新其用戶名、密碼和地址。如果使用者可以在與其帳戶相關(guān)的請(qǐng)求中包含其他參數(shù)(如帳戶權(quán)限級(jí)別或敏感信息(如帳戶余額),并且應(yīng)用程序接受這些參數(shù)而不根據(jù)允許操作的白名單檢查它們,則使用者可以利用此弱點(diǎn)來(lái)更改這些值。
// Imagine an API is called to create an account with parameters for "User" and "Password":{"User": "scuttleph1sh","Password": "GreatPassword123"}//While reading the API documentation regarding the account creation //process, suppose you discover that there is an additional key, "isAdmin", that //consumers can use to become administrators. You could use a tool like //Postman or Burp Suite to add the attribute to a request and set the value //to true:{"User": "scuttleph1sh","Password": "GreatPassword123","isAdmin": true}
您可以通過在 API 文檔中查找感興趣的參數(shù),然后將這些參數(shù)添加到請(qǐng)求中來(lái)發(fā)現(xiàn)批量分配漏洞。查找用戶帳戶屬性、關(guān)鍵功能和管理操作中涉及的參數(shù)。攔截 API 請(qǐng)求和響應(yīng)也可以揭示值得測(cè)試的參數(shù)。此外,您可以在 API 請(qǐng)求中猜測(cè)參數(shù)或模糊參數(shù)。
當(dāng) API 使用者在其請(qǐng)求中包含比應(yīng)用程序預(yù)期更多的參數(shù),并且應(yīng)用程序?qū)⑦@些參數(shù)添加到代碼變量或內(nèi)部對(duì)象時(shí),就會(huì)發(fā)生批量分配。“我覺得這看起來(lái)像參數(shù)污染”
例如,應(yīng)用程序可能具有帳戶更新功能,用戶應(yīng)僅使用該功能來(lái)更新其用戶名、密碼和地址。如果使用者可以在與其帳戶相關(guān)的請(qǐng)求中包含其他參數(shù)(如帳戶權(quán)限級(jí)別或敏感信息(如帳戶余額),并且應(yīng)用程序接受這些參數(shù)而不根據(jù)允許操作的白名單檢查它們,則使用者可以利用此弱點(diǎn)來(lái)更改這些值。
// Imagine an API is called to create an account with parameters for "User" and "Password":{"User": "scuttleph1sh","Password": "GreatPassword123"}//While reading the API documentation regarding the account creation //process, suppose you discover that there is an additional key, "isAdmin", that //consumers can use to become administrators. You could use a tool like //Postman or Burp Suite to add the attribute to a request and set the value //to true:{"User": "scuttleph1sh","Password": "GreatPassword123","isAdmin": true}
您可以通過在 API 文檔中查找感興趣的參數(shù),然后將這些參數(shù)添加到請(qǐng)求中來(lái)發(fā)現(xiàn)批量分配漏洞。查找用戶帳戶屬性、關(guān)鍵功能和管理操作中涉及的參數(shù)。攔截 API 請(qǐng)求和響應(yīng)也可以揭示值得測(cè)試的參數(shù)。此外,您可以在 API 請(qǐng)求中猜測(cè)參數(shù)或模糊參數(shù)。
安全配置錯(cuò)誤包括開發(fā)人員在 API 的支持安全配置中可能犯的所有錯(cuò)誤。例如,如果 API 的支持安全配置揭示了未修補(bǔ)的漏洞,則攻擊者有可能利用已發(fā)布的漏洞輕松“pwn”API 及其系統(tǒng)。
安全配置錯(cuò)誤實(shí)際上是一組弱點(diǎn),包括配置錯(cuò)誤的標(biāo)頭、配置錯(cuò)誤的傳輸加密、使用默認(rèn)帳戶、接受不必要的 HTTP 方法、缺乏輸入清理和詳細(xì)的錯(cuò)誤消息。
缺乏輸入清理可能允許攻擊者將惡意負(fù)載上傳到服務(wù)器。
例如,如果使用上傳端點(diǎn)將上傳的文件傳遞到 Web 目錄,則它可能允許上傳腳本。導(dǎo)航到文件所在的 URL 可以啟動(dòng)腳本, 導(dǎo)致對(duì) Web 服務(wù)器的直接外殼訪問。
API 提供程序使用標(biāo)頭為使用者提供處理響應(yīng)和安全要求的說明。配置錯(cuò)誤的標(biāo)頭可能導(dǎo)致敏感信息泄露、降級(jí)攻擊和跨站點(diǎn)腳本攻擊。
例如,采用以下響應(yīng):
HTTP/ 200 OK--snip--X-Powered-By: VulnService 1.11 // reveal backend tech => search exploitsX-XSS-Protection: 0 // could be changed to 1X-Response-Time: 566.43//If the X-Response-Time header has a consistent response time for nonexistent records, for example, but increases // its response time for certain other records, this could be an indication that those records exist.HTTP/UserA 404 Not Found--snip--X-Response-Time: 25.5HTTP/UserB 404 Not Found--snip--X-Response-Time: 25.5HTTP/UserC 404 Not Found--snip--X-Response-Time: 510.00
在這種情況下,UserC 的響應(yīng)時(shí)間值是其他資源的響應(yīng)時(shí)間的 20 倍。由于樣本量如此之小,很難明確地?cái)喽?UserC 存在。
例如,您知道像這樣的虛假帳戶的平均X響應(yīng)時(shí)間為ms。您還知道,您現(xiàn)有的帳戶 /user/account/1021 收到的 X 響應(yīng)時(shí)間為 。如果您隨后發(fā)送了請(qǐng)求,強(qiáng)制所有帳號(hào)從 到 ,您可以查看結(jié)果并查看哪些帳號(hào)導(dǎo)致響應(yīng)時(shí)間大幅增加。/user/account/thisdefinitelydoesnotexist87625.5510.0010002000
任何向使用者提供敏感信息的 API 都應(yīng)使用傳輸層安全性 (TLS) 來(lái)加密數(shù)據(jù)。即使 API 僅在內(nèi)部、私有或合作伙伴級(jí)別提供,使用 TLS(加密 HTTPS 流量的協(xié)議)也是確保 API 請(qǐng)求和響應(yīng)在通過網(wǎng)絡(luò)傳遞時(shí)受到保護(hù)的最基本方法之一。配置錯(cuò)誤或缺少傳輸加密可能會(huì)導(dǎo)致 API 用戶以明文形式跨網(wǎng)絡(luò)傳遞敏感的 API 信息。然后攻擊者可以使用MITM攻擊來(lái)利用它。
當(dāng)服務(wù)使用默認(rèn)帳戶和憑據(jù)并且默認(rèn)值已知時(shí),攻擊者可以使用這些憑據(jù)代入該帳戶的角色。這可能允許他們?cè)L問敏感信息或管理功能,可能導(dǎo)致 支持系統(tǒng)。
最后,如果 API 提供程序允許不必要的 HTTP 方法,則應(yīng)用程序無(wú)法正確處理這些方法或?qū)е旅舾行畔⑿孤兜娘L(fēng)險(xiǎn)會(huì)增加。
您可以使用 Web 應(yīng)用程序漏洞掃描程序(如 Nessus、Qualys、OWASP ZAP 和 Nikto)檢測(cè)其中的幾個(gè)安全錯(cuò)誤配置。這些掃描程序?qū)⒆詣?dòng)檢查 Web 服務(wù)器版本信息、標(biāo)頭、cookie、傳輸加密配置和參數(shù),以查看是否缺少預(yù)期的安全措施。如果您知道要查找的內(nèi)容,也可以通過檢查標(biāo)頭、SSL 證書、cookie 和參數(shù)來(lái)手動(dòng)檢查這些安全配置錯(cuò)誤。
當(dāng)請(qǐng)求傳遞到 API 的支持基礎(chǔ)結(jié)構(gòu)并且 API 提供程序不篩選輸入以刪除不需要的字符(此過程稱為輸入清理)時(shí),存在注入缺陷。詳細(xì)的錯(cuò)誤消息、HTTP 響應(yīng)代碼和意外的 API 行為都可能是您可能發(fā)現(xiàn)了注入缺陷的線索。
API 可能會(huì)將該有效負(fù)載直接傳遞到后端 SQL 數(shù)據(jù)庫(kù),其中 OR 1=0 語(yǔ)句將失?。ㄒ?yàn)?1 不等于 0),從而導(dǎo)致一些 SQL 錯(cuò)誤:
POST /api/v1/register HTTP 1.1Host: example.com--snip--{"Fname": "hAPI","Lname": "Hacker","Address": "' OR 1=0--",}
注入漏洞通常輔以其他漏洞,例如輸入清理不良。在以下示例中,您可以看到一種代碼注入攻擊,該攻擊使用 API GET 請(qǐng)求來(lái)利用弱查詢參數(shù)。在這種情況下,弱查詢參數(shù)將請(qǐng)求的查詢部分中的任何數(shù)據(jù)直接傳遞到底層系統(tǒng),而不先對(duì)其進(jìn)行清理:以下響應(yīng)正文顯示 API 端點(diǎn)已縱為顯示主機(jī)的 /etc/passwd 文件,從而顯示系統(tǒng)上的用戶:
GET http://10.10.78.181:5000/api/v1/resources/books?show=/etc/passwd
root:x:0:0:root:/root:/bin/bashdaemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologinbin:x:2:2:bin:/dev:/usr/sbin/nologinsync:x:4:65534:sync:/bin:/bin/syncgames:x:5:60:games:/usr/games:/usr/sbin/nologinman:x:6:12:man:/var/cache/man:/usr/sbin/nologinlp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologinmail:x:8:8:mail:/var/mail:/usr/sbin/nologinnews:x:9:9:news:/var/spool/news:/usr/sbin/nologin
查找注入缺陷需要認(rèn)真測(cè)試 API 端點(diǎn),注意 API 的響應(yīng)方式,然后精心制作嘗試操縱后端系統(tǒng)的請(qǐng)求。與目錄遍歷攻擊一樣,注入攻擊已經(jīng)存在了幾十年,因此有許多標(biāo)準(zhǔn)的安全控制措施來(lái)保護(hù) API 提供程序免受這些攻擊。
當(dāng)組織公開 API 時(shí),會(huì)發(fā)生不正確的資產(chǎn)管理 已停用或仍在開發(fā)中。仍在開發(fā)的 API 通常不如生產(chǎn) API 對(duì)應(yīng)項(xiàng)安全。
資產(chǎn)管理不當(dāng)會(huì)導(dǎo)致其他漏洞,例如數(shù)據(jù)過度暴露、信息泄露、批量分配、速率限制不當(dāng)和 API 注入等。
您可以通過密切關(guān)注倉(cāng)庫(kù)中過時(shí)的 API 文檔、更改日志和版本歷史記錄來(lái)發(fā)現(xiàn)不當(dāng)?shù)馁Y產(chǎn)管理。
組織通常在其終結(jié)點(diǎn)名稱中包含版本控制信息,以區(qū)分較舊版本和較新版本,例如 等。仍在開發(fā)中的 API 通常使用諸如 .如果您知道 API 現(xiàn)在正在使用 apiv3.org/admin 但 API 文檔的一部分提到了 apiv1.org/admin,則可以嘗試測(cè)試不同的端點(diǎn)以查看 apiv1 或 apiv2 是否仍處于活動(dòng)狀態(tài)。此外,組織的更新日志 可能會(huì)披露 v1 更新或停用的原因。如果您有權(quán)訪問 v1,則可以測(cè)試這些弱點(diǎn)/v1/, /v2/, /v3//alpha/, /beta/, /test/, /uat/, and /demo/
在使用文檔之外,您還可以通過使用猜測(cè)、模糊測(cè)試或暴力請(qǐng)求來(lái)發(fā)現(xiàn)不正確的資產(chǎn)管理漏洞。觀察 API 文檔或路徑命名方案中的模式,然后根據(jù)您的假設(shè)發(fā)出請(qǐng)求。
業(yè)務(wù)邏輯漏洞(也稱為業(yè)務(wù)邏輯缺陷或 BLF)是攻擊者可以惡意使用的應(yīng)用程序的預(yù)期功能。
例如,如果 API 具有不驗(yàn)證編碼有效負(fù)載的上傳功能,則只要任何文件已編碼,用戶就可以上傳該文件。這將允許最終用戶上傳和執(zhí)行任意代碼,包括惡意負(fù)載。在這些情況下,組織基本上依賴于 信任作為一種安全控制,期望消費(fèi)者采取仁慈的行為。不幸的是,即使是善良的 API 使用者也會(huì)犯錯(cuò)誤,從而導(dǎo)致應(yīng)用程序受損。
您可以在 API 文檔中搜索業(yè)務(wù)邏輯漏洞的跡象。像下面的陳述應(yīng)該照亮你頭頂?shù)臒襞荩?/p>
“僅使用功能 X 來(lái)執(zhí)行功能 Y?!?“不要對(duì)端點(diǎn) Y 執(zhí)行 X?!?“只有管理員才能執(zhí)行請(qǐng)求 X?!?/p>
當(dāng)您攻擊他們的 API 時(shí),請(qǐng)確保不服從此類請(qǐng)求以測(cè)試是否存在安全控制。
例如,請(qǐng)考慮用戶通常用來(lái)對(duì)其帳戶進(jìn)行身份驗(yàn)證的 Web 應(yīng)用程序身份驗(yàn)證門戶。假設(shè) Web 應(yīng)用程序發(fā)出了以下 API 請(qǐng)求:
POST /api/v1/login HTTP 1.1Host: example.com--snip--UserId=hapihacker&password=arealpassword!&MFA=true
我們有可能通過簡(jiǎn)單地將參數(shù)更改為 來(lái)繞過多因素身份驗(yàn)證。MFAfalse
測(cè)試業(yè)務(wù)邏輯缺陷可能具有挑戰(zhàn)性,因?yàn)槊總€(gè)業(yè)務(wù)都是獨(dú)一無(wú)二的。自動(dòng)掃描程序?qū)⒑茈y檢測(cè)到這些問題,因?yàn)檫@些缺陷是API預(yù)期用途的一部分。您必須了解業(yè)務(wù)和 API 的運(yùn)作方式,然后考慮如何利用這些功能來(lái)發(fā)揮自己的優(yōu)勢(shì)。以對(duì)抗的心態(tài)研究應(yīng)用程序的業(yè)務(wù)邏輯,并嘗試打破任何假設(shè) 。
熟悉這些漏洞非常重要,這樣您就可以輕松識(shí)別它們,在參與滲透測(cè)試期間利用它們,并將其報(bào)告給組織,以防止犯罪分子將您的客戶拖入頭條新聞?,F(xiàn)在您已經(jīng)熟悉了 Web 應(yīng)用程序、API 及其弱點(diǎn)。
文章轉(zhuǎn)自微信公眾號(hào)@深圳市網(wǎng)絡(luò)與信息安全行業(yè)協(xié)會(huì)
2024年您產(chǎn)品必備的10大AI API推薦
GraphRAG:基于PolarDB+通義千問api+LangChain的知識(shí)圖譜定制實(shí)踐
使用Node.js、Express和MySQL構(gòu)建REST API
天氣API推薦:精準(zhǔn)獲取氣象數(shù)據(jù)的首選
基于自定義數(shù)據(jù)集的微調(diào):Alpaca與LLaMA模型的訓(xùn)練
OAuth和OpenID Connect圖解指南
有哪些新聞媒體提供Open API?
現(xiàn)在做大模型,還有靠譜且免費(fèi)的API接口嗎?
如何運(yùn)用AI提高自己的工作效率?
對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力
一鍵對(duì)比試用API 限時(shí)免費(fèi)