溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Burpsuit結(jié)合SQLMapAPI產(chǎn)生的批量注入插件是怎樣的

發(fā)布時間:2022-01-18 14:54:16 來源:億速云 閱讀:264 作者:柒染 欄目:網(wǎng)絡(luò)管理

這篇文章給大家介紹Burpsuit結(jié)合SQLMapAPI產(chǎn)生的批量注入插件是怎樣的,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

1.1變動:

增加過濾設(shè)置

優(yōu)化顯示結(jié)果

增加運(yùn)行提示信息

增加域名正則匹配 

整個插件分為三個面板:任務(wù)面板、sqlmapapi參數(shù)配置面板、過濾條件面板。

任務(wù)面板

Burpsuit結(jié)合SQLMapAPI產(chǎn)生的批量注入插件是怎樣的

Server : SQLmapapi服務(wù)的IP和端口

THREAD:同時檢測的任務(wù)數(shù)量

Domain:需要檢測的域名,支持正則匹配

CLEAN:清除任務(wù)緩存列表

TEST:測試SQLmapapi的連接是否成功

START:開啟檢測    

左下為任務(wù)列表和任務(wù)狀態(tài),右側(cè)按鈕下方是信息提示區(qū)域,下方為請求詳情和掃描結(jié)果。

sqlmapapi參數(shù)配置面板

Burpsuit結(jié)合SQLMapAPI產(chǎn)生的批量注入插件是怎樣的

這里的設(shè)置參考sqlmap的參數(shù)設(shè)置。

Tamper:列表中的是sqlmap自帶的tamper,輸入框中可填入自定義的tamper使用 ”,“逗號分割 。

LogFile:設(shè)置掃描日志記錄文件,該文文件存儲路徑為sqlmapapi服務(wù)器上的路徑。

過濾條件面板

Burpsuit結(jié)合SQLMapAPI產(chǎn)生的批量注入插件是怎樣的

ExcludeSuffix:用來排除一些指定后綴的請求,使用正則進(jìn)行匹配。例如:圖片、css、js等。

IngoreCase:對ExcludeSuffix進(jìn)行限制是否區(qū)分大小寫,默認(rèn)為不區(qū)分。

IngoreParams:在對請求進(jìn)行重復(fù)性檢測時需要忽略的參數(shù),使用”,“逗號分割,例如:請求中的隨機(jī)數(shù)timeStamp等。

ExcludeParams:在對請求進(jìn)行過濾時如果存在該參數(shù)則不將該請求加入待測列表,例如:驗(yàn)證碼checkCode等。

以上是根據(jù)這段時間在實(shí)際使用的過程中所做的一些修改,后續(xù)還會根據(jù)大家的建議進(jìn)一步對該插件進(jìn)行優(yōu)化,謝謝大家的支持。

以下是程序中的一些代碼以及實(shí)現(xiàn)思路:

請求監(jiān)聽段實(shí)現(xiàn)代碼

public void processHttpMessage(int toolFlag, boolean messageIsRequest, IHttpRequestResponse messageInfo) {
        boolean addFlag = false;// 是否添加到掃描列表
        // 判斷是否為request請求、開關(guān)是否打開
        if (messageIsRequest && sqlmapApiPanel.isStart()) {
            String host = helpers.analyzeRequest(messageInfo).getUrl().getHost();
            if (host.matches(targetDomian)) {
                IRequestInfo iRequestInfo = helpers.analyzeRequest(messageInfo);
                // 從?號處截?cái)郩RL 可區(qū)分http 和 https
                String url = String.valueOf(iRequestInfo.getUrl());
                url = url.indexOf("?") > 0 ? url.substring(0, url.indexOf("?")) : url;
                // 排除指定后綴URL(eg : .jpg|.png|.ico)
                if (!excludeSuffix.matcher(url).matches()) {
                    // 構(gòu)造任務(wù)實(shí)體
                    TaskEntity entity = new TaskEntity(iRequestInfo.getUrl(), //
                            iRequestInfo.getMethod(), //
                            callbacks.saveBuffersToTempFiles(messageInfo), //
                            iRequestInfo);
                    // 進(jìn)行數(shù)據(jù)去重檢測
                    String hash = bCrypt.hashpw(entity.getSignString(-1, ingoreParams), SALT);
                    Integer repeatCheckValue = 1;
                    if (String.valueOf(iRequestInfo.getHeaders()).indexOf("Chris-To-Sqlmap") != -1) {
                        if (repeatCheck.containsKey(hash)) {
                            repeatCheckValue = repeatCheck.get(hash) + 1;
                            hash = hash + repeatCheckValue;
                        }
                        addFlag = true;
                    }
                    // 檢測當(dāng)前數(shù)據(jù)包是否重復(fù),檢測當(dāng)前數(shù)據(jù)包是否要根據(jù)參數(shù)可選過濾
                    else if (!repeatCheck.containsKey(hash) && !entity.hasParams(excludeParams)) {
                        // repeatCheck
                        if (!entity.getParamBody().isEmpty()) {// 檢測post參數(shù)是否為空
                            addFlag = true;
                        } else if (!entity.getParamUrl().isEmpty()) {// 檢測get參數(shù)是否為空
                            addFlag = true;
                        } else if (sqlmapApiOption.getLevel() >= 3 && !entity.getParamCookie().isEmpty()) {// level參數(shù)大于3是應(yīng)檢測cookie注入
                            addFlag = true;
                        }
                    }
                    if (addFlag) {
                        int row = listTasks.size();
                        repeatCheck.put(hash, repeatCheckValue);
                        listTasks.add(entity);
                        fireTableRowsInserted(row, listTasks.size());
                    }
                }
            }
        }
    }

