Penetration Testing

Controlled testing that shows where an attacker could gain access and what they could reach. For teams launching, changing, or exposing new applications, APIs, or infrastructure.

You receive prioritised findings, attack paths, technical evidence, and remediation guidance.

Most damaging findings are failures of authorisation, not exotic exploits.

A request that the application accepts from the wrong user is worth more to an attacker than a rare memory-corruption bug. An authenticated account changing an identifier in an API request and receiving another customer's data is a complete break in the trust boundary between accounts — and it looks like ordinary traffic in the logs.

Weaknesses like this are rarely visible from the outside, and a scanner that confirms an endpoint responds cannot tell you whether it should have. Testing establishes whether a path is genuinely reachable, what it exposes, and what it would mean commercially — which is what turns a list of issues into a decision about what to fix first.

Four testing surfaces, scoped to your environment.

The areas below are representative of how each surface is approached. The exact systems, environments, and depth are agreed during scoping rather than assumed.

Web application penetration testing

Authenticated and unauthenticated testing of application behaviour, focused on the trust boundaries an attacker can actually cross.

  • Authentication
  • Authorization and access control
  • Session management
  • Business logic
  • Input validation

API security testing

Testing how endpoints enforce identity and ownership, including whether a valid session can reach another account’s data.

  • Object-level authorization
  • Authentication and token handling
  • Input validation
  • Endpoint behaviour and error handling

Infrastructure penetration testing

Testing exposed services and the routes between them, from initial access to what an attacker could reach afterwards.

  • Exposed network services
  • Configuration weaknesses
  • Privilege escalation
  • Lateral movement within agreed scope

Cloud penetration testing

Testing how identity, permissions, and configuration combine in a cloud environment to create reachable paths to sensitive resources.

  • Identity and permission boundaries
  • Service and resource configuration
  • Privilege escalation paths
  • Access to sensitive data stores

Scope and authorisation are agreed before any testing begins.

Testing runs against an agreed attack surface. Findings are documented with evidence, remediation guidance is prioritised for the engineers who will act on it, and retesting is carried out where the engagement includes it.

01

Discovery

We understand your environment, objectives, scope, and risk concerns.

02

Assessment

We test the agreed attack surface using a structured methodology.

03

Evidence

We validate findings and determine practical exploitability and impact.

04

Reporting

You receive technical findings and an executive-level summary.

05

Remediation

We provide prioritised, implementable remediation guidance.

06

Retest

Where included, we validate that identified issues have been addressed.

Explore our approach

What you receive.

PENETRATION TESTING

Engagement artifacts

  • Executive summary
  • Technical findings
  • Severity ratings
  • Proof of exploitation
  • Attack-path analysis
  • Remediation guidance
  • Retest / validation

Retesting verifies whether previously identified findings have been remediated. It is performed when included in the agreed engagement scope, and does not constitute a completely new penetration test. Testing beyond that scope is handled as a separate engagement.

What our output actually looks like.

A few examples of how we work, from documenting a finding, to tracing the attack path, to putting it into a clear report. No client work is shown.

Web application · exampleHigh

IDOR / Broken Object Level Authorization

Affected endpoint: /api/accounts/{id}/

Attack scenario: An authenticated user changes the numeric account identifier in an API request and retrieves another user's account data without authorisation.

GET /api/accounts/4821/profileHTTP/1.1 200 OK{ "account_id": 4821, "owner": "other-user" }

Business impact: Any authenticated user could enumerate and access other customers' account data — a reportable data exposure.

Remediation: Enforce server-side object-level authorization for every requested resource.

Attack pathEntry → impact
01External user
02Public application
03Authentication weakness
04API access
05Privilege escalation
06Sensitive resource

Weaknesses become meaningful when they combine. We report the sequence, not just the individual issue.

O&D / Assessment report Example
Findings04
High01
RetestOpen

Leadership gets a prioritised view of risk; engineering gets the path to the fix.

ScopeExternal web application
Top findingBroken Object Level Authorization
Affected asset/api/accounts/{id}/
RemediationServer-side object authorization

Responsible testing has limits, and they are agreed up front.

Knowing what is out of scope matters as much as knowing what is in it. These are the defaults; anything different is agreed explicitly before work starts.

Authorization comes first

Testing runs only against systems you have explicitly authorised, within a scope and rules of engagement agreed in writing beforehand.

Excluded by default

Physical security testing, social engineering, phishing, denial-of-service testing, and destructive testing are outside the default scope.

Third-party systems

Systems you do not own or control are out of scope unless the owner has authorised the work.

Production testing

Production environments can be tested where you explicitly authorise it and we agree safeguards and rules of engagement in advance.

Source-code-assisted testing

Testing can be informed by source code where that is specifically agreed as part of the engagement.

Scope is defined, not assumed

The exact systems, environments, and testing depth are set during scoping — this page describes the shape of the work, not a fixed checklist.

Tell us what you need tested.

Describe the application, API, infrastructure, or cloud environment you want assessed. We'll review the context and come back with a proposed scope and rules of engagement before any testing starts.