Effectuer des tâches courantes avec l’API GraphQL – Systeme io

Effectuer des tâches courantes avec l’API GraphQL – Systeme io


ENTREPRISE

Cette page détaille certaines tâches courantes que vous pouvez effectuer à l’aide de l’API GraphQL de Burp Suite Enterprise Edition.

Ce document est destiné à compléter la référence de l’API, qui contient des informations de référence complètes sur l’API GraphQL et une brève introduction à GraphQL lui-même.

Noms de requête et de mutation

Vous devez spécifier un nom pour toutes les requêtes et mutations que vous utilisez dans l’API. Les noms de requête et de mutation doivent être spécifiés directement après le mot-clé de requête ou de mutation. Par example:

query <QueryNameHere> {
<query type> {
<query content>
}
}

Notez que, bien que toutes les requêtes et mutations doivent avoir un nom, ce nom peut être tout ce que vous choisissez. En tant que tels, les noms de requête et de mutation donnés dans ces exemples sont entièrement arbitraires.

Récupération d’une liste de scans

Cette scans la requête renvoie le id et status de tous les scans de la base de données. Dans cet exemple simplifié, l’API a renvoyé trois analyses réussies.

Demande

query GetScan {
scans {
id
status
}
}

Exemple de réponse

{
"data": {
"scans": (
{
"id": "21029",
"status": "succeeded"
},
{
"id": "21028",
"status": "succeeded"
},
{
"id": "21027",
"status": "succeeded"
}
)
}
}

Les scan L’objet contient de nombreux champs supplémentaires qui pourraient potentiellement être ajoutés à la requête. Vous pouvez également supprimer l’un ou l’autre de ces champs de la demande si nécessaire.

Pour une liste des champs supplémentaires que le scans requête peut renvoyer, consultez la page Analyser l’objet de la référence de l’API.

Récupération de l’analyse la plus récente d’un site

Cette scans la requête prend un site_id et renvoie les détails de l’analyse la plus récente qui a été exécutée pour ce site. Plus précisément, il génère une liste d’analyses triées par ordre décroissant de date de début, puis limite le nombre d’entrées dans cette liste à une.

En plus des informations de temps et d’état, la requête renvoie un new_issue_count champ détaillant le nombre de problèmes trouvés par cette analyse qui n’ont pas été trouvés par l’analyse précédente.

Dans cet exemple, nous pouvons voir que l’analyse la plus récente pour site_id 28 a réussi et n’a trouvé aucun nouveau problème.

Demande

query getScans {
scans(site_id: 28, limit: 1, sort_column: start, sort_order: desc) {
id,
status,
start_time,
end_time,
scan_delta {
new_issue_count
},
}
}

Exemple de réponse

{
"data": {
"scans": (
{
"id": "21110",
"status": "succeeded",
"start_time": "2021-11-08T14:35:12.190Z",
"end_time": "2021-11-08T15:04:09.013Z",
"scan_delta": {
"new_issue_count": 0
}
}
)
}
}

Les scan L’objet contient de nombreux champs supplémentaires qui pourraient potentiellement être ajoutés à la requête. Vous pouvez également supprimer la plupart de ces champs de la demande si nécessaire.

Pour une liste des champs supplémentaires que le scans requête peut renvoyer, consultez la page Analyser l’objet de la référence de l’API.

Récupération des détails de base pour une analyse spécifique

Cette scan la requête prend la id d’une analyse particulière et renvoie le nombre de problèmes à chaque niveau de gravité trouvés au cours de cette analyse, ainsi que l’état de l’analyse et le nom du site.

Dans cet exemple, nous pouvons voir que le scan 21029 ont trouvé cinq problèmes de gravité élevée, un problème de faible gravité et six problèmes d’information uniquement.

Demande

query GetScan {
scan (id: 21029) {
status
site_name
issue_counts {
high {
total
}
medium {
total
}
low {
total
}
info {
total
}
}
}
}

Exemple de réponse

