- Mitglied seit
- 24 Jan 2013
- Beiträge
- 14,210
- Punkte für Reaktionen
- 590
- Punkte
- 113
Das Problem ist folgendes:
Starte ich httpd (aus dem freetz-WebIf) als -u nobody:nobody (ugid=100.1000) hält es sensible Daten im Environment.
Zum Beispiel das gehashte Passwort vom freetz-WebIf.
(Vermutlich wird das Environment vom freetz-WebIf "stumpf" beim Start des Servers übergeben)
Ich hab mal das Passwort auf "online" gesetzt und poste mal die Ausgabe von ps und die Ausgabe eines CGIs des nobody:nobody Servers:
ps
-u nobody:nobody CGI gibt env aus:
/var/mod/root wurde übrigens vor dem Start auf nobody getauft mit:
Ohne einen Fix und/oder Verzeichnisschutz halte ich die Auslieferung der Dokumente/CGIs ins www für mehr als bedenklich.
Könnte es dafür eine Lösung geben?
[EDIT]
Start eingeloggt (root) und aus ash mit dem dazugehörigen Startscript (rc.addwebif) nicht aus dem freetz-WebIf sondern direkt aus dem Userverzeichnis (/var/mod/root) ist alles (soweit) in Ordnung:
-u nobody:nobody CGI gibt env aus:
Dann ist alles so wie es sein soll, aber noch nicht so toll.
(Tatsächlich wurde jetzt das env von root übergeben: USER=root LOGNAME=root)
Auch die aus dem env gebildeten Links funktionieren dann wieder:
CONFIG_ACCESSORY_URL
CONFIG_SERVICEPORTAL_URL
CONFIG_ONLINEHELP_URL
Was macht ein Linuxer, um das Environment so zu manipulieren wie er es haben will?
Dieses Thema ist mir echt wichtig
(Und sollte Allen, die auch über das freetz-WebIf Irgendetwas ins www freigeben, wichtig sein)
Zum Download: Entpackkommando: # tar -x -z -f addwebif.tgz # Ins WebIf laden: # ./rc.addwebif load
Die addwebif.cfg und rc.addwebif Variable SCRIPT_DIR='/var/mod/root' gelten als Beispiel,
und sollten entsprechend den Optionen des zu startenden Programmes angepasst werden.
(Die Beispielwebseiten setzen vollkonfigurierbaren httpd voraus: Own errorpages, reverse proxy, -u)
Die Beispielseiten für die MIME-TYPES *.xml *.svg und *.swf (siehe httpd.conf) hab ich rausgelassen damit es nicht so aufträgt.
Nicht vergessen in rc.addwebif SCRIPT_DIR='/var/mod/root' auf eure Örtlichkeit zu ändern!
Struktur des Archives (damit ihr nichts ausversehen überschreibt):
Starte ich httpd (aus dem freetz-WebIf) als -u nobody:nobody (ugid=100.1000) hält es sensible Daten im Environment.
Zum Beispiel das gehashte Passwort vom freetz-WebIf.
(Vermutlich wird das Environment vom freetz-WebIf "stumpf" beim Start des Servers übergeben)
Ich hab mal das Passwort auf "online" gesetzt und poste mal die Ausgabe von ps und die Ausgabe eines CGIs des nobody:nobody Servers:
ps
Code:
936 nobody 980 S {busybox} httpd -P /var/mod/root/addwebif.pid -p 0.0.0.0:83 -u nobody:nobody -h /var/mod/root -c /var/mod/root/httpd.conf
Code:
CONTENT_TYPE=application/x-www-form-urlencoded
GATEWAY_INTERFACE=CGI/1.1
MOD_EXTERNAL_YEAR_MAX=2099
MOD_MOUNTED_SUB=yes
REMOTE_USER=fritz
WEBIF=mww
ADDWEBIF_REALM=-r HTTP-Dienst
MOD_SHUTDOWN_IGNORE=
[COLOR="#FF0000"]MOD_HTTPD_PASSWD=$1$aqaWmopn$dZt7Sa/9oZIt3g4SpbVnc.[/COLOR]
REMOTE_ADDR=***.***.***.***
LD_LIBRARY_PATH=/mod/lib:/mod/usr/lib
QUERY_STRING=one=1&two=2&true=true&false=false
AUTH_TYPE=Basic
HTTP_USER_AGENT=Mozilla/5.0 (Windows NT 5.1; rv:19.0) Gecko/20100101 Firefox/19.0
REMOTE_PORT=2502
ADDWEBIF_ENABLED=no
ADDWEBIF_LOGF=/var/mod/root/addwebif.log
ADDWEBIF_HOME=-h /var/mod/root
ADDWEBIF_PARAS=-c /var/mod/root/httpd.conf
MOD_RESOLV_DNS=127.0.0.1
MOD_EXTERNAL_OWN_SERVICES=
HTTP_ACCEPT=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
CONTENT_LENGTH=9
ADDWEBIF_PID=-P /var/mod/root/addwebif.pid
MOD_SWAP_SWAPPINESS=60
SCRIPT_FILENAME=/var/mod/root/cgi-bin/env
MOD_IPV6_ASSIGN=
[COLOR="#FF0000"]MOD_HTTPD_USER=root[/COLOR]
HTTP_HOST=***.***.***.***:83
MOD_CROND=yes
MOD_IPV6_FORWARD=no
MOD_SHUTDOWN_LAST=
REQUEST_URI=/cgi-bin/env?one=1&two=2&true=true&false=false
ADDWEBIF_LOG=yes
MOD_STOR_AUTORUNEND=no
MOD_RESOLV_ATTEMPTS=
SERVER_SOFTWARE=busybox httpd/1.21.0
MOD_STOR_PREFIX=uStor
MOD_SHOW_FREETZ_INFO=yes
MOD_CGI_WIDTH=600
MOD_STOR_KILLBLOCKER=no
MOD_HTTPD_PORT=81
MOD_RESOLV_TIMEOUT=
MOD_SHOW_BOX_INFO=yes
ADDWEBIF_IP=0.0.0.0
PATH=/mod/sbin:/mod/bin:/mod/usr/sbin:/mod/usr/bin:/sbin:/bin:/usr/sbin:/usr/bin
MOD_SHUTDOWN_FIRST=inetd
MOD_SHOW_MEMORY_USAGE=yes
MOD_MOUNTED_UMOUNT=yes
MOD_MOUNTED_MAIN=yes
MOD_EXTERNAL_WAIT_INFINITE=no
HTTP_ACCEPT_LANGUAGE=de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
HTTP_REFERER=http://***.***.***.***:83/cgi-bin/netstat
SERVER_PROTOCOL=HTTP/1.0
ADDWEBIF_UG=-u nobody:nobody
MOD_EXTERNAL_DIRECTORY=/var/media/ftp/uStor01/external
_cgi_content_width=630
_cgi_width=600
_CGI_STYLES= /style/mod/daemons.css
MOD_SWAP_FILE=
PATH_INFO=
MOD_SKIN=newfreetz
MOD_STOR_USELABEL=no
MOD_HTTPD=yes
REDIRECT_STATUS=200
REQUEST_METHOD=GET
MOD_GET_IP_METHOD=--extquery
MOD_SWAP=no
PWD=/var/mod/root/cgi-bin
_CGI_ID=daemons
MOD_EXTERNAL_FREETZ_SERVICES=yes
SCRIPT_NAME=/cgi-bin/env
ADDWEBIF_PORT=-p 0.0.0.0:83
MOD_EXTERNAL_YEAR_MIN=no
Code:
# cd /var/mod/root
chown -R nobody:nobody .
Könnte es dafür eine Lösung geben?
[EDIT]
Start eingeloggt (root) und aus ash mit dem dazugehörigen Startscript (rc.addwebif) nicht aus dem freetz-WebIf sondern direkt aus dem Userverzeichnis (/var/mod/root) ist alles (soweit) in Ordnung:
Code:
# cd /var/mod/root
# ./rc.addwebif start
-u nobody:nobody CGI gibt env aus:
Code:
GATEWAY_INTERFACE=CGI/1.1
CONFIG_WLAN=y
CONFIG_FON_HD=n
CONFIG_USB_STORAGE_USERS=n
CONFIG_USB_HOST_AVM=n
CONFIG_I2C=n
CONFIG_AB_COUNT=2
CONFIG_WLAN_TXPOWER=y
REMOTE_USER=fritz
CONFIG_WLAN_OPENWIFI=n
CONFIG_CAPI_NT=n
CONFIG_JFFS2=n
CONFIG_ONLINEHELP_URL=http://help.avm.de/fritzbox.php?hardware=129&oem=avm&language=de&country=&version=60.04.68&subversion=10172
CONFIG_T38=n
USER=root
CONFIG_STOREUSRCFG=y
CONFIG_NFS=n
ADDWEBIF_REALM=-r HTTP-Dienst
CONFIG_SQLITE=n
CONFIG_CAPI_XILINX=y
CONFIG_UBIK2=n
REMOTE_ADDR=***.***.***.***
LD_LIBRARY_PATH=/mod/lib:/mod/usr/lib
CONFIG_FONGUI2=y
QUERY_STRING=one=1&two=2&true=true&false=false
CONFIG_TAM_ONRAM=n
CONFIG_FONQUALITY=n
CONFIG_USB=n
HOME=/mod/root
GCOV_PREFIX=/var/gcov
OEM=avm
CONFIG_VDSL=n
CONFIG_PRODUKT_NAME=FRITZ!Box Fon WLAN 7113
wlan_cal=**************************
CONFIG_ENVIRONMENT_PATH=/proc/sys/urlader
SSH_TTY=/dev/pts/0
AUTH_TYPE=Basic
HTTP_USER_AGENT=Mozilla/5.0 (Windows NT 5.1; rv:19.0) Gecko/20100101 Firefox/19.0
REMOTE_PORT=2766
CONFIG_USB_HOST_TI=n
ADDWEBIF_ENABLED=no
ADDWEBIF_LOGF=/var/mod/root/addwebif.log
CONFIG_SWAP=n
CONFIG_LED_NO_DSL_LED=y
CONFIG_ASSIST=y
ADDWEBIF_HOME=-h /var/mod/root
ADDWEBIF_PARAS=-c /var/mod/root/httpd.conf
HTTP_ACCEPT=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
CONFIG_SUBVERSION=-freetz-devel-10172
CONFIG_VERSION=04.68
CONFIG_USB_STORAGE=n
CONFIG_CAPI_POTS=y
HWRevision_ATA=1
PS1=\u@\h:\w\$
CONFIG_SAMBA=n
CONFIG_WEBSRV=y
ADDWEBIF_PID=-P /var/mod/root/addwebif.pid
SCRIPT_FILENAME=/var/mod/root/cgi-bin/env
CONFIG_RELEASE=1
CONFIG_BLUETOOTH_CTP=n
Language_is_default=yes
HTTP_HOST=***.***.***.***:83
CONFIG_ROMSIZE=8
CONFIG_SERVICEPORTAL_URL=http://www.avm.de/fritzbox-service-portal.php?hardware=129&oem=avm&language=de&country=&version=60.04.68&subversion=10172
CONFIG_FIRMWARE_URL=http://www.avm.de/fritzbox-firmware-update.php?hardware=129&oem=avm&language=de&country=
CONFIG_PRODUKT=Fritz_Box_7113
HWRevision=129
HWRevision_BitFileCount=
ANNEX=B
CONFIG_ACCESSORY_URL=http://www.avm.de/fritzbox_apps.php?hardware=129&oem=avm&language=de&country=&version=60.04.68&subversion=10172
CONFIG_VERSION_MAJOR=60
CONFIG_XILINX=y
CONFIG_BUTTON=y
CONFIG_TR064=n
CONFIG_NQOS=n
CONFIG_ONLINEHELP=y
Country_is_default=yes
LOGNAME=root
REQUEST_URI=/cgi-bin/env?one=1&two=2&true=true&false=false
CONFIG_USB_PRINT_SERV=n
CONFIG_VPN=n
ADDWEBIF_LOG=yes
SERVER_SOFTWARE=busybox httpd/1.21.0
CONFIG_UPNP=n
CONFIG_ETH_COUNT=1
CONFIG_CAPI=y
TERM=xterm
CONFIG_TR069=n
CONFIG_MAILER=n
CONFIG_CDROM_FALLBACK=n
CONFIG_WLAN_WDS=y
CONFIG_DECT=n
ADDWEBIF_IP=0.0.0.0
PATH=/mod/sbin:/mod/bin:/mod/usr/sbin:/mod/usr/bin:/sbin:/bin:/usr/sbin:/usr/bin
HTTP_ACCEPT_LANGUAGE=de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
CONFIG_WLAN_1130TNET=n
CONFIG_CAPI_UBIK=n
CONFIG_NAND=n
CONFIG_FAXSUPPORT=n
CONFIG_INSTALL_TYPE=ar7_8MB_xilinx_1eth_2ab_isdn_te_pots_wlan_01427
HTTP_REFERER=http://***.***.***.***:83/cgi-bin/index.cgi
enable_ata=1
CONFIG_WLAN_MADWIFI=n
CONFIG_SRTP=n
CONFIG_IGD=y
SERVER_PROTOCOL=HTTP/1.0
CONFIG_UNIQUE_PASSWD=n
CONFIG_WLAN_WMM=y
CONFIG_DECT_ONOFF=n
CONFIG_FAX2MAIL=n
CONFIG_OEM_DEFAULT=avm
CONFIG_MEDIASRV=n
ADDWEBIF_UG=-u nobody:nobody
CONFIG_ATA=y
CONFIG_HOMEI2C=n
CONFIG_AUDIO=n
CONFIG_BASIS=y
PATH_INFO=
CONFIG_VLYNQ=y
CONFIG_WLAN_1350TNET=y
CONFIG_ECO=n
CONFIG_LOGD=n
CONFIG_VLYNQ_PARAMS=vlynq_reset_bit_0
SHELL=/bin/ash
REDIRECT_STATUS=200
CONFIG_REMOTE_HTTPS=n
CONFIG_WLAN_IPTV=n
CONFIG_USB_WLAN_AUTH=n
CONFIG_HOSTNAME=fritz.fonwlan.box
CONFIG_CDROM=n
CONFIG_MEDIACLI=n
CONFIG_VOL_COUNTER=n
CONFIG_LIB_MATH=y
REQUEST_METHOD=GET
CONFIG_MAILER2=n
CONFIG_AURA=n
ETC_CONFIG_PATH=/etc/init.d/rc.init
CONFIG_WLAN_TCOM_PRIO=n
Language=de
CONFIG_KIDS=n
CONFIG_DECT2=n
CONFIG_SESSIONID=y
CONFIG_CAPI_TE=y
CONFIG_ANNEX=B
CONFIG_WLAN_WPS=n
PWD=/var/mod/root/cgi-bin
Country=049
SSH_CONNECTION=***.***.***.*** 1040 192.168.1.3 22222
CONFIG_VLYNQ0=3
CONFIG_TAM_MODE=0
CONFIG_WLAN_GREEN=n
SCRIPT_NAME=/cgi-bin/env
GCOV_PREFIX_STRIP=5
TZ=CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00
CONFIG_WLAN_SAVEMEM=y
CONFIG_VLYNQ1=0
CONFIG_CAPI_MIPS=n
CONFIG_FONBOOK2=n
OEM_DEFAULT_INDEX=
CONFIG_BLUETOOTH=n
CONFIG_ATA_FULL=n
CONFIG_TAM=n
ADDWEBIF_PORT=-p 0.0.0.0:83
CONFIG_RAMSIZE=16
CONFIG_FON=n
CONFIG_DSL=y
CONFIG_IPTV_4THOME=n
(Tatsächlich wurde jetzt das env von root übergeben: USER=root LOGNAME=root)
Auch die aus dem env gebildeten Links funktionieren dann wieder:
CONFIG_ACCESSORY_URL
CONFIG_SERVICEPORTAL_URL
CONFIG_ONLINEHELP_URL
Was macht ein Linuxer, um das Environment so zu manipulieren wie er es haben will?
Dieses Thema ist mir echt wichtig
(Und sollte Allen, die auch über das freetz-WebIf Irgendetwas ins www freigeben, wichtig sein)
Zum Download: Entpackkommando: # tar -x -z -f addwebif.tgz # Ins WebIf laden: # ./rc.addwebif load
Die addwebif.cfg und rc.addwebif Variable SCRIPT_DIR='/var/mod/root' gelten als Beispiel,
und sollten entsprechend den Optionen des zu startenden Programmes angepasst werden.
(Die Beispielwebseiten setzen vollkonfigurierbaren httpd voraus: Own errorpages, reverse proxy, -u)
Die Beispielseiten für die MIME-TYPES *.xml *.svg und *.swf (siehe httpd.conf) hab ich rausgelassen damit es nicht so aufträgt.
Nicht vergessen in rc.addwebif SCRIPT_DIR='/var/mod/root' auf eure Örtlichkeit zu ändern!
Struktur des Archives (damit ihr nichts ausversehen überschreibt):
Code:
root@fritz:/var/mod/root# tar -t -z -f addwebif.tgz
[COLOR="#800080"]rc.addwebif
addwebif.cfg
addwebif.cgi
[/COLOR]httpd.conf
index.html
cgi-bin/
cgi-bin/avm_mn
cgi-bin/bd_mn
cgi-bin/cycler
cgi-bin/env
cgi-bin/free
cgi-bin/hd_en
cgi-bin/hd_st
cgi-bin/httpdcfg
cgi-bin/ifconfig
cgi-bin/iframe
cgi-bin/index.cgi
cgi-bin/jscript
cgi-bin/netstat
cgi-bin/ps
cgi-bin/top
cgi-bin/uname
cgi-bin/uptime
css/
css/menu.css
css/style.css
error/
error/e400.html
error/e401.html
error/e402.html
error/e403.html
error/e404.html
error/e500.html
html/
html/index.html
html/stats.xhtml
img/
img/7113.png
img/bg.jpg
img/blank.png
img/button.gif
img/button_black.gif
img/button_blue.gif
img/button_gray.gif
img/button_green.gif
img/button_greyscale.gif
img/button_pink.gif
img/button_red.gif
img/button_rgb.gif
img/button_white.gif
img/button_yellow.gif
img/favicon.ico
javascript/
javascript/koys.js
javascript/ttcf.js
Anhänge
Zuletzt bearbeitet: