Aloha kākou. Ke hoʻomaka nei mākou i ka hana a ke hoʻomākaukau nei mākou i nā hoʻolaha ikaika i Ianuali. Ma waena o nā mea ʻē aʻe, ua hoʻolaha ʻia ke kau inoa ʻana no kahi kahawai hou o ka papa punahele a kēlā me kēia.
Hāʻawi nā ʻae faila i kahi koho palekana i nā mea hoʻokō SUID, akā hiki ke ʻike i kahi huikau i ka wā mua.
ʻIke mākou a pau i kēlā binaries
E mālama au iā ʻoe i kekahi manawa inā makemake ʻoe e pale i ka heluhelu ʻana i ka ʻatikala ma luna me ka kikoʻī: ʻO ka mea nui, ʻae ʻia nā ʻae faila i nā kaʻina hana e holo ma ke kumu a no laila ua ʻae ʻia e hana i kekahi mea e mālama i kekahi mau mana, kaupalena ʻia.
He maikaʻi nā ʻae no nā lawelawe e holo mau nei ma ke ʻano he kumu, akā pehea e pili ana i nā pono laina kauoha? ʻO ka mea pōmaikaʻi, kākoʻo ʻia kēia inā loaʻa iā ʻoe nā pono pono i kau ʻia. Inā ʻoe e hoʻohana nei i ka Ubuntu, pono ʻoe i ka pōʻai libcap2-bin
. Pono ʻoe e holo i kahi kernel non-archaic (mai ka version 2.6.24).
Hāʻawi kēia mau hana i nā ʻae e pili pū me nā faila hiki ke hoʻokō ʻia, e like me ka hoʻonohonoho ʻana i ka bit SUID, akā no nā ʻae kikoʻī wale nō. Mea hoohana setcap
hoʻohana ʻia e hoʻohui a wehe i nā ʻae mai kahi faila.
ʻO ka hana mua ke koho i nā ʻae āu e pono ai. No ka pono o kēia ʻatikala, ke manaʻo nei au aia kahi mea hana diagnostic network i kapa ʻia tracewalk
, i hiki ke hoohana CAP_NET_RAW
.
Ke manaʻo nei aia ʻoe i ka papa kuhikuhi kahi i loaʻa ai ka binary tracewalk
, hiki iā ʻoe ke hoʻohui i kēia ʻae e like me kēia:
sudo setcap cap_net_raw=eip tracewalk
E haʻalele i ka suffix i kēia manawa =eip
no ka hoʻoholo ʻana, e kamaʻilio wau e pili ana i kēlā i loko o ʻelua mau kekona. E hoʻomanaʻo, aia ka inoa ʻae ma ka huaʻōlelo liʻiliʻi. Hiki iā ʻoe ke nānā inā ua hoʻonohonoho pololei ʻoe i nā ʻae me:
setcap -v cap_new_raw=eip tracewalk
A i ʻole hiki iā ʻoe ke papa inoa i nā ʻae āpau i hoʻonohonoho ʻia no kahi hoʻokō i hāʻawi ʻia:
getcap tracewalk
No ka ʻike, hiki iā ʻoe ke wehe i nā ʻae āpau mai ka mea hoʻokō me:
setcap -r tracewalk
I kēia manawa, hiki iā ʻoe ke holo i ka executable ma ke ʻano he mea hoʻohana pono ʻole, a hiki iā ia ke hana me nā kumu maka, akā ʻaʻole loaʻa kekahi o nā pono ʻē aʻe i loaʻa i ka mea hoʻohana kumu.
No laila he aha ke ʻano o kēia suffix ʻē? =eip
? Pono kēia e hoʻomaopopo i ke ʻano o nā ʻae. Loaʻa i kēlā me kēia kaʻina hana ʻekolu mau ʻae − kūpono, hoʻoili a ʻae ʻia:
- Pono ʻO nā ʻae ʻia nā mea e wehewehe i ke ʻano o ke kaʻina hana. No ka laʻana, ʻaʻole hiki ke hana me nā kumu maka inā
CAP_NET_RAW
ʻaʻole i loko o ka hoʻonohonoho kūpono. - Loaʻa ʻO nā ʻae ʻia nā mea i ʻae ʻia i kahi kaʻina hana inā noi ia iā lākou me ka hoʻohana ʻana i ke kelepona kūpono. Kāohi lākou i kahi kaʻina hana mai ka hana maoli ʻana i kekahi mea ke ʻole i kākau kikoʻī ʻia e noi i ʻae ʻia. Hāʻawi kēia i nā kaʻina hana e kākau e hoʻohui i nā ʻae koʻikoʻi i ka hoʻonohonoho kūpono no ka manawa i koi ʻia ai.
- Hoʻoilina ʻO nā ʻae ʻia nā mea i hiki ke hoʻoili ʻia i loko o ka hoʻonohonoho hiki ke loaʻa o ke kaʻina hana keiki spawned. I ka wā ʻoki
fork()
ai ole ia,clone()
Hāʻawi mau ʻia ke kaʻina hana keiki i kope o ka ʻae ʻana o ke kaʻina hana makua no ka mea e holo mau ana ia i ka hoʻokō like i kēlā manawa. Hoʻohana ʻia kahi pūʻulu hoʻoilina i ka wāexec()
(a i ʻole like) ua kāhea ʻia e hoʻololi i ka faila hoʻokō me kekahi. I kēia manawa, uhi ʻia ka pūʻulu i loaʻa i ke kaʻina hana e ka hoʻonohonoho hoʻoilina no ka loaʻa ʻana o ka pūʻulu hiki ke hoʻohana ʻia no ke kaʻina hana hou.
No laila ka pono setcap
hiki iā mākou ke hoʻohui i nā ʻae o kēia mau pūʻulu ʻekolu no kahi hoʻokō i hāʻawi ʻia. E hoʻomaopopo i ka unuhi ʻokoʻa ʻana o ka manaʻo o nā pūʻulu no nā ʻae faila:
- Loaʻa ʻO nā ʻae faila nā mea i loaʻa mau i kahi faila hiki ke hoʻokō ʻia, ʻoiai inā ʻaʻole i loaʻa i ka kaʻina hana makua i kapa ʻia. Ua kapa ʻia lākou he ʻae "hoʻoikaika".
- Hoʻoilina ʻae ʻia nā faila e wehewehe i kahi mask hou e hiki ke hoʻohana ʻia no ka wehe ʻana i nā ʻae mai ke kaʻina hana kelepona. Hoʻopili lākou i ka hoʻohui i hoʻoili ʻia o ke kaʻina kelepona, no laila e hoʻoili ʻia ka ʻae inā loaʻa ia ma nā pūʻulu ʻelua.
- Kūpono ʻO ka ʻae ʻana i nā faila he ʻāpana hoʻokahi wale nō, ʻaʻole he hoʻonohonoho, a inā hoʻonohonoho ʻia, ʻo ia hoʻi, ua kope pū ʻia ka pūʻulu holoʻokoʻa i loaʻa i loko o ka hoʻonohonoho pono o ke kaʻina hana hou. Hiki ke hoʻohana ʻia kēia e hoʻohui i nā ʻae i nā kaʻina hana ʻaʻole i kākau kikoʻī ʻia e noi iā lākou. No ka mea he wahi iki, inā hoʻonoho ʻoe iā ia no kekahi ʻae, pono e hoʻonohonoho ʻia no nā ʻae āpau. Hiki iā ʻoe ke noʻonoʻo iā ia ma ke ʻano he legacy bit no ka mea ua hoʻohana ʻia ia e ʻae i nā ʻae e hoʻohana ʻia e nā noi i kākoʻo ʻole iā lākou.
Ke kuhikuhi nei i nā ʻae ma o setcap
ʻekolu leka e
, i
и p
e nānā i pono, hoʻoili a hiki ke loaʻa hoonoho pakahi. No laila, ʻo ka ʻōlelo mua:
sudo setcap cap_net_raw=eip tracewalk
...e hōʻike ana i ka ʻōlelo hoʻoholo CAP_NET_RAW
pono e hoʻohui ʻia i nā pūʻulu i loaʻa a hoʻoili ʻia a pono e hoʻonohonoho pū ʻia ka bit kūpono. E hoʻopau kēia i nā ʻae i hoʻonohonoho mua ʻia ma ka faila. No ka hoʻonohonoho ʻana i nā ʻae he nui i ka manawa hoʻokahi, e hoʻohana i kahi papa inoa i hoʻokaʻawale ʻia i nā koma:
sudo setcap cap_net_admin,cap_net_raw=eip tracewalk
ʻO ka mea mua, ʻaʻole hana nā faila me nā symlinks - pono ʻoe e hoʻopili iā lākou i ka faila binary ponoʻī (ʻo ia hoʻi ka pahuhopu o ka symlink).
ʻO ka lua, ʻaʻole lākou e hana me nā palapala unuhi. No ka laʻana, inā loaʻa iā ʻoe kahi palapala Python āu e makemake ai e hāʻawi i ka ʻae, pono ʻoe e hāʻawi iā ia i ka unuhi ʻōlelo Python ponoʻī. ʻOiaʻiʻo, he pilikia palekana kēia no ka mea e loaʻa i nā palapala āpau i hana ʻia me kēlā unuhi ʻōlelo ka ʻae i ʻōlelo ʻia, ʻoiai ʻoi aku ka maikaʻi o kēia ma mua o ka hana ʻana iā SUID. ʻO ka workaround maʻamau ka mea e kākau i kahi hoʻokō ʻokoʻa i C a i ʻole like e hiki ke hana i nā hana pono a kāhea iā ia mai kahi palapala. Ua like kēia me ke ala i hoʻohana ʻia e Wireshark e hoʻohana ana i kahi binary /usr/bin/dumpcap
e hana i nā hana pono:
$ getcap /usr/bin/dumpcap
/usr/bin/dumpcap = cap_net_admin,cap_net_raw+eip
ʻO ke kolu, hoʻopau ʻia nā ʻae faila inā hoʻohana ʻoe i kahi ʻano hoʻololi kaiapuni LD_LIBRARY_PATH
no nā kumu palekana maopopo(1). Pela no hoi LD_PRELOAD
, i ko'u ike.
1. No ka mea hiki i ka mea hoʻouka ke hoʻololi i kekahi o nā hale waihona puke maʻamau a hoʻohana LD_LIBRARY_PATH
e koi aku i kona hale waihona puke e kapa ʻia ma mua o ka ʻōnaehana hoʻokahi, a no laila ua hoʻokō ʻia kāna code ponoʻī me nā pono like me ka noi kelepona.
ʻo ia wale nō. Hiki ke loaʻa nā kikoʻī hou aku e pili ana i ka papahana papa ma
Source: www.habr.com