Shell mit sudo per PHP ausführen - Seite 2

Seite 2 von 3 - Forum: Linux and other OS auf overclockers.at

URL: https://www.overclockers.at/linux/shell_mit_sudo_per_php_ausfuehren_186832/page_2 - zur Vollversion wechseln!


COLOSSUS schrieb am 23.10.2007 um 16:16

Fuehr mal folgendes PHP-Skript auf deinem Webserver aus bitte:

Code:
<?php passthru("id"); ?>


mat schrieb am 23.10.2007 um 16:18

ein "set" bist du uns auch noch schuldig ;)


b_d schrieb am 23.10.2007 um 18:27

erstmal vielen dank für die bisherige hilfe (!), ich will nur kurz erwähnen, dass ich erst wieder ab morgen vlt. sogar erst übermorgen zugang zum server habe, bis die mir in der schule ne ip einrichten, dass ich auch von zuhause aus zugreifen und arbeiten kann.

werde dann berichten @colossus; und @mat: wo genau :p ?


mat schrieb am 23.10.2007 um 18:38

na in einem php-skript, wo sonst? :)

Code: PHP
<?php

$id = shell_exec("id");
$set = shell_exec("set");

echo "<h2>id</h2><br />$id<h2>set</h2><br />$set";

?>


b_d schrieb am 23.10.2007 um 18:42

k, werde dann beides nachreichen!

btw: php tags @vB gibts auch? mist, nicht gesehn :p:D


b_d schrieb am 01.11.2007 um 11:24

soda, sorry dass es letzendlich so lang gedauert hat, kann nichts dafür und mich ärgerts sowieso am meisten.

@colo:

Zitat
uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)

@mat:
Zitat
id

uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)

set

BASH=/bin/sh BASH_ARGC=() BASH_ARGV=() BASH_EXECUTION_STRING=set BASH_LINENO=() BASH_SOURCE=() BASH_VERSINFO=([0]="3" [1]="1" [2]="17" [3]="1" [4]="release" [5]="i486-pc-linux-gnu") BASH_VERSION='3.1.17(1)-release' CONSOLE=/dev/console DIRSTACK=() DPKG_ARCH=i386 EUID=65534 GROUPS=() HOME=/ HOSTNAME=daisyserver HOSTTYPE=i486 IFS=' ' INIT_VERSION=sysvinit-2.86 LD_LIBRARY_PATH=/opt/lampp/lib:/opt/lampp/lib: MACHTYPE=i486-pc-linux-gnu OPTERR=1 OPTIND=1 OSTYPE=linux-gnu PATH=/sbin:/bin:/usr/sbin:/usr/bin POSIXLY_CORRECT=y PPID=4874 PREVLEVEL=N PROGRESS_STATE=2 PS4='+ ' PWD=/opt/lampp/htdocs/sms/test ROOT=/dev/hdb1 RUNLEVEL=2 SHELL=/bin/sh SHELLOPTS=braceexpand:hashall:interactive-comments:posix SHLVL=6 TERM=linux UID=65534 VERBOSE=no _=/opt/lampp/bin/httpd break= init=/sbin/init previous=N quiet=y readonly=y resume=/dev/hdb5 rootmnt=/root runlevel=2


COLOSSUS schrieb am 01.11.2007 um 11:39

Mit XAMPP ist das natuerlich wieder was anderes; dein httpd laeuft unter dem Kontext von nobody. Ich nenhme mal an, dass es sich sowieso nicht um eine Produktivmaschine handelt.

->

Code:
sudo usermod -a -G dialout nobody


b_d schrieb am 06.11.2007 um 09:09

hmm, der befehl hat nichts bewirkt :(

hab in die visudo bereits

Code:
www-data ALL=(ALL) NOPASSWD: ALL
reinghaut, hat auch nichts gebracht :(

es muss doch möglich sein auch sudo befehle per php script auszuführen, nur wie :/


COLOSSUS schrieb am 06.11.2007 um 09:28

*sigh* Was gibt

Code:
<?php passthru("id"); ?>
jetzt aus? Was gibt es nach einem Neustart von Apache aus?


b_d schrieb am 06.11.2007 um 09:38

ohne neustart

Code:
uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup) 

mit neustart kann ich dir in 5 minuten sagen. bis dann :)

