Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2020-03-27 11:36:12

  jkl - Użytkownik

jkl
Użytkownik
Zarejestrowany: 2013-07-09

PHP apache2 ping debian 10 buster

# cat ping.php

Kod:

<?php
print 'pingowanie';
$result = shell_exec('/bin/ping -c3 172.20.2.42 2>&1');
print "<pre>$result</pre>";
print 'koniec pingowania';
?>

Po wejściu w apache2 na ping.php mam:

Kod:

pingowanie
ping: socket: Operation not permitted
koniec pingowania

ls -la /bin/ping

Kod:

-rwsrwxrwx 1 root root 65272 sie  3  2018 /bin/ping

Co mogę z tym fantem zrobić?

To jest problem jakiejś konfiguracji na debianie ponieważ na innych maszynach mi to lata z palca.

Ostatnio edytowany przez jkl (2020-03-27 11:47:25)

Offline

 

#2  2020-04-11 16:52:20

  mati75 - Psuj

mati75
Psuj
Skąd: default city
Zarejestrowany: 2010-03-14
Serwis

Re: PHP apache2 ping debian 10 buster

Kod:

setcap 'cap_net_admin,cap_net_raw+ep' $(which ping)

powinno pomóc


https://l0calh0st.pl/obrazki/userbar.png

Offline

 

#3  2020-04-11 19:00:37

  yossarian - Szczawiożerca

yossarian
Szczawiożerca
Skąd: Shangri-La
Zarejestrowany: 2011-04-25

Re: PHP apache2 ping debian 10 buster

Chyba cap_net_raw+ep powinno wystarczyć:

Kod:

getcap $(which ping)
/bin/ping = cap_net_raw+ep

Offline

 

#4  2020-04-11 22:35:46

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: PHP apache2 ping debian 10 buster

SUID i Capabilities dla /ibn/ping owszem, może pomoc, o ile Apache nie jest chroniony profilem Apparmora,
bo ten został wprowadzony w Busterze, a Apache to jedna z pierwszych chronionych przez AA  aplikacji.

W takim przypadku w profilu AA trzeba pozwolić na uruchamianie polecenia ping przez mod_php, bo inaczej żadne cuda z binarką ping nie pomogą.

@jkl
Pokaż z roota wyniki:

Kod:

aa-status

Kod:

sestatus

oraz:

Kod:

cat /proc/`pgrep apache2 |head -n1`/attr/current

Ostatnio edytowany przez Jacekalex (2020-04-11 22:37:06)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#5  2020-04-12 12:21:02

  jkl - Użytkownik

jkl
Użytkownik
Zarejestrowany: 2013-07-09

Re: PHP apache2 ping debian 10 buster

# getcap $(which ping)
/bin/ping = cap_net_raw+ep

# aa-status
-bash: aa-status: nie znaleziono polecenia

# sestatus
-bash: sestatus: nie znaleziono polecenia


Ok to jest kontener LXC z debianem busterem. Nie widziałem, że to może mieć wpływ.
Dzięki za naprowadzenie to na 90% apparmor hosta matki.

Offline

 

#6  2020-04-12 13:18:32

  jkl - Użytkownik

jkl
Użytkownik
Zarejestrowany: 2013-07-09

Re: PHP apache2 ping debian 10 buster

1. Nie - jednak to nie wina apparmora.
Wyłączyłem go dla tego kontenerka.

/bin/ping onet.pl - z kontenera działa więc powinno latać.

z apache2 nadal dostaje:
ping: socket: Operation not permitted

2. Próbowałem użyć nowszej paczki iputils-ping z testing.
Też nie pomaga.

Offline

 

#7  2020-04-12 14:56:47

  jkl - Użytkownik

jkl
Użytkownik
Zarejestrowany: 2013-07-09

Re: PHP apache2 ping debian 10 buster

zrobiłem tak:
- zmieniłem shell dla użytkownika www-data na /bin/bash w /etc/passwd

sudo -u www-data ping onet.pl
ping: socket: Operation not permitted

To się pokazuje nawet gdy www-data jest właścicielem /bin/ping.

Offline

 

#8  2020-04-12 18:19:45

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: PHP apache2 ping debian 10 buster

A co powiadają logi Apacha i PHP o tym poleceniu ping?

Zobacz backdoory c100 i c99, z nich można było pingować z poziomu php.
Przynajmniej się wtedy dowiesz, czy twój sposób na shell_exec jest jedyny, czy da się to lepiej zrobić.
Może PHP ma obecnie jakoś okrojony shell_exec, to w końcu jedna z najgroźniejszych funkcji w PHP.


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#9  2020-04-13 13:51:43

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: PHP apache2 ping debian 10 buster

Zaraz zaraz... rzadko używam PHP więc mogę się mylić, ale w przypadku CGI i SSI Apacz po prostu olewa bit SUID rzadkim sikiem. Czyżby w przypadku php też tak było?
Dawno tego nie robiłem, ale kiedyś tego potrzebowałem i wykombinowałem jakiś wrapper w C - wybaczcie, ale to było gdzieś na początku tysiąclecia i za nic nie pamiętam co ja tam nawyczyniałem; w każdym razie działało.


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
Zespół Adwokacki Dyskrecja

Offline

 

#10  2020-04-13 22:32:19

  mati75 - Psuj

mati75
Psuj
Skąd: default city
Zarejestrowany: 2010-03-14
Serwis

Re: PHP apache2 ping debian 10 buster

Obstawiam że apache to blokuje, zmieniłem adres do pingania na 8.8.8.8. Odpaliłem skrypt w taki sposób i działa:

Kod:

www-data@smietnik:~/html$ php -S 0.0.0.0:3000 ping.php
[Mon Apr 13 22:25:34 2020] PHP 7.4.4 Development Server (http://0.0.0.0:3000) started
[Mon Apr 13 22:25:38 2020] 10.128.254.135:37292 Accepted
[Mon Apr 13 22:25:40 2020] 10.128.254.135:37292 Closing

Kod:

% curl 10.128.254.132:3000
pingowanie<pre>PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=53 time=25.4 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=53 time=24.7 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=53 time=23.7 ms

--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 23.687/24.596/25.382/0.697 ms
</pre>koniec pingowania

to samo jest na nginx. Szukałbym w error.log apache co go blokuje.


https://l0calh0st.pl/obrazki/userbar.png

Offline

 

#11  2020-04-14 02:26:17

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: PHP apache2 ping debian 10 buster

Jeżeli apache zrzuca uprawnienia na usera www-data, a tenże user www-data ma powłokę /dev/null albo podobną.
to prawdopodobnie ze względów bezpieczeństwa Apache też blokuje SUID na vhostach.

Gdyby Apache pozwalał na SUID, to byłaby dziura w systemie, jakiej świat nie widział, porównywalna z register_globals w PHP.


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#12  2020-04-14 12:15:51

  jkl - Użytkownik

jkl
Użytkownik
Zarejestrowany: 2013-07-09

Re: PHP apache2 ping debian 10 buster

@Jacekalex zmiana powłoki w pliku /etc/passwd dla usera www-data + restart apache2 nie pomaga.

@mati75 tak to blokuje apache2, mam dokładnie takie samo zachowanie

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)