[Xymon] Remote Code execution
Christoph Zechner
zechner at vrvis.at
Thu Oct 14 09:01:25 CEST 2021
Hi,
On 13/10/2021 04:04, Jeremy Laidman wrote:
> I think the "remote code execution" mentioned in the two references are
> two very different things: remotely configuring commands to run on the
> client, in the context of collecting data, versus remotely sending
> arbitrary pre-compiled code over the Internet to execute on the Xymon
> server, by leveraging the ability to overflow a memory buffer. Calling
> them both "remote code execution" is confabulating two different things.
That's on me, I was just trying to summarise different approaches in a
non-precise way, sorry.
>
> The discussion about running arbitrary "code" on a client machine -
> commands that are determined by a configuration file on the server - is
> a feature of Xymon. It's not a buffer overflow bug. While this makes
> some people (myself included) feel a bit uncomfortable, the risk of
> exploitation is considerably less than that of a classic "remote code
> execution vulnerability" such as described in the Packetstorm post.
>
> Here's a quick backgrounder, for those not familiar with this feature:
> The "arbitrary commands" are the use of backticks in pseudo-filenames in
> log:, file: or dir: entries in client-local.cfg. If I add an entry for a
> host along the lines of "log:/bin/ls -t /var/log/my-logfile-* | head -1"
> means that I can always look at the latest logfile, even though the
> filenames have a datestamp suffix that changes. However, if I add an
> entry like "log:`rm -rf />/dev/null 2>&1`" then I can attempt to do
> something nasty (as the xymon user on the client machine). If there were
> a compiler on the client machine, I could conceivably send actual code,
> have it compiled, and then run it; this might give me more flexibility
> in my abuse of the client machine (eg compile and run a
> remotely-accessible backdoor).
>
> This feature is on by default. There appear to be two ways to it off: 1)
> don't run the clients in central mode, and 2) add the "--noexec"
> parameter to logfetch (in LOGFETCHOPTIONS in the file xymonclient.cfg).
ad 1) clients are per default not running in central mode or did I
misunderstand you here?
ad 2) thanks, I did not know about this option and have rolled it out on
my clients now.
>
> (As an aside, I wonder if the same facility is available for Windows
> clients. Can anyone comment on this?)
>
> For me to abuse this facility, I'd need write access to a configuration
> file on the Xymon server. I can't remotely exploit this from an
> arbitrary location, only from on the Xymon server. I can't somehow get
> the client to connect to my rogue server, and give it a fake payload to
> execute with backticks around my evil commands. The payload has to be
> present on the Xymon server as configured on the Xymon client.
>
> To exploit this, I have to launch some sort of attack *from* the Xymon
> server, using an account with write access to the client-local.cfg file.
> This file wouldn't normally be writable by anyone except the xymon user
> and root. If Xymon was installed from a Terabithia package, this file is
> owned by root, so not even the xymon user could exploit this. There's no
> good reason for the xymon user to be able to write to this file, and it
> seems simple enough to change ownership of the file and ameliorate this
> risk. Certainly, if I could somehow get the xymond process (which
> accepts connections from anywhere) to write to an arbitrary file that is
> owned by the xymon user account, then this could be an attack vector on
> all machines that the Xymon server monitors via Xymon clients. But this
> does depend on an exploit on the Xymon server.
>
> The Packetstorm post contains several vulnerabilities (which are all
> closed from Xymon version 4.3.25) that included a "remote code
> execution" vulnerability, CVE-2016-2054, that uses a buffer overflow.
> This is a vulnerability in the xymond process, which runs as the xymon
> user. This vulnerability allows an attacker to run code as the xymon
> user only. The attack can be launched from anywhere that has
> connectivity to the Xymon server. Quite a bad exploit, but it's not a
> remote root exploit.
>
> I'm certainly less concerned about the ability to use backticks in a
> file on the Xymon server to run commands on Xymon clients as the xymon
> user, than I am about the ability for a remote attacker to run code on
> the Xymon server as the xymon user.
>
> Of course, the backtick facility allows the buffer overflow exploit
> against the Xymon server to be leveraged to send commands to my whole
> fleet of Xymon clients.
>
> So, in answer to Christoph's question: yes, remote commands can still be
> executed, under limited situations and context, but remote code
> execution is not possible since v4.3.25. My advice to anyone would be to
> implement Henrik's recommended mitigations in the Packetstorm post, and
> also add the "--noexec" parameter to logfetch. Those steps can then be
> reversed/adjusted where necessary, and after careful consideration of
> the risks and benefits, and alternatives.
Thank you very much for your time and effort, I highly appreciate it. It
seems to me that "--noexec" would be a good sane default for logfetch in
any way.
Cheers
Christoph
>
> Cheers
> Jeremy
>
> On Wed, 13 Oct 2021 at 04:10, John Thurston <john.thurston at alaska.gov
> <mailto:john.thurston at alaska.gov>> wrote:
>
>
> On 10/12/2021 6:11 AM, Christoph Zechner wrote:
> > after reading an old thread about remote code execution on here
> [1], I
> > wondered if something like this is still possible nowadays with
> xymon?
>
> Last time I looked, the Xymon client software permitted execution of
> arbitrary code supplied from the Xymon server. This default behavior
> could be changed by flipping a switch in the client's configuration (uh
> huh. Yeah, sure).
>
> I have never considered this to be a "feature".
>
> --
> Do things because you should, not just because you can.
>
> John Thurston 907-465-8591
> John.Thurston at alaska.gov <mailto:John.Thurston at alaska.gov>
> Department of Administration
> State of Alaska
> _______________________________________________
> Xymon mailing list
> Xymon at xymon.com <mailto:Xymon at xymon.com>
> http://lists.xymon.com/mailman/listinfo/xymon
> <http://lists.xymon.com/mailman/listinfo/xymon>
>
>
> _______________________________________________
> Xymon mailing list
> Xymon at xymon.com
> http://lists.xymon.com/mailman/listinfo/xymon
>
More information about the Xymon
mailing list