This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
secure-low-level-programming:capitole:10-controlul-accesului [2018/12/20 21:19] razvan |
secure-low-level-programming:capitole:10-controlul-accesului [2018/12/21 16:38] (current) razvan [setuid] |
||
---|---|---|---|
Line 28: | Line 28: | ||
Accesăm directorul ''setuid/'' din arhiva de suport. | Accesăm directorul ''setuid/'' din arhiva de suport. | ||
- | Urmăriți conținutul fișierului '' prog.c'' și rulați executabilul ''prog''. Programul încearcă deschiderea a două fișiere privilegiate. În primă instanța va eșua. | + | Urmăriți conținutul fișierului ''prog.c'' și rulați executabilul ''prog''. Programul încearcă deschiderea a două fișiere privilegiate. În primă instanța va eșua. |
Apoi schimbați owner-ul fișierului în ''root'' și adăugați-i bitul de ''setuid'' folosind comenzile | Apoi schimbați owner-ul fișierului în ''root'' și adăugați-i bitul de ''setuid'' folosind comenzile | ||
Line 36: | Line 36: | ||
</code> | </code> | ||
- | Acum rulați din nou programul și observați că reușește deschiderea unui fișier, câtă vreme //effective user id-ul// (''euid'') este ''1000''. | + | Acum rulați din nou programul și observați că reușește deschiderea unui fișier, câtă vreme //effective user id-ul// (''euid'') este ''0''. În momentul în care //effective user id-ul// (''euid'') este ''1000'', operația eșuează. |
==== cap ==== | ==== cap ==== | ||
- | Accesăm directorul ''lalala/'' din arhiva de suport. | + | Accesăm directorul ''cap/'' din arhiva de suport. |
- | TODO | + | <note important> |
+ | Va trebui să instalați pachetul ''libcap-dev'' folosind comanda | ||
+ | <code> | ||
+ | sudo apt install libcap-dev | ||
+ | </code> | ||
+ | </note> | ||
+ | Urmăriți conținutul fișierului ''prog.c'' și rulați executabilul ''prog''. Programul încearcă deschiderea a două fișiere privilegiate. În primă instanța va eșua. | ||
+ | |||
+ | Apoi oferiți executabilului ''prog'' capabilitatea ''CAP_DAC_READ_SEARCH'' folosind comanda: | ||
+ | <code> | ||
+ | sudo setcap cap_dac_read_search+ep ./prog | ||
+ | </code> | ||
+ | Verificați adăugarea capabilității folosind comanda: | ||
+ | <code> | ||
+ | getcap ./prog | ||
+ | </code> | ||
+ | |||
+ | Acum rulați din nou programul și observați că reușește deschiderea unui fișier, câtă vreme capabilitatea ''CAP_DAC_READ_SEARCH'' este prezentă. | ||
+ | |||
+ | <note tip> | ||
+ | Dacă doriți să eliminați capabilitatea ''CAP_DAC_READ_SEARCH'' din executabilul ''prog'' folosiți comanda | ||
+ | <code> | ||
+ | sudo setcap cap_dac_read_search-ep ./prog | ||
+ | </code> | ||
+ | </note> | ||
==== seccomp ==== | ==== seccomp ==== | ||
- | Accesăm directorul ''lalala/'' din arhiva de suport. | + | Accesăm directorul ''seccomp/'' din arhiva de suport. |
- | TODO | + | <note important> |
+ | Va trebui să instalați pachetul ''libseccomp-dev'' folosind comanda | ||
+ | <code> | ||
+ | sudo apt install libseccomp-dev | ||
+ | </code> | ||
+ | </note> | ||
+ | Urmăriți conținutul fișierului ''prog.c'' și rulați executabilul ''prog''. Programul încearcă deschiderea a două fișiere privilegiate. Deschiderea primului fișier va reuși, în vreme ce deschiderea celui de-al doilea fișier va eșua dată fiind folosirea sandboxing-ului cu ajutorul ''seccomp''. |