首頁  >  文章  >  運維  >  Burpsuit結合SQLMapAPI產生的批次注入外掛程式是怎麼樣的

Burpsuit結合SQLMapAPI產生的批次注入外掛程式是怎麼樣的

WBOY
WBOY轉載
2023-05-12 19:19:041301瀏覽

1.1變動:

增加過濾設定

#最佳化顯示結果

增加執行提示訊息

增加網域正規符合 

整個外掛程式分為三個面板:任務面板、sqlmapapi參數配置面板、過濾條件面板。

任務面板

Burpsuit結合SQLMapAPI產生的批次注入外掛程式是怎麼樣的

Server : SQLmapapi服務的IP和連接埠

THREAD:同時偵測的任務數量

# Domain:需要偵測的域名,支援正規符合

CLEAN:清除任務快取清單

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

START:開啟偵測   

左下為任務清單和任務狀態,右側按鈕下方是資訊提示區域,下方為請求詳情和掃描結果。

sqlmapapi參數配置面板

Burpsuit結合SQLMapAPI產生的批次注入外掛程式是怎麼樣的

這裡的設定參考sqlmap的參數設定。

Tamper:清單中的是sqlmap自帶的tamper,輸入框中可填入自訂的tamper使用 」,「逗號分割 。

LogFile:設定掃描日誌記錄文件,該文文件儲存路徑為sqlmapapi伺服器上的路徑。

過濾條件面板

Burpsuit結合SQLMapAPI產生的批次注入外掛程式是怎麼樣的

ExcludeSuffix:用來排除一些指定後綴的請求,使用正規則進行比對。例如:圖片、css、js等。

IngoreCase:對ExcludeSuffix進行限制是否區分大小寫,預設為不區分。

IngoreParams:在對請求進行重複性偵測時需要忽略的參數,使用」,「逗號分割,例如:請求中的隨機數timeStamp等。

ExcludeParams:在對請求進行篩選時如果存在該參數則不將該請求加入待測列表,例如:驗證碼checkCode等。

以上是根據這段時間在實際使用的過程中所做的一些修改,後續還會根據大家的建議進一步對該插件進行優化,謝謝大家的支持。

以下是程式中的一些程式碼以及實作想法:

請求監聽段實作程式碼

public void processHttpMessage(int toolFlag, boolean messageIsRequest, IHttpRequestResponse messageInfo) {
        boolean addFlag = false;// 是否添加到扫描列表
        // 判断是否为request请求、开关是否打开
        if (messageIsRequest && sqlmapApiPanel.isStart()) {
            String host = helpers.analyzeRequest(messageInfo).getUrl().getHost();
            if (host.matches(targetDomian)) {
                IRequestInfo iRequestInfo = helpers.analyzeRequest(messageInfo);
                // 从?号处截断URL 可区分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()) {
                    // 构造任务实体
                    TaskEntity entity = new TaskEntity(iRequestInfo.getUrl(), //
                            iRequestInfo.getMethod(), //
                            callbacks.saveBuffersToTempFiles(messageInfo), //
                            iRequestInfo);
                    // 进行数据去重检测
                    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;
                    }
                    // 检测当前数据包是否重复,检测当前数据包是否要根据参数可选过滤
                    else if (!repeatCheck.containsKey(hash) && !entity.hasParams(excludeParams)) {
                        // repeatCheck
                        if (!entity.getParamBody().isEmpty()) {// 检测post参数是否为空
                            addFlag = true;
                        } else if (!entity.getParamUrl().isEmpty()) {// 检测get参数是否为空
                            addFlag = true;
                        } else if (sqlmapApiOption.getLevel() >= 3 && !entity.getParamCookie().isEmpty()) {// level参数大于3是应检测cookie注入
                            addFlag = true;
                        }
                    }
                    if (addFlag) {
                        int row = listTasks.size();
                        repeatCheck.put(hash, repeatCheckValue);
                        listTasks.add(entity);
                        fireTableRowsInserted(row, listTasks.size());
                    }
                }
            }
        }
    }

任務執行段實作程式碼:

public void run() {
                while (true) {
                    if (!threadFlag) {
                        try {
                            sqlmapApiPanel.setMessage("Waiting.");
                            sleep(3 * 1000);
                        } catch (InterruptedException e) {
                            stderr.print(e.getMessage());
                        }
                        continue;
                    }
                    // 增加任务
                    if (runingTasks.size()  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());
                        }
                    }
                }
            }

以上是Burpsuit結合SQLMapAPI產生的批次注入外掛程式是怎麼樣的的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除