URL: https://www.overclockers.at/linux/shell_mit_sudo_per_php_ausfuehren_186832/page_2 - zur Vollversion wechseln!
Fuehr mal folgendes PHP-Skript auf deinem Webserver aus bitte:
Code:<?php passthru("id"); ?>
ein "set" bist du uns auch noch schuldig
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 ?
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"; ?>
k, werde dann beides nachreichen!
btw: php tags @vB gibts auch? mist, nicht gesehn
soda, sorry dass es letzendlich so lang gedauert hat, kann nichts dafür und mich ärgerts sowieso am meisten.
@colo:
Zitatuid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)
Zitatid
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-commentsosix 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
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
hmm, der befehl hat nichts bewirkt
hab in die visudo bereits
reinghaut, hat auch nichts gebrachtCode:www-data ALL=(ALL) NOPASSWD: ALL
*sigh* Was gibt
jetzt aus? Was gibt es nach einem Neustart von Apache aus?Code:<?php passthru("id"); ?>
ohne neustart
Code:uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)
und ich versuchs dann gleich nochmal, weil ohne neustart ich es eben noch nicht versucht hab!Code:uid=65534(nobody) gid=65534(nogroup) groups=20(dialout),65534(nogroup)
Code:www-data ALL=(ALL) NOPASSWD: ALL
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.
ich war zu feig dich das zu fragen, aber wenn dus schon anbietest got pm!
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>
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
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