{
"data": {
"scan": {
"status": "succeeded",
"site_name": "vulnerable-website",
"issue_counts": {
"high": {
"total": 5
},
"medium": {
"total": 0
},
"low": {
"total": 1
},
"info": {
"total": 6
}
}
}
}
}

Les scan L’objet contient de nombreux champs supplémentaires qui pourraient potentiellement être ajoutés à la requête. Vous pouvez également supprimer la plupart des champs spécifiés dans l’exemple de la demande si nécessaire.

Pour obtenir une liste des champs d’analyse valides, consultez la page Analyser l’objet de la référence API.

Récupération d’une liste de configurations d’analyse

Dans Burp Suite Enterprise Edition, un configuration de l’analyse définit divers paramètres qui déterminent le mode d’exécution d’une analyse, tels que la profondeur de lien maximale de l’analyse, les types de problèmes à signaler et la durée maximale d’exécution d’une analyse.

Cette scan_configurations la requête répertorie les id et name de toutes les configurations d’analyse que vous avez configurées dans Burp. Dans cet exemple simplifié, l’API a récupéré les détails de trois configurations d’analyse.

Demande

query GetScanConfigurations {
scan_configurations {
id
name
}
}

Exemple de réponse

{
"data": {
"scan_configurations": (
{
"id": "31556c28-38c9-415d-9a00-d3df51470a22",
"name": "Audit checks - all except JavaScript analysis"
},
{
"id": "d8018e42-0467-4b44-80a8-a159ec691ddf",
"name": "Audit checks - all except time-based detection methods"
},
{
"id": "542322ab-1984-45a2-810e-6d3410e1e01a",
"name": "Audit checks - light active"
}
)
}
}

Pour une liste des champs supplémentaires que le scan_configurations requête peut renvoyer (y compris le scan_configuration_fragment_json qui renvoie la configuration elle-même au format JSON), voir la page Analyser l’objet de configuration de la référence API.

Récupération des détails de base de l’arborescence du site

Dans Burp Suite Enterprise Edition, le arborescence du site est la structure hiérarchique contenant tous les sites et dossiers actuellement configurés.

Chaque site et dossier de l’arborescence possède un id et un parent_id. L’arborescence est définie à l’aide de ces deux champs. Par exemple, si un dossier contient un id de 1 alors tous les dossiers ou sites situés directement dans ce dossier auront un parent_id de 1.

Cette site_tree la requête renvoie le id, parent_idet name de tous les sites et dossiers de l’arborescence. Dans cet exemple, l’API a renvoyé quatre dossiers : 0 (racine), 1, 2et 3. 1 et 2 sont des dossiers de niveau supérieur (c’est-à-dire des enfants directs de la racine), et 3 est situé à l’intérieur 2. Il existe également quatre sites, un situé au niveau racine, deux situés dans le dossier 1et un situé dans le dossier 3.

Demande

query SitesAndFolderInfo {
site_tree {
sites {
id
parent_id
name
}
folders {
id
parent_id
name
}
}
}

Exemple de réponse

{
"data": {
"site_tree": {
"sites": (
{
"id": "81",
"parent_id": "0",
"name": "Global"
},
{
"id": "82",
"parent_id": "1",
"name": "Northern US"
},
{
"id": "38",
"parent_id": "1",
"name": "Southern US"
},
{
"id": "39",
"parent_id": "3",
"name": "UK"
}
),
"folders": (
{
"id": "0",
"parent_id": null,
"name": "All Sites"
},
{
"id": "1",
"parent_id": "0",
"name": "US Sites"
},
{
"id": "2",
"parent_id": "0",
"name": "Europe Sites"
},
{
"id": "3",
"parent_id": "2",
"name": "UK Sites"
}
)
}
}
}

Pour obtenir la liste des champs de site supplémentaires que le site_tree requête peut renvoyer, consultez la page Objet de l’arborescence du site de la référence de l’API.

Récupération des informations sur les problèmes d’analyse

