An cás reatha: PHP2Shell. Ceadaíonn dhá leochaileacht chriticiúla PHP (CVSS 9.2) cód mailíseach gan logáil isteach. Paistí ar fáil ón 21 Deireadh Fómhair 2026.Cad atá le déanamh anois →

Uaslódálacha comhad i PHP a chur i bhfeidhm go slán: slándáil uaslódála PHP

Is bealach coitianta do webshells iad foirmeacha uaslódála. Seo conas a sheiceálann tú cineálacha comhad i gceart, a stórálann tú comhaid go slán agus a chuireann tú cosc ar an bhfreastalaí scripteanna uaslódáilte a rith.

Staid Am léitheoireachta: 6 nóim.Treoracha

Go achomair: I slándáil uaslódála PHP ní seiceáil amháin a chinneann an toradh, ach an teaglaim: cineál comhaid a sheiceáil ar thaobh an fhreastalaí, comhaid a athainmniú, iad a chur lasmuigh den fhréamhchomhadlann ghréasáin agus gan rith scripte a cheadú san fhillteán uaslódála. Is ceann de na bealaí clasaiceacha é foirm uaslódála gan seiceáil trína dtugann ionsaitheoirí cúldoras ar fhreastalaí gréasáin.

Cén fáth a bhfuil foirmeacha uaslódála ina bpointe iontrála is fearr leat

Scríobhann gach foirm a ghlacann le comhaid sonraí coimhthíocha ar do fhreastalaí. Orthu sin tá foirmeacha iarratais, tairseacha cliant, gailearaithe íomhánna, réimsí tacaíochta agus a lán eisínteachtaí do CMS agus siopaí. Má éiríonn le hionsaitheoir comhad a chur ansin a ritheann an freastalaí gréasáin ina dhiaidh sin mar PHP, tá cúldoras buan aige.

Don bhainistíocht ciallaíonn sé seo: d'fhéadfadh uaslódáil a bhfuil cuma neamhdhíobhálach uirthi d'achoimrí saoil, sa chás is measa, cur le tógáil an fhreastalaí gréasáin ar fad. Ina theannta sin bíonn sonraí pearsanta i bhfillteáin uaslódála go minic a bhíonn inrochtana go poiblí le cumraíocht mhícheart.

Do riarthóirí agus forbróirí ciallaíonn sé: caithfidh cód feidhmchláir agus cumraíocht an fhreastalaí teacht le chéile. Is minic a ghabhann leibhéal amháin laige ar leibhéal eile, nuair a chuirtear an dá cheann i bhfeidhm go glan. Conas a aimsíonn tú comhaid a cuireadh isteach cheana, déanann an treoir Webshells a aithint agus a bhaint cur síos air.

Na bunrialacha do shlándáil uaslódála PHP

Tagann na rialacha seo a leanas leis na moltaí ó OWASP Cheat Sheets agus tá siad cruthaithe san oibríocht:

  • Liosta ceadaithe seachas liosta toirmiscthe: Ná glac ach le cineálacha comhad atá ceadaithe go sainráite, mar shampla PDF, JPG agus PNG. Is féidir liostaí toirmiscthe d'iarmhíreanna aonair a sheachaint trí leaganacha agus iarmhíreanna dúbailte.
  • An t-inneachar a sheiceáil, ní an iarmhír amháin: An fíorchineál a fháil ar thaobh an fhreastalaí le finfo. Is sonra ón seoltóir é an cineál MIME i $_FILES agus níl sé iontaofa.
  • Ainm nua comhaid: Ná húsáid an bunainm mar ainm comhaid riamh. Gin ainm randamach agus cuir an iarmhír ón liosta ceadaithe leis.
  • Stóráil lasmuigh den fhréamhchomhadlann ghréasáin: Stóráil comhaid ionas nach bhfuil siad inrochtana go díreach trí URL. Seachadtar trí script le seiceáil údaráis.
  • Méid a theorannú: San fheidhmchlár, i PHP agus san fhreastalaí gréasáin.
  • Gan rith: Má chaithfidh uaslódálacha a bheith sa fhréamhchomhadlann ghréasáin ar aon nós, múch rith scripte sa chomhadlann sin.
  • Seiceáil ar an bhfreastalaí amháin: Feabhsaíonn seiceálacha JavaScript sa bhrabhsálaí an úsáid, ach ní chosnaíonn siad.

Sampla slán le finfo agus ainm randamach

Léiríonn an sampla seo a leanas croílár próiseála slána. Tá sé gearr d'aon turas agus ní mór é a leabú i d'fheidhmchlár, is é sin le logáil isteach, seiceáil údaráis, cosaint CSRF agus logáil.

<?php
declare(strict_types=1);

