Files
sif/modules/recon/appsettings-exposure.yaml
T

57 lines
1.3 KiB
YAML

# Appsettings Exposure Detection Module
id: appsettings-exposure
info:
name: Appsettings Exposure
author: sif
severity: high
description: Detects an exposed ASP.NET Core appsettings.json that leaks connection strings
tags: [aspnet, dotnet, appsettings, connection-string, exposure, recon]
type: http
http:
method: GET
paths:
- "{{BaseURL}}/appsettings.json"
- "{{BaseURL}}/appsettings.Production.json"
- "{{BaseURL}}/appsettings.Development.json"
matchers:
- type: status
status:
- 200
- type: word
part: body
words:
- "\"ConnectionStrings\""
- type: word
part: body
condition: or
words:
- "Password="
- "password="
- "Pwd="
- "pwd="
- "AccountKey="
# a docs/schema page that quotes the same json keys as a code sample trips
# the two matchers above with no real appsettings.json present. suppress
# any response that opens like an html document; a real appsettings.json
# is a plain json object and carries no markup.
- type: regex
part: body
negative: true
regex:
- '(?i)<(!doctype|html|head|title|body)[ >]'
extractors:
- type: regex
name: connection_string
part: body
regex:
- '((?:Server|Data Source|Host)=[^"]+)'
group: 1