mit neustart

Code:
uid=65534(nobody) gid=65534(nogroup) groups=20(dialout),65534(nogroup)
und ich versuchs dann gleich nochmal, weil ohne neustart ich es eben noch nicht versucht hab!

geht nicht, passt das eh so in die visudo:
Code:
www-data ALL=(ALL) NOPASSWD: ALL


COLOSSUS schrieb am 06.11.2007 um 10:34

Ja, das passt, ist aber total verrueckt.

Wenn dein Device (/dev/ttyUSB0) immer noch die selben Permissions hat, und von der Guppe "dialout" gelesen und beschrieben werden kann, sollte das inzwischen auch ohne sudo passen.

Ehrlich gesagt bin ich den Thread langsam leid. Wenn du willst, schau ich mal per SSH auf den Server, und fixe dir das - dieses Maeusemelken ist einfach langatmig.


b_d schrieb am 06.11.2007 um 10:45

ich war zu feig dich das zu fragen, aber wenn dus schon anbietest :D got pm!


COLOSSUS schrieb am 06.11.2007 um 10:59

Die sudo-Regel wird auf den User "www-data" angewandt; dein Apache laeuft aber nach wie vor unter "nobody", weshalb `sudo` immer noch nach einem Passwort fragt. Allerdings auf stderr, was PHP deswegen nicht auffaengt und anzeigt. Da der User "nobody" aber auch schon in der Gruppe "dialout" Mitglied ist, hat er auf dein GSM-Terminal ohnehin Zugriff, und privlege elevation via `sudo` ist nicht mehr noetig

Code:
$ cat script.php
<html>

<?php
passthru("./test.sh");
?>

</html>

Code:
$ cat test.sh
#!/bin/bash
exec 2>&1
/usr/bin/scmxx --device /dev/ttyUSB0 --info

Code:
$ curl "http://somehost.invalid/script.php"
<html>

Using "ANSI_X3.4-1968" as system character set.
Accessing device /dev/ttyUSB0...done
OK, a modem device is present.
Phone related information:
Vendor:       SIEMENS
Model:        CX65
Revision:     50,"OFFICIAL","20050404T200959+0200","15:25:16", [...]
Battery:      95%
Charsets:     GSM, UCS2
Time:         Mon Nov  5 19:34:38 2007

[...]

</html>

Das wollten wir doch, oder?

PS: Credentials fuer deinen Server solltest du nie ueber unsichere Kanaele weitergeben. Die PM mit den Credentials war folglich keine so ueberragende Idee. Das fuer die Zukunft ;)


b_d schrieb am 06.11.2007 um 11:08

perfekt, danke :)

also kann ich die regel für www-data eigentlich löschen, oder?

und ich vertrau dir und auch dem oc.at staff, das sowas diskret behandelt wird ;D pm's sollte ja überhaupt net gelesen werden, zb ;)


COLOSSUS schrieb am 06.11.2007 um 11:15

Ja, die Regel kannst du kicken.

Dass der Staff bzw. ich nichts "Boeses" damit anstellen ist anzunehmen, aber es braucht sich nur jemand an einem der vielen Router zwischen mir hier und dem oc.at-Server einklinken und die unverschluesselte Verbindung abhorchen/mitschneiden, schon kaeme er theoretisch rein. Ist natuerlich ein bisschen absurd, aber es gibt ja gangbare und komfortable Alternativen, wie das Eintragen meines ssh2-Publickeys zur Authentifikation an deinem Server :)

Ich betreibe uebrigens auch ein GSM-Terminal hier zu Hause - eine empfehlenswerte Programmsuite im Umgang damit ist meiner Erfahrung nach "gammu".




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025