const MAX_BYTES  = 5 * 1024 * 1024; // 5 MB
const ERLAUBT    = [
    'application/pdf' => 'pdf',
    'image/jpeg'      => 'jpg',
    'image/png'       => 'png',
];
const ZIELORDNER = '/var/www/daten/uploads'; // lasmuigh den fhréamhchomhadlann ghréasáin

$datei = $_FILES['dokument'] ?? null;

if (!is_array($datei) || $datei['error'] !== UPLOAD_ERR_OK) {
    http_response_code(400);
    exit('Upload fehlgeschlagen.');
}

if ($datei['size'] > MAX_BYTES || !is_uploaded_file($datei['tmp_name'])) {
    http_response_code(400);
    exit('Datei ungültig.');
}

$finfo = new finfo(FILEINFO_MIME_TYPE);
$typ   = $finfo->file($datei['tmp_name']);

if (!isset(ERLAUBT[$typ])) {
    http_response_code(415);
    exit('Dateityp nicht erlaubt.');
}

$name = bin2hex(random_bytes(16)) . '.' . ERLAUBT[$typ];
$ziel = ZIELORDNER . '/' . $name;

if (!move_uploaded_file($datei['tmp_name'], $ziel)) {
    http_response_code(500);
    exit('Speichern fehlgeschlagen.');
}

chmod($ziel, 0640);
// Stóráil an bunainm mar théacs amháin sa bhunachar sonraí
// agus escape é le htmlspecialchars() le gach aschur.

I gcás íomhánna is fiú céim bhreise: an íomhá a ionchódú as an nua le GD nó Imagick agus na meiteashonraí a chaitheamh amach. Ní chuireann sé sin na seiceálacha eile ina n-ionad, ach laghdaíonn sé an riosca iarmharach de bharr sonraí coimhthíocha leabaithe.

Do dhoiciméid ó fhoinsí anaithnide, mar shampla iarratais nó grianghraif gearán, tá scanadh víreas sula dtugtar ar aghaidh ciallmhar freisin. Cosnaíonn sé níos lú an freastalaí gréasáin ná na fostaithe a osclaíonn na comhaid níos déanaí ar a ríomhairí oibre. Logáil gach uaslódáil freisin le hamanna, cuntas, méid comhaid agus cineál aitheanta, ionas gur féidir patrúin neamhghnácha a rianú níos déanaí.

I gcás CMS agus siopaí, bíonn seiceálacha dá gcuid féin de ghnáth sna leabharlanna meán ionsuite. Tá foirmeacha eisínteachta, feidhmeanna iompórtála agus leathanaigh bhreise a ríomhchláraítear leat féin níos riosca, a stórálann comhaid tharla an leabharlann. Ba cheart duit na háiteanna sin a fheiceáil ar dtús le linn seiceála.

Leid

Seachadaigh comhaid ón bhfillteán cosanta le Content-Disposition: attachment agus X-Content-Type-Options: nosniff. Ansin ní thaispeánann an brabhsálaí inneachar fadhbach go díreach, ach tairgeann sé mar íoslódáil é.

Rith PHP a mhúchadh san fhillteán uaslódála

Fiú má shleamhnaíonn comhad le hinneachar mícheart tríd, ní cheadaítear don fhreastalaí gréasáin é a rith mar script. Baineann an dara sraith chosanta seo le gach freastalaí a stórálann uaslódálacha sa fhréamhchomhadlann ghréasáin.

Do Nginx le PHP-FPM:

location ^~ /uploads/ {
    location ~* \.(php|phtml|phar)$ {
        deny all;
    }
}

Do Apache, is fearr go díreach sa VirtualHost seachas i .htaccess, ionas nach féidir leis an bhfeidhmchlár an riail a fhorscríobh:

<Directory "/var/www/html/uploads">
    AllowOverride None
    <FilesMatch "\.(php|phtml|phar)$">
        Require all denied
    </FilesMatch>
</Directory>

Má ritheann PHP mar mhodúl Apache (mod_php), is féidir leat php_admin_flag engine off a shocrú ina theannta sin sa bhloc céanna. Tar éis an athraithe, seiceáil le comhad tástála neamhdhíobhálach nach n-aschuireann ach téacs go bhfreagraíonn an freastalaí iarratas air le 403.

Teorainneacha méide agus an nasc le PHP2Shell

Tá uaslódálacha dlúthbhaineach leis na socruithe PHP post_max_size agus upload_max_filesize. I gcomhthéacs PHP2Shell molann php.net mar bheart idirthréimhseach post_max_size a shocrú ar 8M mura bhfuil uaslódálacha ag teastáil, nó ar 32M le huaslódálacha, agus upload_max_filesize a choinneáil faoina bhun. Ní cosaint iomlán é sin agus ní chuireann sé an nuashonrú go leagan ceartaithe PHP ina ionad.

