2021-05-18 13:53:10 +00:00
|
|
|
id: magento-detect
|
|
|
|
|
|
|
|
info:
|
|
|
|
name: Magento Detect
|
|
|
|
author: TechbrunchFR
|
|
|
|
severity: info
|
|
|
|
description: Identify Magento
|
2021-08-19 14:25:01 +00:00
|
|
|
reference:
|
|
|
|
- https://devdocs.magento.com/guides/v2.4/graphql/
|
2022-06-15 19:57:31 +00:00
|
|
|
metadata:
|
|
|
|
verified: true
|
|
|
|
shodan-query: http.component:"Magento"
|
2021-05-18 13:53:10 +00:00
|
|
|
tags: magento
|
|
|
|
|
|
|
|
requests:
|
|
|
|
- method: GET
|
|
|
|
path:
|
|
|
|
- '{{BaseURL}}'
|
2021-05-19 01:11:04 +00:00
|
|
|
- '{{BaseURL}}/graphql?query=+{customerDownloadableProducts+{+items+{+date+download_url}}+}'
|
2021-05-18 17:29:14 +00:00
|
|
|
|
2021-05-18 13:57:50 +00:00
|
|
|
# There might be a better way to do that, the idea of this check is that Magento might be behind some kind of proxy when
|
2021-08-19 14:25:01 +00:00
|
|
|
# consumed by a SPA/PWA app, so we need a valid GraphQL query from Magento to check reference[1]
|
2021-05-18 17:29:14 +00:00
|
|
|
|
2021-05-19 00:22:07 +00:00
|
|
|
matchers-condition: or
|
2021-05-18 13:57:50 +00:00
|
|
|
matchers:
|
2021-05-18 17:29:14 +00:00
|
|
|
- type: dsl
|
|
|
|
dsl:
|
|
|
|
- 'contains(tolower(all_headers), "x-magento")'
|
|
|
|
- 'status_code == 200'
|
|
|
|
condition: and
|
|
|
|
|
|
|
|
- type: dsl
|
|
|
|
dsl:
|
2021-05-19 00:22:07 +00:00
|
|
|
- 'contains(body, "graphql-authorization")'
|
2021-05-18 17:29:14 +00:00
|
|
|
- 'contains(body, "The current customer")'
|
|
|
|
- 'status_code == 200'
|
2021-05-19 01:11:04 +00:00
|
|
|
condition: and
|