Cette requête donne un aperçu des types de problèmes trouvés dans une analyse particulière. Plus précisément, il renvoie trois informations :

  • Les type_index de chaque type de problème très grave détecté lors de l’analyse. Notez que, si nécessaire, vous pouvez modifier ou supprimer le severities champ pour modifier la gravité des problèmes renvoyés.
  • Un décompte du nombre total de problèmes détectés lors de l’analyse
  • Plus de détails sur toutes les instances de problème qui ont un type_indexy compris une description et un numéro de série pour chaque instance individuelle du problème.

Cet exemple montre une demande d’informations sur le scan 21029avec plus de détails sur toutes les instances de problème qui ont un type_index de 3146256 (Interaction de service externe – HTTP). Dans ce cas, nous pouvons voir que trois types différents de problèmes de haute gravité ont été signalés. Sur les 12 instances de problème renvoyées au total, une était une instance d’Interaction de service externe – problème HTTP.

Recherche d’index de type

UN type_index est un identifiant pour un type particulier de problème (par opposition à une instance spécifique d’un problème). Vous pouvez rechercher des valeurs de type de problème sur la page des définitions de problème du centre de support de PortSwigger.

Veuillez noter que bien que nous fournissions des index de type aux formats hexadécimal et décimal à des fins de référence, l’API n’accepte que les formats décimaux. type_index valeurs.

Demande

query ScanInfo {
scan(id: 21029) {
issue_type_groups(severities: high) {
issue_type {
type_index
}
severity
}
issue_counts {
total
}
issues(start: 0, count: 44, type_index: "3146256") {
description_html
path
remediation_html
serial_number
}
}
}

Exemple de réponse

{
"data": {
"scan": {
"issue_type_groups": (
{
"issue_type": {
"type_index": "3146240"
},
"severity": "high"
},
{
"issue_type": {
"type_index": "3146256"
},
"severity": "high"
},
{
"issue_type": {
"type_index": "1051648"
},
"severity": "high"
}
),
"issue_counts": {
"total": 12
},
"issues": (
{
"description_html": "It is possible to induce the application to perform server-side HTTP requests to arbitrary domains.<br><br>The payload <b> was submitted in the <b>q</b> field.<br><br>The application performed an HTTP request to the specified domain.<br><br>Burp Infiltrator detected that input is being passed to a potentially unsafe API.",
"path": "/http-collaborator",
"remediation_html": null,
"serial_number": "6150599811840047104"
}
)
}
}
}

Les scan L’objet contient de nombreux champs supplémentaires qui pourraient potentiellement être ajoutés à la requête. Vous pouvez également supprimer la plupart des exemples de champs de la demande si nécessaire. Pour obtenir une liste des champs d’analyse valides, consultez la page Analyser l’objet de la référence API.

Récupération de tous les problèmes pour une analyse

Cette scan la requête renvoie le serial_number et le nom de la personne concernée issue_type pour toutes les instances de problème trouvées par une analyse particulière.

Dans cet exemple, nous pouvons voir que le scan 21029 trouvé 12 problèmes individuels, dont tous avaient un aspect différent issue_type.

Demande

query GetScan {
scan(id: 21029) {
issues(start: 0, count: 1000) {
issue_type {
name
}
serial_number
}
}
}

Exemple de réponse

{
"data": {
"scan": {
"issues": (
{
"issue_type": {
"name": "External service interaction (DNS)"
},
"serial_number": "432120106538718976"
},
{
"issue_type": {
"name": "External service interaction (HTTP)"
},
"serial_number": "6150595811840047104"
},
{
"issue_type": {
"name": "JavaScript injection (DOM-based)"
},
"serial_number": "4716073395305441280"
},
{
"issue_type": {
"name": "PHP code injection"
},
"serial_number": "540804386956503040"
},
{
"issue_type": {
"name": "SQL injection"
},
"serial_number": "17259916985675520"
},
{
"issue_type": {
"name": "Unencrypted communications"
},
"serial_number": "3974375729790973952"
},
{
"issue_type": {
"name": "HTML does not specify charset"
},
"serial_number": "4889966492298873856"
},
{
"issue_type": {
"name": "Credit card numbers disclosed"
},
"serial_number": "2403021217137964032"
},
{
"issue_type": {
"name": "Email addresses disclosed"
},
"serial_number": "5872016766220388352"
},
{
"issue_type": {
"name": "Input returned in response (stored)"
},
"serial_number": "4102206774889574400"
},
{
"issue_type": {
"name": "File path traversal"
},
"serial_number": "2466965706342529024"
},
{
"issue_type": {
"name": "Suspicious input transformation (stored)"
},
"serial_number": "3364917051419260928"
}
)
}
}
}