; php.ini nó linn FPM (php_admin_value), ansin gach oibrí a atosú
file_uploads        = On
post_max_size       = 32M
upload_max_filesize = 20M
max_file_uploads    = 5

Mura bhfuil uaslódálacha ag teastáil ó shuíomh gréasáin ar chor ar bith, is é file_uploads = Off an réiteach is glaine. Cé na socruithe atá ciallmhar go dtí an paiste, tá sé ag Bearta láithreacha gan paiste. Cearta oiriúnacha do chomhadlanna uaslódála, déanann Cearta comhad ar an bhfreastalaí gréasáin cur síos orthu.

Earráidí tipiciúla i bhfeidhmeanna uaslódála

Agus feidhmchláir atá ann cheana á scrúdú, tagann na patrúin chéanna chun cinn arís agus arís eile. Seiceáil do fhoirmeacha go sonrach i gcomhair na bpointí seo:

  • Ní sheiceáiltear an iarmhír ach go páirteach, ionas go sleamhnaíonn ainmneacha comhad le roinnt iarmhíreanna tríd.
  • Críochnaíonn an bunainm ón bhfoirm sa chosán stórála. Osclaíonn sé sin bealaí d'ionramháil cosán agus do chomhaid atá ann cheana a fhorscríobh.
  • Tá uaslódálacha poiblí le hainmneacha intuartha. I gcás iarratas nó conarthaí is fadhb cosanta sonraí é sin freisin.
  • Tá an fillteán uaslódála inscríofa don fhreastalaí gréasáin agus inrite ag an am céanna.
  • Ní nuashonraítear seaneisínteachtaí uaslódála ná breiseáin foirme, cé gur fhoilsigh an monaróir nuashonruithe slándála.
  • Ní logáiltear earráidí. Is comhartha luath d'iarrachtaí spriocdhírithe iad uaslódálacha diúltaithe.

Conas a chabhraíonn PHP SOS go nithiúil?

  • Seiceálaimid do fheidhmeanna uaslódála sa chód agus i gcumraíocht an fhreastalaí agus ainmnímid laigí nithiúla le tosaíocht.
  • Socraímid an glas rite san fhillteán uaslódála, cearta oiriúnacha agus teorainneacha méide mar chuid den chruatú freastalaí.
  • Má tá amhras ann, cuardaímid comhadlanna uaslódála le haghaidh scripteanna a cuireadh isteach agus glanaimid iad trínár mbaint malware.
  • Ar iarratas, déanaimid an cur i bhfeidhm a chros-seiceáil go neamhspleách le tástáil threáite.

Ceisteanna coitianta

An leor iarmhír an chomhaid a sheiceáil le linn uaslódála?

Ní leor. Is ón seoltóir a thagann an iarmhír agus an cineál MIME a thuairiscíonn an brabhsálaí agus is féidir iad a roghnú go saor. Seiceáil an t-inneachar ar thaobh an fhreastalaí, tabhair ainm nua comhaid agus cuir rith scripte faoi ghlas sa chomhadlann uaslódála.

Cá háit ar cheart comhaid uaslódáilte a stóráil?

Is fearr lasmuigh den chomhadlann ghréasáin phoiblí. Ansin glacann script an seachadadh air féin, a sheiceálann roimh ré an bhfuil cead ag an úsáideoir an comhad a fheiceáil. Ar an gcaoi sin ní féidir comhaid a ghlaoch go díreach ná a rith.

An bhfuil comhaid SVG mar íomhánna neamhdhíobhálach?

Ní go huathoibríoch. Is XML é SVG agus féadann inneachar gníomhach a bheith ann. Ná ceadaigh SVG ach má ghlanann tú na comhaid nó má sheachadann tú iad mar íoslódáil amháin le ceanntásc Content-Disposition oiriúnach.

An bhfuil baint ag méid uaslódála le PHP2Shell?

Tá, go hindíreach. Molann php.net luachanna níos ísle do post_max_size agus upload_max_filesize mar bheart idirthréimhseach. Laghdaíonn sé sin an riosca, ach ní chuireann sé an nuashonrú go leagan ceartaithe PHP ná atosú gach oibrí ina ionad.

Foinsí

Teagmháil láithreach

Cuireann gach uair an chloig leis. Scríobh chugainn anois.

Déan cur síos gearr ar an gcóras, leagan PHP agus an rud a thug tú faoi deara. Cuirfimid scéala chugat, soiléireoimid an cás agus oibreoimid go cianda go dtí go mbeidh an teagmhas dúnta agus doiciméadaithe.

Cabhair láithreach