Hi uile. Tha sinn gu gnìomhach a’ faighinn a-steach don obair agus tha sinn mu thràth ag ullachadh mòran chuirmean cumhachdach san Fhaoilleach. Am measg eile, chaidh clàradh ainmeachadh airson sruth ùr den chùrsa as fheàrr leis a h-uile duine.
Tha ceadan faidhle a’ tabhann roghainn eile sàbhailte an àite SUID executables, ach faodaidh iad a bhith beagan troimh-chèile an toiseach.
Tha fios againn uile gu bheil binaries
Sàbhalaidh mi beagan ùine dhut ma tha thu airson an artaigil gu h-àrd a sheachnadh gu mionaideach: Gu bunaiteach, tha ceadan faidhle a’ ceadachadh pròiseasan a ruitheas mar fhreumh agus mar sin tha cead aca rudeigin a dhèanamh gus comasan sònraichte a chumail, cuibhrichte
Tha ceadan math airson seirbheisean a bhios mar as trice a’ ruith mar bhunait, ach dè mu dheidhinn goireasan loidhne-àithne? Gu fortanach, tha seo cuideachd a’ faighinn taic fhad ‘s a tha na goireasan ceart agad air an stàladh. Ma tha thu a’ cleachdadh Ubuntu, mar eisimpleir bidh feum agad air a’ phacaid libcap2-bin
. Feumaidh tu cuideachd kernel neo-àrsaidh a ruith (bho dreach 2.6.24).
Leigidh na gnìomhan sin le ceadan a bhith co-cheangailte ri faidhlichean so-ghnìomhaichte, coltach ri bhith a’ suidheachadh am pìos SUID, ach dìreach airson seata ceadan sònraichte. Goireas setcap
air a chleachdadh gus ceadan bho fhaidhle a chur ris agus a thoirt air falbh.
Is e a’ chiad cheum na ceadan a tha a dhìth ort a thaghadh. Air sgàth an artaigil seo, tha mi a 'gabhail ris gu bheil inneal breithneachaidh lìonra ris an canar tracewalk
, a bu chòir a bhith comasach air a chleachdadh CAP_NET_RAW
.
A’ gabhail ris gu bheil thu san eòlaire far a bheil am binary suidhichte tracewalk
, faodaidh tu an cead seo a chur ris mar seo:
sudo setcap cap_net_raw=eip tracewalk
Na leig seachad an iar-leas airson a-nis =eip
airson fuasgladh, bruidhnidh mi mu dheidhinn sin ann an diog no dhà. Thoir an aire gu bheil an t-ainm cead ann an litrichean beaga. Faodaidh tu a-nis dearbhadh a bheil thu air ceadan a rèiteachadh gu ceart le:
setcap -v cap_new_raw=eip tracewalk
No faodaidh tu a h-uile cead a chaidh a shuidheachadh airson gnìomh sònraichte a liostadh:
getcap tracewalk
Airson fiosrachadh, faodaidh tu cuideachd a h-uile cead a thoirt air falbh bhon cho-ghnìomhaiche le:
setcap -r tracewalk
Aig an ìre seo, bu chòir gum biodh e comasach dhut an gnìomh a ruith mar neach-cleachdaidh gun bhuannachd, agus bu chòir dha a bhith comasach air obrachadh le socaidean amh, ach gun a bhith aig gin de na sochairean eile a tha aig a’ chleachdaiche freumh.
Mar sin dè a tha an iar-leasachan neònach seo a’ ciallachadh? =eip
? Feumaidh seo beagan tuigse air nàdar nan ceadan. Tha trì seataichean de cheadan aig gach pròiseas − èifeachdach, sealbhach agus ceadaichte:
- Èifeachdach Is e ceadan an fheadhainn a tha a’ mìneachadh dè as urrainn do phròiseas a dhèanamh. Mar eisimpleir, chan urrainn dha dèiligeadh ri socaidean amh ma tha
CAP_NET_RAW
chan eil e san t-seata èifeachdach. - Ri fhaighinn is e ceadan an fheadhainn a tha ceadaichte do phròiseas ma dh’iarras e orra a’ ghairm iomchaidh a chleachdadh. Bidh iad a’ cur casg air pròiseas bho bhith a’ dèanamh dad mura deach a sgrìobhadh gu sònraichte gus an cead sin iarraidh. Leigidh seo le pròiseasan a bhith air an sgrìobhadh gus ceadan èiginneach a chur ris an t-seata èifeachdach a-mhàin airson na h-ùine nuair a tha feum orra.
- oighreachail Is e ceadan an fheadhainn a dh'fhaodar a shealbhachadh anns an t-seata ruigsinneach den phròiseas leanabh sìolachaidh. Rè obair-lannsa
fork()
noclone()
tha pròiseas an leanaibh an-còmhnaidh a’ faighinn leth-bhreac de cheadan a’ phròiseas phàrant leis gu bheil e fhathast a’ ruith an aon rud a ghabhas coileanadh aig an àm sin. Bithear a’ cleachdadh seata oighreachail nuair aexec()
(no co-ionann) air a ghairm gus fear eile a chuir an àite an fhaidhle so-ghnìomhaichte. Aig an ìre seo, tha an seata pròiseas a tha ri fhaighinn air a chuartachadh leis an t-seata oighreachail gus an seata ruigsinneach fhaighinn a thèid a chleachdadh airson a’ phròiseas ùr.
Mar sin an goireas setcap
a’ leigeil leinn ceadan nan trì seataichean sin a chur ris gu neo-eisimeileach airson gnìomh sònraichte. Thoir an aire gu bheil brìgh bhuidhnean air a mhìneachadh beagan eadar-dhealaichte airson ceadan faidhle:
- Ri fhaighinn Is e ceadan faidhle an fheadhainn a tha an-còmhnaidh rim faighinn le faidhle so-ghnìomhaichte, eadhon ged nach robh iad aig a’ phròiseas pàrant a dh ’ainmich e. B’ e ceadan “èignichte” a bh’ orra.
- Oidhreachd bidh ceadan faidhle a’ mìneachadh masg a bharrachd a ghabhas cleachdadh cuideachd gus ceadan a thoirt air falbh bho sheata a’ phròiseas gairm. Bidh iad a’ buntainn a bharrachd air an t-seata shealbhaichte den phròiseas gairm, agus mar sin chan fhaighear an cead ach ma tha e anns an dà sheata.
- Èifeachdach chan eil ann an ceadan faidhle ach beagan, chan e seata, agus ma tha e air a shuidheachadh, tha e a’ ciallachadh gu bheil an seata iomlan a tha ri fhaighinn cuideachd air a chopaigeadh a-steach do sheata èifeachdach a’ phròiseis ùr. Faodar seo a chleachdadh gus ceadan a chur ri pròiseasan nach deach a sgrìobhadh gu sònraichte airson an iarraidh. Leis gu bheil e aon phìos, ma shuidhicheas tu e airson cead sam bith, feumaidh e a bhith air a shuidheachadh airson a h-uile cead. Faodaidh tu smaoineachadh air mar pìos dìleab oir tha e air a chleachdadh gus ceadan a chleachdadh le tagraidhean nach eil a’ toirt taic dhaibh.
Nuair a thèid ceadan a shònrachadh tro setcap
tri litrichean e
, i
и p
thoir iomradh air èifeachdach, so-ruigsinneach agus ruigsinneach seataichean fa leth. Mar sin, an sònrachadh na bu tràithe:
sudo setcap cap_net_raw=eip tracewalk
... a' nochdadh gu bheil an rùn CAP_NET_RAW
feumar a chur ris na seataichean a tha rim faighinn agus a tha rim faighinn agus gum feumar am pìos èifeachdach a shuidheachadh cuideachd. Bidh seo a’ dol thairis air ceadan sam bith a chaidh a shuidheachadh roimhe air an fhaidhle. Gus iomadh cead a shuidheachadh aig an aon àm, cleachd liosta dealaichte le cromag:
sudo setcap cap_net_admin,cap_net_raw=eip tracewalk
An toiseach, chan obraich comasan faidhle le symlinks - feumaidh tu an cur an sàs anns an fhaidhle binary fhèin (ie targaid a’ symlink).
San dàrna h-àite, chan eil iad ag obair le sgriobtaichean mìneachaidh. Mar eisimpleir, ma tha sgriobt Python agad a tha thu airson cead a shònrachadh dha, feumaidh tu a shònrachadh don eadar-theangair Python fhèin. Gu follaiseach tha seo na chùis tèarainteachd a dh’ fhaodadh a bhith ann oir bidh an cead ainmichte aig a h-uile sgriobt a thèid a chuir gu bàs leis an eadar-theangair sin, ged a tha seo fhathast gu math nas fheàrr na bhith ga dhèanamh SUID. Tha e coltach gur e an dòigh-obrach as cumanta a bhith a’ sgrìobhadh gnìomh air leth ann an C no a leithid a dh’ fhaodas na h-obraichean riatanach a dhèanamh agus a ghairm bho sgriobt. Tha seo coltach ris an dòigh-obrach a chleachd Wireshark a bhios a’ cleachdadh binary /usr/bin/dumpcap
gus gnìomhan sochair a dhèanamh:
$ getcap /usr/bin/dumpcap
/usr/bin/dumpcap = cap_net_admin,cap_net_raw+eip
San treas àite, tha ceadan faidhle à comas ma chleachdas tu caochladair àrainneachd LD_LIBRARY_PATH
airson adhbharan tèarainteachd follaiseach(1). Tha an aon rud a 'buntainn ri LD_PRELOAD
, cho fad 's is aithne dhomh.
1. Leis gum faod neach-ionnsaigh gu follaiseach aon de na leabharlannan àbhaisteach agus cleachdadh a chuir an àite LD_LIBRARY_PATH
gus toirt air an leabharlann aige a bhith air a ghairm an àite an t-siostam aon, agus mar sin a chòd neo-riaghailteach fhèin a chuir gu bàs leis na h-aon sochairean ris an tagradh gairm.
Sin e. Gheibhear tuilleadh fiosrachaidh mu phrògram a’ chùrsa aig
Source: www.habr.com