Les issue L’objet contient de nombreux champs supplémentaires qui pourraient potentiellement être ajoutés à la requête. Pour obtenir la liste des champs de problème valides, consultez la page Objet du problème de la référence de l’API.

Récupérer des informations détaillées sur un problème spécifique

Cette requête renvoie des informations détaillées sur une instance de problème spécifiée.

Cet exemple montre une demande d’informations sur une instance de problème avec le serial_number 6150599811840047104tel que trouvé par scan 21029. La réponse indique qu’il s’agit d’une instance d’un problème d’interaction de service externe – HTTP et fournit des informations détaillées sur les circonstances dans lesquelles le problème a été découvert.

Demande

query Issue {
issue(scan_id: 21029, serial_number: 6150599811840047104) {
issue_type {
type_index
name
description_html
remediation_html
vulnerability_classifications_html
references_html
}
confidence
display_confidence
serial_number
description_html
remediation_html
severity
path
origin
novelty
evidence {
... on Request {
request_index
request_count
request_segments {
... on DataSegment {
data_html
}
... on HighlightSegment {
highlight_html
}
... on SnipSegment {
snip_length
}
}
}
... on Response {
response_index
response_count
response_segments {
... on DataSegment {
data_html
}
... on HighlightSegment {
highlight_html
}
... on SnipSegment {
snip_length
}
}
}
... on HttpInteraction {
title
description_html
request {
... on DataSegment {
data_html
}
... on HighlightSegment {
highlight_html
}
... on SnipSegment {
snip_length
}
}
response {
... on DataSegment {
data_html
}
... on HighlightSegment {
highlight_html
}
... on SnipSegment {
snip_length
}
}
}
... on DescriptiveEvidence {
title
description_html
}
}
}
}

Exemple de réponse

