Skip to content

Archives

  • tammikuu 2022
  • joulukuu 2021
  • marraskuu 2021
  • lokakuu 2021
  • syyskuu 2021

Categories

  • Ei kategorioita
Trend RepositoryArticles and guides
Articles

Komentorivin käyttö selaimesta shell.php:n avulla

On 5 tammikuun, 2022 by admin

Joskus haluat selaimesta komentorivin käytön. Se onnistuu PHP:n avulla, jos tietoturva-asetukset sallivat sen. Toteutin tämän toiminnallisuuden shell.php:ssä (saatavilla Githubissa). Yllä olevassa kuvakaappauksessa näet, miten shell-käyttöoikeus selaimesta toimii. Skriptin avulla voit ladata, ladata, tarkastella, muokata ja poistaa tiedostoa, zipata ja purkaa hakemiston ja käydä läpi palvelimen hakemistoja hiirellä, mutta voit myös kirjoittaa mukautettuja komentoja näppäimistöllä.

  • Turvallisuusvaroitus ja vastuuvapauslauseke
  • Tunnettuja ongelmia
  • PHP shellin suorituskomennot
  • Palvelimen karkaisu open_basedirillä
  • Ei löydy Suhosinia?
  • Oikeuksien erottelu
  • Johtopäätös

Turvallisuusvaroitus ja vastuuvapauslauseke

Käynnistä tämä skripti vain omistamillasi koneilla (tai valtuutetun pentestin aikana). Varmista myös, että kone on kunnolla palomuurattu (portti 80 ei saa olla tavoitettavissa Internetistä). Älä käytä sitä haitallisiin tarkoituksiin! Lue lisää shell-skriptien väärinkäytöstä täältä.

Tunnettuja ongelmia

Jos skripti ei toimi, se voi johtua siitä, että PHP:n ”passthru”-toiminto, johon se perustuu, on poistettu käytöstä. Voit listata käytöstä poistetut PHP-toiminnot suorittamalla seuraavan PHP-koodin:

var_dump(ini_get('safe_mode'));var_dump(explode(',',ini_get('disable_functions')));var_dump(explode(',',ini_get('suhosin.executor.func.blacklist')));

Out-of-the-box Ubuntu 14.04, joka antaa tulosteen:

bool(false)Array( => pcntl_alarm => pcntl_fork => pcntl_waitpid => pcntl_wait => pcntl_wifexited => pcntl_wifstopped => pcntl_wifsignaled => pcntl_wexitstatus => pcntl_wtermsig => pcntl_wstopsig => pcntl_signal => pcntl_signal_dispatch => pcntl_get_last_error => pcntl_strerror => pcntl_sigprocmask => pcntl_sigwaitinfo => pcntl_sigtimedwait => pcntl_exec => pcntl_getpriority => pcntl_setpriority =>)Array( =>)

PHP shellin suorituskomennot

Jos skripti ei toimi passthru():n avulla, se kokeilee muutamia muita komentoja. Seuraavat komennot ovat samanlaisia:

  • exec() Palauttaa komentojen viimeisen rivin tulosteen
  • passthru() Välittää komentojen tulosteen suoraan selaimelle
  • system() Välittää komentojen tulosteen suoraan selaimelle ja palauttaa viimeisen rivin
  • shell_exec() Palauttaa komentojen tulosteen
  • popen() Avaa luku- tai kirjoitusputken komennon prosessiin
  • proc_open() Samanlainen kuin popen(), mutta suurempi kontrolliaste
  • pcntl_exec() Suorittaa ohjelman

Palvelimen karkaisu open_basedirillä

Jos ylläoleva skripti tuntuu pelottavalta, niin haluat ehkä estää sen suorittamisen palvelimellasi. Voit tehdä tämän ottamalla käyttöön vikasietotilan (deprecated), käyttämällä ”disable_functions” php.ini-muuttujaa ja/tai Suhosinin funktioiden suorittamisen mustaa listaa.

Löysin hyvin kirjoitetun postauksen PHP-asennuksen suojaamisesta, tutustu siihen! Suoritettavien funktioiden rajoittamisen lisäksi he suosittelevat myös ”open_basedir” php.ini config-muuttujaa. Se rajoittaa PHP:n käyttämät tiedostot määritettyyn hakemistopuuhun. Mielestäni tämä on tehokas työkalu.

Voi myös olla hyvä idea suojata ”/tmp”-hakemisto ”nodev”-, ”nosuid”- ja ”noexec”-lippulauseilla, kuten tässä on kuvattu.

Ei löydy Suhosinia?

Huomaa, että ”php5-suhosin”-pakettia (PHP:n tietoturvalaajennusta) ei enää asenneta eikä ole saatavissa Debian-pohjaisissa järjestelmissä. Osa tietoturvaparannuksista on sisällytetty uusimpiin PHP-versioihin (5.4 ja 5.5). Jos haluat asentaa Suhosinin (Githubista) Ubuntu 14.04:ään (PHP 5.5.9), voit seurata tätä ohjetta.

Lue lisää Suhosinin poistamiseen liittyvästä kiistasta LWN.netistä.

Oikeuksien erottelu

Jos järjestelmässä on useita käyttäjiä, ”oikeuksien erottelu” on MUST. Tämä tarkoittaa PHP-koodin ajamista käyttäjäkontekstissa (esim. käyttäjänä ”maurits”) eikä käyttäjänä ”www-data”. Olen löytänyt loistavan artikkelin, jossa selitetään, miten tämä voidaan toteuttaa. Helpoin ratkaisu on suorittaa:

sudo apt-get install libapache2-mpm-itk

Ja sitten lisätä ”AssignUserID”-direktiivi jokaiseen ”VirtualHost”-asetukseen. Huomaa, että tämä ei ehkä ole turvallisin ratkaisu, mutta se toimii hyvin ja on helppo asentaa.

Johtopäätös

Sinun tulisi aina päivittää ja paikata PHP:n uusimpaan versioon tunnettujen tietoturva-aukkojen hyväksikäytön estämiseksi. Työkalut kuten ”disable_functions”, ”open_basedir”, Suhosin ja tiedostojärjestelmän liput vähentävät hyökkäyspintaa ja estävät tuntemattomien tietoturva-aukkojen hyödyntämisen. Niiden avulla voit luoda monikerroksisen tietoturvastrategian. Älä myöskään unohda etuoikeuksien erottelua.

Jaa

Vastaa Peruuta vastaus

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

Arkistot

  • tammikuu 2022
  • joulukuu 2021
  • marraskuu 2021
  • lokakuu 2021
  • syyskuu 2021

Meta

  • Kirjaudu sisään
  • Sisältösyöte
  • Kommenttisyöte
  • WordPress.org
  • DeutschDeutsch
  • NederlandsNederlands
  • SvenskaSvenska
  • DanskDansk
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • RomânăRomână
  • PolskiPolski
  • ČeštinaČeština
  • MagyarMagyar
  • SuomiSuomi
  • 日本語日本語

Copyright Trend Repository 2022 | Theme by ThemeinProgress | Proudly powered by WordPress