Guten Tag,

ich verwende aus historischen Gruenden schon lange auch SSI
auf "meinem" Server und bin gestern auf ein Problem gestossen,
das wahrscheinlich auf einer Fehlkonfiguration beruht, aber
ich habe auch nach langer Suche nicht gefunden, woran es liegt
(vielleicht auch falsch gesucht):

Hier das Problem:

Ich habe eine sehr einfache Datei test.shtml:

<html>
<body>
<pre>
<!--#exec cmd="ls -al ." -->
</pre>
</body>
</html>

Das funktioniert so auch einwandfrei - wenn ich die Datei
aufrufe, wird mir

drwxr-xr-x  2 apache apache 4096 Feb 13 14:46 .
drwxr-xr-x 19 apache apache 4096 Feb 13 14:46 ..
-rw-r--r--  1 apache apache  107 Feb 13 13:35 test.shtml

angezeigt.

Rufe ich dagegen z.B. test.shtml?/etc auf, wird auch der
Query-String /etc an den exec-Befehl uebergeben und das
Ergebnis schaut so aus:

.:
drwxr-xr-x  2 apache apache 4096 Feb 13 14:50 .
drwxr-xr-x 19 apache apache 4096 Feb 13 14:46 ..
-rw-r--r--  1 apache apache  107 Feb 13 14:50 test.shtml

/etc:
drwxr-xr-x 130 root root      12288 Feb  5 17:21 .
drwxr-xr-x  23 root root       4096 Feb  9 11:15 ..
drwxr-xr-x   3 root root       4096 Feb 21  2024 .java
-rw-r--r--   1 root root       4723 Mar 26  2018 Muttrc
usw.

Das ist natuerlich eine Sicherheitsluecke, die ich schliessen
moechte (bei einem cat-Befehl ist die Luecke noch gefaehrlicher,
?/tmp/meine_Datei.txt gibt dann z.B. /tmp/meine_Datei.txt aus!).

Ich kann das zwar verhindern, indem ich den exec-Befehl leicht
modifiziere:

<!--#exec cmd="ls -al .;" -->

Aber eigentlich moechte ich durch die Konfig des Apache-Servers
verhindern, dass der Query-String an den exec-Befehl uebergeben
wird.

Hat jemand eine Idee, was ich da falsch konfiguriert habe bzw.
wie das richtig konfiguriert werden kann?

Danke
Reinfried

Antwort per Email an