{
"data":{
"issue":{
"issue_type":{
"type_index":"3146256",
"name":"External service interaction (HTTP)",
"description_html":"<p>External service interaction arises when it is possible to induce an application to interact with an arbitrary external service, such as a web or mail server. The ability to trigger arbitrary external service interactions does not constitute a vulnerability in its own right, and in some cases might even be the intended behavior of the application.\nHowever, in many cases, it can indicate a vulnerability with serious consequences.</p>\n<p>The ability to send requests to other systems can allow the vulnerable server to be used as an attack proxy.\n By submitting suitable payloads, an attacker can cause the application server to attack other systems that it can interact with. \n This may include public third-party systems, internal systems within the same organization, or services available on the local loopback adapter of the application server itself. \n Depending on the network architecture, this may expose highly vulnerable internal services that are not otherwise accessible to external attackers. </p>",
"remediation_html":"<p>You should review the purpose and intended use of the relevant application functionality, \n and determine whether the ability to trigger arbitrary external service interactions is intended behavior. \n If so, you should be aware of the types of attacks that can be performed via this behavior and take appropriate measures. \n These measures might include blocking network access from the application server to other internal systems, and hardening the application server itself to remove any services available on the local loopback adapter.</p>\n<p>If the ability to trigger arbitrary external service interactions is not intended behavior, then you should implement a whitelist of permitted services and hosts, and block any interactions that do not appear on this whitelist.</p>\n\n<p>Out-of-Band Application Security Testing (OAST) is highly effective at uncovering high-risk features, to the point where finding the root cause of an interaction can be quite challenging. To find the source of an external service interaction, try to identify whether it is triggered by specific application functionality, or occurs indiscriminately on all requests. If it occurs on all endpoints, a front-end CDN or application firewall may be responsible, or a back-end analytics system parsing server logs. In some cases, interactions may originate from third-party systems; for example, a HTTP request may trigger a poisoned email which passes through a link-scanner on its way to the recipient.</p>",
"vulnerability_classifications_html":"<ul>\n<li><a href=\" Server-Side Request Forgery (SSRF)</a></li>\n<li><a href=\" Insufficient Control of Network Message Volume (Network Amplification)</a></li>\n</ul>",
"references_html":"<ul>\n <li><a href=\" Collaborator</a></li>\n <li><a href=\" application security testing (OAST)</a></li>\n <li><a href=\" Research: Cracking the Lens</a></li>\n</ul>"
},
"confidence":"certain",
"display_confidence":null,
"serial_number":"6150599811840047104",
"description_html":"It is possible to induce the application to perform server-side HTTP requests to arbitrary domains.<br><br>The payload <b> was submitted in the <b>q</b> field.<br><br>The application performed an HTTP request to the specified domain.<br><br>Burp Infiltrator detected that input is being passed to a potentially unsafe API.",
"remediation_html":null,
"severity":"high",
"path":"/http-collaborator",
"origin":"
"novelty":"regression",
"evidence":(
{
"request_index":0,
"request_count":2,
"request_segments":(
{
"data_html":"GET /http-collaborator?q="
},
{
"highlight_html":"http%3a%2f%2f929xszo277xq82vclxu5rykbr2xvlmca2ytlj98.burpcollaborator.net%2f%3ffoo"
},
{
"data_html":" HTTP/1.1\r\nHost: vulnerable-website.com\r\nAccept-Encoding: gzip, deflate\r\nAccept: */*\r\nAccept-Language: en-US,en-GB;q=0.9,en;q=0.8\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36\r\nConnection: close\r\nCache-Control: max-age=0\r\nReferer:
}
)
},
{
"response_index":0,
"response_count":2,
"response_segments":(
{
"data_html":"HTTP/1.1 200 OK\r\nDate: Wed, 03 Nov 2021 13:48:49 GMT\r\nContent-Type: text/html; charset=UTF-8\r\nContent-Length: 94\r\nConnection: close\r\nX-frame-options: DENY\r\n\r\n<html><h1>HTTP Collaborator Evidence</h1><body><a href='?q=foo'>collaborator</a></body></html>"
}
)
},
{
"request_index":1,
"request_count":2,
"request_segments":(
{
"data_html":"GET /http-collaborator?q="
},
{
"highlight_html":"http%3a%2f%2fvkjjal6optfcqody3jcr9k2x9ofh38uwkkb71vq.burpcollaborator.net%2f%3ffoo"
},
{
"data_html":" HTTP/1.1\r\nHost: vulnerable-website.com\r\nAccept-Encoding: gzip, deflate\r\nAccept: */*\r\nAccept-Language: en-US,en-GB;q=0.9,en;q=0.8\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36\r\nConnection: close\r\nCache-Control: max-age=0\r\nReferer:
}
)
},
{
"response_index":1,
"response_count":2,
"response_segments":(
{
"data_html":"HTTP/1.1 200 OK\r\nDate: Wed, 03 Nov 2021 13:48:50 GMT\r\nContent-Type: text/html; charset=UTF-8\r\nContent-Length: 94\r\nConnection: close\r\nX-frame-options: DENY\r\n\r\n<html><h1>HTTP Collaborator Evidence</h1><body><a href='?q=foo'>collaborator</a></body></html>"
}
)
},
{
"title":"Collaborator HTTP interaction",
"description_html":"<div>\n<p>\nThe Collaborator server received an HTTP request.<br><br> The request was received from IP address 52.211.196.189 at 2021-Nov-03 13:48:49 UTC.\n</p>\n</div>",
"request":(
{
"data_html":"GET /?foo HTTP/1.1\r\nUser-Agent: Java/1.8.0_212\r\nHost: "
},
{
"highlight_html":"929xszo277xq82vclxu5rykbr2xvlmca2ytlj98.burpcollaborator.net"
},
{
"data_html":"\r\nAccept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2\r\nConnection: keep-alive\r\n\r\n"
}
),
"response":(
{
"data_html":"HTTP/1.1 200 OK\r\nServer: Burp Collaborator 4\r\nContent-Type: text/html\r\nContent-Length: 62\r\n\r\n<html><body>giuovbxib34f2id10pll5zzjlgjjgigjfigz</body></html>"
}
)
},
{
"title":"Unsafe API call",
"description_html":"<div class=\"unsafe-api-call-description\">\n<p>Burp Infiltrator detected that input is being passed to the following API:</p>\n<pre class=\"code\">java.net.URLConnection java.net.URL.openConnection() throws java.io.IOException</pre>\n\n<p>\nThe following value was passed to the object's constructor:\n</p>\n\n<pre class=\"code\"> call stack when the API was invoked was:</p>\n<pre class=\"code\">net.portswigger.VulnerableServer$HttpCollaborator.getResponse(VulnerableServer.java:428)\nnet.portswigger.VulnerableServer$AbstractHttpHandler.handle(VulnerableServer.java:175)\ncom.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:79)\nsun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:83)\ncom.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:82)\nsun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:675)\ncom.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:79)\nsun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:647)\njava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\njava.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\njava.lang.Thread.run(Thread.java:748)\n</pre>\n</div>"
}
)
}
}
}

