How does the rsync symlink exploit work?
Clash Royale CLAN TAG#URR8PPP
munge symlinks
[...]
The way rsync disables the use of symlinks is to prefix each one with the string "/rsyncd-munged/". This prevents the links from
being used as long as that directory does not exist. When this parameter is enabled, rsync will refuse to run if that path is a
directory or a symlink to a directory.
[...]
When this parameter is disabled on a writable module and "use chroot" is off (or the inside-chroot path is not "/"), incoming sym‐
links will be modified to drop a leading slash and to remove ".." path elements that rsync believes will allow a symlink to escape
the module’s hierarchy. There are tricky ways to work around this, though, so you had better trust your users if you choose this
combination of parameters.
When munge symlinks = no
, what is the tricky way to work around the protection described here? I.e to escape the module path, and read/write files outside of it?
EDIT: The vulnerability fixed by "munge symlinks" is CVE-2007-6199. "rsync before 3.0.0pre6, when running a writable rsync daemon that is not using chroot, allows remote attackers to access restricted files via unknown vectors that cause rsync to create a symlink that points outside of the module's hierarchy."
security rsync
add a comment |
munge symlinks
[...]
The way rsync disables the use of symlinks is to prefix each one with the string "/rsyncd-munged/". This prevents the links from
being used as long as that directory does not exist. When this parameter is enabled, rsync will refuse to run if that path is a
directory or a symlink to a directory.
[...]
When this parameter is disabled on a writable module and "use chroot" is off (or the inside-chroot path is not "/"), incoming sym‐
links will be modified to drop a leading slash and to remove ".." path elements that rsync believes will allow a symlink to escape
the module’s hierarchy. There are tricky ways to work around this, though, so you had better trust your users if you choose this
combination of parameters.
When munge symlinks = no
, what is the tricky way to work around the protection described here? I.e to escape the module path, and read/write files outside of it?
EDIT: The vulnerability fixed by "munge symlinks" is CVE-2007-6199. "rsync before 3.0.0pre6, when running a writable rsync daemon that is not using chroot, allows remote attackers to access restricted files via unknown vectors that cause rsync to create a symlink that points outside of the module's hierarchy."
security rsync
I haven't tested it, but I assume it would be possible to upload a symbolic link to e.g./etc/passwd
or some other arbitrary file on the system, and then getrsync
to retrieve that file.
– Kusalananda♦
Mar 5 at 20:05
@Kusalananda right. But rsync has a best-effort protection against it. "incoming sym‐ links will be modified to drop a leading slash and to remove ".." path elements that rsync believes will allow a symlink to escape the module’s hierarchy". So what's the specific trick to confuse rsync, so that it allows enough ".." to escape?
– sourcejedi
Mar 5 at 21:25
I see what you're getting at now. I misread the second paragraph.
– Kusalananda♦
Mar 5 at 21:33
add a comment |
munge symlinks
[...]
The way rsync disables the use of symlinks is to prefix each one with the string "/rsyncd-munged/". This prevents the links from
being used as long as that directory does not exist. When this parameter is enabled, rsync will refuse to run if that path is a
directory or a symlink to a directory.
[...]
When this parameter is disabled on a writable module and "use chroot" is off (or the inside-chroot path is not "/"), incoming sym‐
links will be modified to drop a leading slash and to remove ".." path elements that rsync believes will allow a symlink to escape
the module’s hierarchy. There are tricky ways to work around this, though, so you had better trust your users if you choose this
combination of parameters.
When munge symlinks = no
, what is the tricky way to work around the protection described here? I.e to escape the module path, and read/write files outside of it?
EDIT: The vulnerability fixed by "munge symlinks" is CVE-2007-6199. "rsync before 3.0.0pre6, when running a writable rsync daemon that is not using chroot, allows remote attackers to access restricted files via unknown vectors that cause rsync to create a symlink that points outside of the module's hierarchy."
security rsync
munge symlinks
[...]
The way rsync disables the use of symlinks is to prefix each one with the string "/rsyncd-munged/". This prevents the links from
being used as long as that directory does not exist. When this parameter is enabled, rsync will refuse to run if that path is a
directory or a symlink to a directory.
[...]
When this parameter is disabled on a writable module and "use chroot" is off (or the inside-chroot path is not "/"), incoming sym‐
links will be modified to drop a leading slash and to remove ".." path elements that rsync believes will allow a symlink to escape
the module’s hierarchy. There are tricky ways to work around this, though, so you had better trust your users if you choose this
combination of parameters.
When munge symlinks = no
, what is the tricky way to work around the protection described here? I.e to escape the module path, and read/write files outside of it?
EDIT: The vulnerability fixed by "munge symlinks" is CVE-2007-6199. "rsync before 3.0.0pre6, when running a writable rsync daemon that is not using chroot, allows remote attackers to access restricted files via unknown vectors that cause rsync to create a symlink that points outside of the module's hierarchy."
security rsync
security rsync
edited Mar 8 at 16:39
sourcejedi
asked Mar 5 at 19:42
sourcejedisourcejedi
25.6k445112
25.6k445112
I haven't tested it, but I assume it would be possible to upload a symbolic link to e.g./etc/passwd
or some other arbitrary file on the system, and then getrsync
to retrieve that file.
– Kusalananda♦
Mar 5 at 20:05
@Kusalananda right. But rsync has a best-effort protection against it. "incoming sym‐ links will be modified to drop a leading slash and to remove ".." path elements that rsync believes will allow a symlink to escape the module’s hierarchy". So what's the specific trick to confuse rsync, so that it allows enough ".." to escape?
– sourcejedi
Mar 5 at 21:25
I see what you're getting at now. I misread the second paragraph.
– Kusalananda♦
Mar 5 at 21:33
add a comment |
I haven't tested it, but I assume it would be possible to upload a symbolic link to e.g./etc/passwd
or some other arbitrary file on the system, and then getrsync
to retrieve that file.
– Kusalananda♦
Mar 5 at 20:05
@Kusalananda right. But rsync has a best-effort protection against it. "incoming sym‐ links will be modified to drop a leading slash and to remove ".." path elements that rsync believes will allow a symlink to escape the module’s hierarchy". So what's the specific trick to confuse rsync, so that it allows enough ".." to escape?
– sourcejedi
Mar 5 at 21:25
I see what you're getting at now. I misread the second paragraph.
– Kusalananda♦
Mar 5 at 21:33
I haven't tested it, but I assume it would be possible to upload a symbolic link to e.g.
/etc/passwd
or some other arbitrary file on the system, and then get rsync
to retrieve that file.– Kusalananda♦
Mar 5 at 20:05
I haven't tested it, but I assume it would be possible to upload a symbolic link to e.g.
/etc/passwd
or some other arbitrary file on the system, and then get rsync
to retrieve that file.– Kusalananda♦
Mar 5 at 20:05
@Kusalananda right. But rsync has a best-effort protection against it. "incoming sym‐ links will be modified to drop a leading slash and to remove ".." path elements that rsync believes will allow a symlink to escape the module’s hierarchy". So what's the specific trick to confuse rsync, so that it allows enough ".." to escape?
– sourcejedi
Mar 5 at 21:25
@Kusalananda right. But rsync has a best-effort protection against it. "incoming sym‐ links will be modified to drop a leading slash and to remove ".." path elements that rsync believes will allow a symlink to escape the module’s hierarchy". So what's the specific trick to confuse rsync, so that it allows enough ".." to escape?
– sourcejedi
Mar 5 at 21:25
I see what you're getting at now. I misread the second paragraph.
– Kusalananda♦
Mar 5 at 21:33
I see what you're getting at now. I misread the second paragraph.
– Kusalananda♦
Mar 5 at 21:33
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "106"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f504567%2fhow-does-the-rsync-symlink-exploit-work%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f504567%2fhow-does-the-rsync-symlink-exploit-work%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
I haven't tested it, but I assume it would be possible to upload a symbolic link to e.g.
/etc/passwd
or some other arbitrary file on the system, and then getrsync
to retrieve that file.– Kusalananda♦
Mar 5 at 20:05
@Kusalananda right. But rsync has a best-effort protection against it. "incoming sym‐ links will be modified to drop a leading slash and to remove ".." path elements that rsync believes will allow a symlink to escape the module’s hierarchy". So what's the specific trick to confuse rsync, so that it allows enough ".." to escape?
– sourcejedi
Mar 5 at 21:25
I see what you're getting at now. I misread the second paragraph.
– Kusalananda♦
Mar 5 at 21:33