![Page 1: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/1.jpg)
Memcached-инъекции: они существуют и работаютИван Новиков (ONsec)
![Page 2: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/2.jpg)
Memcached BIO• Key-value in-memory database
• Very popular for session storagea and caching data/objects
• Supports by all popular platforms and frameworks
![Page 3: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/3.jpg)
Shodan stats
![Page 4: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/4.jpg)
Commands types
![Page 5: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/5.jpg)
How applications uses memcachedWhat data stored?
• Session storage: serialized data
• Caching data: strings, serialized data
• Commonly to store code (templates, others)
![Page 6: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/6.jpg)
How applications uses memcachedHow data stored?
• Keys typically contains prefixes (namespaces) “Object\Cache\Templates\”
• Key after prefix commonly depends on user’s data “…\login”
• Arbitrary key writing gain auth bypass by design
![Page 7: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/7.jpg)
Memcached wrappers
• Format protocol packet (input validation, length calculation, etc)
• Send/retrieve results (socket operations)
• Process data (cast to type, unserialize and others)
![Page 8: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/8.jpg)
Scope of research
![Page 9: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/9.jpg)
![Page 10: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/10.jpg)
![Page 11: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/11.jpg)
Injection types
![Page 12: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/12.jpg)
Memcached wrappers
• Missed validation of commands delimiters (0x0a, 0x0d) at keys
• Inject your command after application’s command
• No other restrictions (no role model on commands)
![Page 13: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/13.jpg)
Memcached wrappers
?key=1%0d%0a1%0d%0aset+injected+0+3600+10%0d%0a1234567890%0d%0a
![Page 14: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/14.jpg)
#1 Command injection
![Page 15: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/15.jpg)
#1 Who is vulnerable
![Page 16: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/16.jpg)
#2 State breaking
• Missed validation of command format (key name, attributes count)
• Send whole packet, doesn’t read first response to first line
• Data will be interpreted as new command
![Page 17: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/17.jpg)
#2 State breaking
?k=aaa…{251}&v=set+injected+0+3600+10%0a%0d1234567890
![Page 18: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/18.jpg)
#2 State breaking
![Page 19: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/19.jpg)
#2 State breaking
• Ruby example
• memcache gem 1.5.1 (https://rubygems.org/gems/memcache)
• This wrapper filtered 0x0a, 0x20, but not 0x00 and 0x0d
![Page 20: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/20.jpg)
#2 State breaking
• Ruby example
• memcache gem 1.5.1 (https://rubygems.org/gems/memcache)
![Page 21: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/21.jpg)
#2 State breaking
![Page 22: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/22.jpg)
#2 Who is vulnerable
![Page 23: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/23.jpg)
#3 Argument injection
• Missed validation of argument delimiters (only 0x20)
• Inject your argument to break length (argument shifting)
• Part of value field will be interpreted as new command
![Page 24: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/24.jpg)
#3 Argument injection
?k=1 0&v=1…{30}%0d%0aset+injected+0+3600+3%0a%0dINJ
![Page 25: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/25.jpg)
#3 Argument injection
![Page 26: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/26.jpg)
#3 Who is vulnerable
![Page 27: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/27.jpg)
Post exploitation
Right, we can execute arbitrary memcached commands!
For what?
• Write/rewrite/delete arbitrary keys
• Send retrieve commands, but it never been reader by driver
![Page 28: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/28.jpg)
Application level
Right, we can execute arbitrary memcached commands!
• To read data you need application-level driver
• Values deserialize + injection = CWE-502 (http://cwe.mitre.org/data/definitions/502.html)
![Page 29: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/29.jpg)
Deserialization
![Page 30: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/30.jpg)
![Page 31: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/31.jpg)
Stats
![Page 32: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/32.jpg)
StatsI’m a champion!
![Page 33: Memcached-инъекции - они существуют и работают, Иван Новиков (ONsec)](https://reader034.vdocument.in/reader034/viewer/2022052412/557ef43fd8b42ad17d8b4dd0/html5/thumbnails/33.jpg)
Thx!
@d0znpp
http://wallarm.com