Vous pouvez supprimer la plupart des champs de cet exemple pour filtrer les informations renvoyées si nécessaire. Pour plus d’informations sur la structure du issue objet, consultez la page Objet du problème de la référence de l’API.

Cette scan_report La requête renvoie un rapport de correction d’analyse pour une analyse spécifiée. Le rapport Scan Remediation est une page Web contenant une ventilation des problèmes qui ont été renvoyés par l’analyse, y compris le contexte, les conseils de résolution et l’emplacement où le problème a été trouvé.

Cet exemple montre une demande pour obtenir le rapport d’analyse pour l’analyse 21029, avec tous les faux positifs renvoyés par cette analyse omis. Notez que cet exemple omet le contenu HTML du rapport lui-même pour des raisons d’espace.

Demande

query GetScanReport {
scan_report(scan_id: 21029, include_false_positives: false) {
report_html
}
}

Exemple de réponse

{
"data": {
"scan_report": {
"report_html": "<html></html>"
}
}
}

Les scan_report La requête comporte plusieurs champs supplémentaires que vous pouvez utiliser pour filtrer les informations incluses dans l’analyse. Pour une liste complète de ces champs, consultez la page Requêtes de la référence API.

Déséchappement du rapport HTML

Le code HTML renvoyé par le scan_report la requête est échappée JSON. Les caractères d’échappement sont nécessaires pour transférer le rapport en toute sécurité.

En tant que tel, vous devrez effectuer un traitement sur le code HTML afin de le visualiser en tant que page Web. Faire cela:

  1. Extrayez le contenu HTML de la réponse de l’API en copiant tout entre les deux <html> balises et en les collant dans un fichier texte.
  2. JSON-unscape le HTML. Il existe divers outils en ligne que vous pouvez utiliser à cette fin.
  3. Enregistrez le code HTML sans échappement dans un fichier .html.
  4. Ouvrez le fichier .html dans un navigateur Web pour afficher le rapport.

Récupération d’un site spécifique à partir du rapport

Les scan_report query n’offre pas de moyen direct d’extraire un site spécifique du rapport.

Comme solution de contournement pour extraire un site spécifique, envisagez d’exécuter la requête en tant que requête curl et de filtrer les informations à l’aide d’un analyseur JSON.

curl --request POST \
--url <ENTERPRISE-SERVER-URL>/graphql/v1 \
--header 'authorization: <API-KEY>' \
--header 'content-type: application/json' \
--data "{"query":"query Sites {\n site_tree {\n sites {\n id\n name\n scope {\n
included_urls\n }\n }\n }\n }","operationName":"Sites"}' | jq '.data.site_tree.sites() | select
(.name == "vulnerable-website")'
{
"id":"2",
"name":"vulnerable-website",
"scope":{
"included urls":(
"vulnerable-website.com/"
)
}
}