任務(wù)執(zhí)行段實(shí)現(xiàn)代碼:

public void run() {
                while (true) {
                    if (!threadFlag) {
                        try {
                            sqlmapApiPanel.setMessage("Waiting.");
                            sleep(3 * 1000);
                        } catch (InterruptedException e) {
                            stderr.print(e.getMessage());
                        }
                        continue;
                    }
                    // 增加任務(wù)
                    if (runingTasks.size() < THREAD_NUMBER && listTasks_start < listTasks.size()) {
                        while (runingTasks.size() < THREAD_NUMBER && listTasks_start < listTasks.size()) {
                            TaskEntity entityNew = listTasks.get(listTasks_start);
                            entityNew.setTaskid(sqlmapapi.tastNew(sqlmapapiServer));
                            if (entityNew.getTaskid() != "" && entityNew.getTaskid() != "-") {
                                entityNew.setTaskEngineid(sqlmapapi.taskStart(sqlmapapiServer, entityNew, sqlmapApiOption));
                                runingTasks.put(entityNew.getTaskid(), entityNew);
                                sqlmapApiPanel.setMessage("New task "+entityNew.getTaskid()+" , URL :"+String.valueOf(entityNew.getUrl())+"    .");
                                listTasks_start++;
                            } else {
                                try {
                                    sqlmapApiPanel.setMessage("New task failed! URL :"+String.valueOf(entityNew.getUrl())+"    .");
                                    sleep(3 * 1000);
                                } catch (InterruptedException e) {
                                    stderr.print(e.getMessage());
                                }
                                continue;
                            }
                        }
                    }
                    if (runingTasks.size() != 0) {
                        // 刷新map中任務(wù)的狀態(tài)
                        List<String> removeList = new ArrayList<>();
                        for (String key : runingTasks.keySet()) {
                            TaskEntity entityRuning = runingTasks.get(key);
                            String status = sqlmapapi.flushStatus(sqlmapapiServer, entityRuning);
                            sqlmapApiPanel.setMessage("Flash task [" + key + "] " + status + " .");
                            if ("terminated".equals(status)) {
                                entityRuning.setTaskStatus(status);
                                entityRuning.setTaskScanData(sqlmapapi.flushScanData(sqlmapapiServer, entityRuning));
                                sqlmapApiPanel.setMessage("Task [" + key + "] finished .");
                                removeList.add(key);
                            } else if ("not running".equals(status)) {
                                stderr.println(entityRuning.getTaskid() + " not running");
                                // entityRuning.setTaskEngineid(taskStart(entityRuning));
                            } else {
                                entityRuning.setTaskStatus(status);
                            }
                            try {
                                sleep(3 * 1000);
                            } catch (InterruptedException e) {
                                stderr.print(e.getMessage());
                            }
                        }
                        if (!removeList.isEmpty()) {
                            for (String key : removeList) {
                                runingTasks.remove(key);
                            }
                        }
                        fireTableRowsInserted(0, listTasks.size());
                    } else {
                        try {
                            sleep(3 * 1000);
                        } catch (InterruptedException e) {
                            stderr.print(e.getMessage());
                        }
                    }
                }
            }

關(guān)于Burpsuit結(jié)合SQLMapAPI產(chǎn)生的批量注入插件是怎樣的就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI