開源資安工具 – 伺服器請求模糊測試 – SSRFmap

伺服器端請求偽造或SSRF是一個漏洞,攻擊者在其中迫使伺服器代其執行請求。

什麼是SSRF?

伺服器端請求偽造(Server-Side Request Forgery, SSRF)是一種網路安全漏洞,攻擊者可以利用此漏洞,誘使伺服器端應用程式向攻擊者指定的任意網域發出 HTTP 請求。

在典型的 SSRF 攻擊中,攻擊者可以讓伺服器連接到內部網路中的服務,這些服務通常只對內部開放。在其他情況下,攻擊者也可能強迫伺服器連接到外部系統,進而洩露敏感資訊,例如授權憑證。

簡而言之,SSRF 是 Web 應用程式中的一種漏洞,攻擊者可利用此漏洞透過伺服器發出額外的 HTTP 請求,進而與位於伺服器內部網路、通常受到防火牆保護的內部服務進行溝通。

怎麼產生漏洞?

造成漏洞的主要原因是(通常是)盲目地信任用戶的輸入。對於SSRF 漏洞,將要求用戶輸入URL(或IP地址)。Web應用程序將使用它來發出 請求。如果未正確檢查或過濾輸入,就會出現SSRF。

from flask import Flask, request,  render_template, redirect
import requests

app = Flask(__name__)

@app.route("/")
def index():
    url = request.args.get("id")
    r = requests.head(url)
    return render_template("index.html", result = r.content)

if __name__ == "__main__":
      app.run(host = '0.0.0.0')

很明顯地說,我把用戶傳來的網址儲存成id後,直接顯示在index.html,而且沒有對url做過濾,就有可能注入非正常連結的東西進去了~

工具利用

SSRFmap

SSRF通常用於利用對其他服務的操作,此框架旨在輕鬆查找和利用這些服務。SSRFmap將Burp請求文件作為輸入和fuzz的參數。

https://github.com/swisskyrepo/SSRFmap

操作步驟

$ git clone https://github.com/swisskyrepo/SSRFmap
$ cd SSRFmap/
$ pip3 install -r requirements.txt
$ python3 ssrfmap.py

  usage: ssrfmap.py [-h] [-r REQFILE] [-p PARAM] [-m MODULES] [-l HANDLER]
                    [-v [VERBOSE]] [--lhost LHOST] [--lport LPORT]
                    [--uagent USERAGENT] [--ssl [SSL]] [--level [LEVEL]]

  optional arguments:
    -h, --help          show this help message and exit
    -r REQFILE          SSRF Request file
    -p PARAM            SSRF Parameter to target
    -m MODULES          SSRF Modules to enable
    -l HANDLER          Start an handler for a reverse shell
    -v [VERBOSE]        Enable verbosity
    --lhost LHOST       LHOST reverse shell
    --lport LPORT       LPORT reverse shell
    --uagent USERAGENT  User Agent to use
    --ssl [SSL]         Use HTTPS without verification
    --level [LEVEL]     Level of test to perform (1-5, default: 1)

他有很多模組可以使用

NameDescription
fastcgiFastCGI RCE
redisRedis RCE
githubGithub Enterprise RCE < 2.8.7
zabbixZabbix RCE
mysqlMySQL Command execution
dockerDocker Infoleaks via API
smtpSMTP send mail
portscanScan top 8000 ports for the host
networkscanHTTP Ping sweep over the network
readfilesRead files such as /etc/passwd
alibabaRead files from the provider (e.g: meta-data, user-data)
awsRead files from the provider (e.g: meta-data, user-data)
gceRead files from the provider (e.g: meta-data, user-data)
digitaloceanRead files from the provider (e.g: meta-data, user-data)
socksproxySOCKS4 Proxy
smbhashForce an SMB authentication via a UNC Path
tomcatBruteforce attack against Tomcat Manager
customSend custom data to a listening service, e.g: netcat
memcacheStore data inside the memcache instance

練習網站

https://github.com/m6a-UdS/ssrf-lab

更詳細的說明資源:

https://ithelp.ithome.com.tw/articles/10242449

https://hackmd.io/@Lhaihai/H1B8PJ9hX

Back To Top
error: 內容被保護 !!