Créer un site

Les create_site mutation crée un nouveau site dans l’arborescence du site de Burp Suite Enterprise Edition. Cet exemple montre une demande réussie de création d’un nouveau site. La réponse de l’API contient la confirmation des détails du site qui ont été fournis dans la demande.

Demande

mutation CreateSite {
create_site(input: {name: "Test892", parent_id: 1, application_logins: {login_credentials: (), recorded_logins: ()} , scope: {included_urls: "www.vulnerable-website.com"}, email_recipients: ({email: "carlos@vulnerable-website.com"}, {email: "peter@vulnerable-website.com"})}) {
site {
id
parent_id
scope {
included_urls
}
application_logins {
login_credentials {
id
label
username
}
recorded_logins {
id
label
}
}
email_recipients {
email
}
}
}
}

Exemple de réponse

{
"data":{
"create_site":{
"site":{
"id":"89",
"parent_id":"1",
"scope":{
"included_urls":(
"wwww.vulnerable-website.com"
)
},
"application_logins":{
"login_credentials":(

),
"recorded_logins":(

)
},
"email_recipients":(
{
"email":"carlos@vulnerable-website.com"
},
{
"email":"peter@vulnerable-website.com"
}
)
}
}
}
}

Les champs utilisables lors de la création d’un nouveau site sont définis par le CreateSiteInput chose. Pour plus d’informations sur les champs disponibles lors de la création d’un nouveau site, consultez la page Créer un objet d’entrée de site de la référence API.

Note

Dans cet exemple, nous avons ajouté deux adresses en tant que destinataires d’e-mails. Ces adresses recevront automatiquement un rapport d’analyse chaque fois qu’une analyse se termine pour le site.

Votre serveur SMTP doit être configuré pour que Burp Suite Enterprise Edition puisse envoyer des notifications par e-mail. Pour plus d’informations sur la configuration de votre serveur SMTP, voir Configuration de votre serveur SMTP.

Planification d’une nouvelle analyse

Cette create_schedule_item mutation vous permet de programmer une analyse pour un site particulier.

L’exemple montre une demande de planification d’une analyse pour site_id 2.

Demande

mutation CreateScheduleItem {
create_schedule_item(input: {site_id: "2"}) {
schedule_item {
id
schedule {
rrule
initial_run_time
}
scheduled_run_time
}
}
}

Exemple de réponse

{
"data":{
"create_schedule_item":{
"schedule_item":{
"id":"21042",
"schedule":{
"rrule":null,
"initial_run_time":"2021-11-04T11:07:25.664Z"
},
"scheduled_run_time":null
}
}
}
}

Si nécessaire, vous pouvez spécifier les informations de planification et de configuration dans le create_schedule_item mutation. Pour plus d’informations sur les champs acceptés par create_schedule_itemconsultez la page Créer une mutation d’élément de planification de la référence API.

Déplacer un site vers un nouveau dossier

Les move_site mutation déplace un site donné vers un emplacement différent dans la hiérarchie de l’arborescence du site. Plus précisément, il vous permet de spécifier un nouveau parent_id pour le site spécifié.

Cet exemple montre une demande de déplacement d’un site avec un id de 89 au dossier racine (c’est-à-dire le dossier avec un id de 0).

Demande

mutation MoveSitetoSpecFolder {
move_site(input: {site_id: 89, parent_id: 0}) {
site {
id
name
parent_id
scope {
included_urls
}
scan_configurations {
id
}
}
}
}

Exemple de réponse

{
"data":{
"move_site":{
"site":{
"id":"89",
"name":"Test892",
"parent_id":"0",
"scope":{
"included_urls":(
"www.vulnerable-website.com"
)
},
"scan_configurations":(

)
}
}
}
}

Les move_site mutation peut renvoyer divers autres champs de site si nécessaire. Pour obtenir la liste de ces champs, consultez la page Site Object de la référence API.

Laisser un commentaire