Web Application Analysis

Clairvoyance – Unmasking Hidden GraphQL Schemas

Clairvoyance is a game-changer for GraphQL API developers. This tool gets the GraphQL API schema from sites where introspection is turned off and displays it in a user-friendly JSON format.

Learn how to install it, how to use it in more advanced ways, and how to get help from a dedicated team of contributors. You’ll also find out how to help out and deal with possible problems.

Some GraphQL APIs have disabled introspection. For example, Apollo Server disables introspection automatically if the NODE_ENV environment variable is set to production.

Clairvoyance helps obtain the GraphQL API schema even if introspection is disabled. It produces schema in JSON format suitable for other tools like GraphQL VoyagerInQL or graphql-path-enum.

Contributors

Thanks to the contributors for their work,

Getting Started

pip

pip install clairvoyance
clairvoyance https://rickandmortyapi.com/graphql -o schema.json
# should take about 2 minutes

docker

docker run --rm nikitastupin/clairvoyance --help

Advanced Usage

Which wordlist should I use?

There are at least two approaches:

  • Use general English words (e.g., google-10000-english).
  • Create target-specific wordlist by extracting all valid GraphQL names from application HTTP traffic, from mobile application static files, etc. Regex for GraphQL’s name is [_A-Za-z][_0-9A-Za-z]*.

Environment variables

LOG_FMT=`%(asctime)s \t%(levelname)s\t| %(message)s` # A string format for logging.
LOG_DATEFMT=`%Y-%m-%d %H:%M:%S` # A string format for logging date.
LOG_LEVEL=`INFO` # A string level for logging.

Support

Due to time constraints @nikitastupin won’t be able to answer all the issues for some time but he’ll do his best to review & merge PRs

In the case of questions or issues with clairvoyance, please refer to the wiki or issues. If this doesn’t solve your problem, feel free to open a new issue.

Contributing

Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change. For more information about tests, internal project structure, and so on, refer to the Development Wiki page.

Documentation

You may find more details on how the tool works in the second half of the GraphQL APIs from bug hunter’s perspective by Nikita Stupin talk.

Tamil S

Tamil has a great interest in the fields of Cyber Security, OSINT, and CTF projects. Currently, he is deeply involved in researching and publishing various security tools with Kali Linux Tutorials, which is quite fascinating.

Recent Posts

Shadow-rs : Harnessing Rust’s Power For Kernel-Level Security Research

shadow-rs is a Windows kernel rootkit written in Rust, demonstrating advanced techniques for kernel manipulation…

2 weeks ago

ExecutePeFromPngViaLNK – Advanced Execution Of Embedded PE Files via PNG And LNK

Extract and execute a PE embedded within a PNG file using an LNK file. The…

3 weeks ago

Red Team Certification – A Comprehensive Guide To Advancing In Cybersecurity Operations

Embark on the journey of becoming a certified Red Team professional with our definitive guide.…

3 weeks ago

CVE-2024-5836 / CVE-2024-6778 : Chromium Sandbox Escape via Extension Exploits

This repository contains proof of concept exploits for CVE-2024-5836 and CVE-2024-6778, which are vulnerabilities within…

4 weeks ago

Rust BOFs – Unlocking New Potentials In Cobalt Strike

This took me like 4 days (+2 days for an update), but I got it…

4 weeks ago

MaLDAPtive – Pioneering LDAP SearchFilter Parsing And Security Framework

MaLDAPtive is a framework for LDAP SearchFilter parsing, obfuscation, deobfuscation and detection. Its foundation is…

4 weeks ago