AWS Penetration Testing
Most AWS breaches are not exotic. They are an over-permissive IAM role, a public bucket, a metadata endpoint reachable from a compromised workload, or an application flaw in something running on EC2. Penetrify tests the half of the shared responsibility model that is actually yours.
In short
AWS penetration testing assesses the customer side of the shared responsibility model: IAM policies and escalation paths, exposed services, storage permissions, network reachability, and the applications you run. AWS permits customer-initiated testing of your own resources for common service types without prior approval; simulated denial of service and a short list of other activities still require authorisation.
What gets tested
Test scope, by attack surface
Identity and access management
- ▸Privilege escalation paths: iam:PassRole, policy-version manipulation, role chaining
- ▸Over-permissive policies, wildcard actions and resources, unused administrative access
- ▸Cross-account trust relationships that widen the blast radius further than intended
- ▸Long-lived access keys where a role or OIDC federation would do
- ▸Federated and SSO configuration, including permission set drift
Storage and data exposure
- ▸S3 buckets public by policy, ACL or a permissive CloudFront distribution in front
- ▸Presigned URL generation with excessive lifetimes or scope
- ▸Unencrypted volumes and snapshots, and snapshots shared more widely than intended
- ▸RDS instances reachable from the internet or from workloads that should not see them
- ▸Secrets in environment variables, user data, task definitions or Lambda configuration
Network and exposure
- ▸Security groups permitting 0.0.0.0/0 on management or database ports
- ▸Instance metadata service reachable from a compromised workload (IMDSv1 vs IMDSv2)
- ▸Load balancer and API Gateway configuration exposing internal services
- ▸VPC peering and transit routes that connect environments that should stay separate
- ▸Egress unrestricted, enabling exfiltration from a compromised instance
Serverless and containers
- ▸Lambda execution roles broader than the function needs
- ▸Function URLs and API Gateway routes without authorisation
- ▸Event-source injection: SQS, SNS, S3 events treated as trusted input
- ▸ECS and EKS task roles, and whether one task can assume another's identity
- ▸Secrets pulled at runtime and then logged
The applications you run
- ▸Authorisation across roles and tenants in whatever runs on the infrastructure
- ▸Injection, SSRF (which in AWS reaches the metadata endpoint), and deserialisation
- ▸Business logic in payment, entitlement and workflow paths
- ▸Multi-step chains: an application flaw, then a role, then data
Not in scope
Methodology
How the test runs, step by step
Confirm scope and authorisation
Identify the accounts, regions and services in scope, and confirm you own them. AWS permits customer-initiated testing of your own resources for common service types without prior approval, so most engagements need no ticket — but DoS-style activity does, and we exclude it entirely.
→ Scope, account list, authorisation recordEnumerate the surface
From outside: exposed services, DNS, storage, endpoints. From a read-only role if you grant one: accounts, identities, policies, network configuration. Both views matter, because what is reachable and what is permitted are different questions.
→ Asset, identity and exposure inventoryTest identity and configuration
Attempt real escalation rather than listing policy warnings: can this role reach that role, can this function read that secret, does any path end at administrative access. Configuration findings are reported with the specific policy statement responsible.
→ IAM and configuration findingsChain to impact
Combine what works into the path an attacker would take: an application flaw to SSRF, SSRF to the metadata endpoint, credentials to a role, role to data. A chain reported end to end changes how a finding gets prioritised.
→ Attack chains with data impactReport and retest
Findings with severity, evidence, the exact policy or setting to change, and remediation guidance. Retest after each fix at no extra cost, so tightening a trust policy is verified rather than assumed.
→ Report, evidence, retest on demandStraight answers
What buyers actually ask
Do we need permission from AWS to run a penetration test?
For standard testing of your own resources across the common service types, AWS permits customer-initiated penetration testing without prior approval, and has done for years. What still requires authorisation is a short list — simulated denial of service and similar disruptive activity — and there is a prohibited list worth reading before any engagement.
Practically: we do not perform DoS-style testing at all, so most Penetrify engagements need no ticket. What you do need is to be certain the accounts in scope are yours, which matters more in AWS than people expect once cross-account roles and shared services are involved.
What actually causes AWS breaches?
Rarely anything exotic. The recurring pattern is an application flaw that reaches the instance metadata service, credentials lifted from there, a role with more permissions than anyone remembers granting, and then data. Alongside that: storage made public by a policy nobody reviewed, and long-lived access keys in places they should not be.
Which is why testing IAM in isolation misses the point. The escalation only matters because something reachable let the attacker in, and the application flaw only matters because the role behind it was broad. Testing the chain is the difference between a list of warnings and knowing your blast radius.
Can you test without giving you access to our account?
Yes. External testing needs nothing: exposed services, applications and storage are assessed the way an attacker would, and that alone finds the classes that most often leak data.
Granting a read-only role adds the internal view — identities, policies, network configuration — which is where escalation paths become visible. It is read-only by design: nothing we do creates, modifies or deletes a resource. If you would rather not grant access at all, exported configuration works, with the caveat that a snapshot ages faster than a role.
How does this compare with Security Hub and GuardDuty?
They answer different questions and you should keep them. Config and Security Hub tell you whether your resources match rules; GuardDuty tells you when something suspicious is happening. Neither attempts an attack, so neither tells you whether a specific role can be escalated or whether your application can be used to reach it.
The useful division: native tools for continuous posture and detection, penetration testing for whether the posture actually holds. Teams that treat a green Security Hub as evidence of security are measuring compliance with rules, not resistance to attack.
Comparison
Four ways to get a web app tested
| AWS-native tools | CSPM platform | Consultancy engagement | Penetrify | |
|---|---|---|---|---|
| Misconfiguration detection | Yes (Config, Security Hub) | Yes, broad | Yes | Yes |
| IAM escalation attempted, not just flagged | No | Rarely | Yes | Yes |
| Application-layer testing | No | No | Yes | Yes |
| Chained attack paths | No | Partial | Yes | Yes |
| Frequency | Continuous | Continuous | 1-2x per year | Every deploy |
| Report an auditor accepts | Evidence, not a report | Platform report | Signed report | Report with reproduction and history |
| Typical cost | Included / usage-based | Platform pricing | Commonly $15,000-$50,000 | From $100/month |
Common findings
What these tests keep finding
Real teardowns of findings like these, with the request that proved them: read the case studies.
Deliverables
What you get
Findings report
Every finding with severity, the exact policy statement or resource setting responsible, reproduction, and the change that fixes it.
Escalation chains
The path from initial access to data, documented as a sequence rather than split across tickets that individually look minor.
Blast radius per identity
What each role and function can actually reach, which is the input to least-privilege work that would otherwise be guesswork.
Retest history
What closed, what regressed and when — evidence for auditors and enterprise security reviews.
Compliance
Frameworks that expect penetration testing
CC6.1: logical access controls, commonly evidenced with penetration testing of the cloud environment
A.12.6: technical vulnerability management including cloud configuration
Requirement 11.4.1: documented methodology, testing at least every 12 months and after significant change; segmentation testing where AWS hosts the cardholder data environment
45 CFR §164.308(a)(8): regular evaluation, including workloads processing ePHI
Security *in* the cloud is yours: IAM, configuration, data and applications. AWS covers security *of* the cloud.
FAQ
AWS Penetration Testing questions
Compare the options
Built for your industry
Tool alternatives
Get started
Test your web application today
No scoping call, no statement of work, no testing window to wait for. Add a URL and credentials, and the first findings land in minutes.