Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 50 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
50
Dung lượng
916,85 KB
Nội dung
BAN CƠ YẾU CHÍNH PHỦ HỌC VIỆN KỸ THUẬT MẬT MÃ KHOA: AN TỒN THƠNG TIN ^ffl^ THỰC TẬP CƠ SỞ CHUYÊN NGHÀNH AN TOÀN PHẦN MỀM NGHIÊN CỨU ENVIROMENT VARIABLE AND SET-UID (ENVIROMENT VARIABLE AND SET-UID LAB) Giảng viên hướng dẫn: Sinh viên thực hiện: Lớp: Mã số sinh viên: Nhóm: Khóa: PGS.TS Lương Thế Dũng Trần Quốc Hồng AT15H AT150719 13 2018-2023 TP Hồ Chí Minh, tháng 11 năm 2021 BAN CƠ YẾU CHÍNH PHỦ HỌC VIỆN KỸ THUẬT MẬT MÃ KHOA: AN TỒN THƠNG TIN ^fflos X hosts Linux distribLitions Gi Solaris hosts CH Solaris 11 IPS hosts Oracle VM VirtualBox 6.1.Ỉ6 Setup Custom Setup Select the you mant tẽatures to be instolled Click on the icons in the tree belom to change the may íeatures mill be installed Oracle VM ViitualBox 6.1.26 application VirtualBox Application VirtoalBox USB Support VirtoalBox Netwũrking Ệ- VirtoalBox Bridgei VirtualBox Host-C 1^1 VirtualBox Python 2.X SL This teature requires 217MB on your hard drive Ithas 3of subteatores selected The subteatores requiie 932KB on yo Location: Version 6.1.216 Tiếp tục , chọn Next cuối chọn Install Oracle VM VirtualBcEí 6.1.26 Setup Readvto Install The Setup Wizard Ẽ ready to begin tìie Custom installatiũn Clicklnstall to begin the installatiũn Ifyou nvaitto review or change any of your installation settings, clickBack ClickCancel to exitthe wizard Version 6.1.26 < Back Install Cancel 'Ạ! Oracle VM ViitualBox 6.1.26 Setup Oracle VM VirtuaiBox 6.1.26 installation ĩs compiete Click the Finish button to exit the Setup Wizard start Oracle VM VirtualBox 6.1.26 after installation Versiũn 6.1.26 Finish Chọn Finish để kết thúc trình cài đặt Bên giao diện sau cài đặt hoàn tất 1.5 Cài đặt môi trường ảo Ubuntu v16.04 SEED Labs Truy cập vào trang web : https://seedsecuritylabs.org/labsetup.html Chọn version 16.04 hình bên tải theo đường dẫn đính kèm Ubuntu 16.04 VM The SEED Ubuntu 16.04 VM (SEEDUbuntu-16.04-32bit.zip) can be dovvnloaded to your personal Computer írom the tollovving links: • • • • • Gooqle Drive DigitalOcean zheịianq University (china) MD5 value: 12c48542c29c233580a23589b72b71b8 VM Manual: follow this manual to install the VM You can also run the SEED VM írom a cloud: • Arnazon AWS: You can find the SEED VM in AWS's community AMIs Please read the instruction regarding How to Launch SEEDUbuntu VM in AWS It should be noted that the deíault passvvord for this VM has been changed (see the same document) Ở em chọn đường dẫn “Google Drive” Sau tải xong giải nén file rar Sau đó, thư mục task7 tạo chương trình gọi hàm sleep(), biên dịch thực thi chương trình Và ta thực thi chương trình với user thường, ta thấy chương trình gọi hàm sleep() định nghĩa chương trình myprogcompiled in dịng chữ mà ta code chương trình [11/04/21]seed@VM:—/ /task07$ cat mylib.c #include void sleep (int s){ printf("I am not sleepỉngXn" ) ; }[11/04/21]seed@VM:—/ ,/taskĐ7$ gcc -fPIC -g -c mylib gcc: error: mylib : No such file or directory gcc: tatal error: no input files compilation terminated [11/04/21]seed@VM:—/ /task07$ gcc -fPIC [11/04/21]seed@VM:-/ /task07$ gcc -shared so.1.0.1 mylib.o -lc [11/04/21]seed@VM:~/ /task07$ subl myprogram.c [11/04/21]sẹed@VM:—/ /task07$ export mylib.so.1.0.1 [11/04/21]seed@VM:~/ /task07$ I -g [11/04/21]seed@VM:~/ /task07$ gcc myprogram.c ogcompiled myprogram.c: In tunction 'main': myprogram.c:2:2: warnỉng: implicit declaration of tunct ion 'sleep' [-Wimplicit-function-declaration] sleep{1); -c -o mylib.c lỉbmylib LD_PRELOAD=./lib -0 mypr myprogram.c:3:2: warnỉng: implicit declaration of tunct ion 'System' [-Wimplicit-function-declaration] systẽm("env I grep LD"); [11/04/21]seed@VM:-/ /task07$ /myprogcompiled I am not sleeping Khi chạy chương trình tình khác định tài liệu, ta nhận thấy số tình định, thư viện chứa hàm sleep() ta không gọi thay vào đó, hàm sleep() hệ thống xác định thực thi Để hiểu hành vi này, ta cần chỉnh sửa chương trình thêm lệnh gọi hệ thống để thực thi env | grep LD để xem biến mơi trường quy trình Như ta đề cập đến grep LD cách mà chương trình tải thư viện xác định thực thi hàm sleep() biến mơi trường LD_PRELOAD Chương trình myprogram.c chỉnh sửa sau Trường hợp 1: Sau tiến hành chỉnh sửa thêm lệnh system(“env | grep LD”); ta tiến hành biên dịch thực thi lại chương trình user thường Lúc output chương trình lần dịng in hàm sleep() biến mơi trường chương trình chứa chuỗi “LD” Như ta thấy, tiến trình sử dụng LD_PRELOAD biến mơi trường [11/04/21]seed@VM:~/ /task07$ gcc myprogram.c -0 mypr ogcompiled myprogram.c: In tunction 'main': myprogram.c:2:2: warnỉng: implicit declaration of tunct ion 'sleep' [-Wimplicit-function-declaration] sleep(1); A myprogram.c:3:2: warnỉng: implicit declaration of tunct ion 'System' [-Wimplicit-function-declaration] systẽm("env I grep LD"); A [11/04/21]seed@VM:~/ /task07$ /myprogcompiled I am not sleeping LD PRELOAD=./libmylib.so.1.0.1 LD_LIBRARY_PATH=/home/seed/sou rce/boost_l_64_0/stage/li b:/home/seed/sou rce/boost_l 64 o/stage/lib: OLDPWD=/home/seed/Documents/task07 Trường hợp 2: Ta đặt chương trình thành chương trình root SET-UID cho chương trình chạy lại Output cho thấy thư viện chứa hàm sleep() chương trình khơng gọi cho thấy biến mơi trường q trình khơng chứa biến LD_PRELOAD Điều cho thấy tiến trinh SET-UID tạo không kế thừa biến LD_PRELOAD khơng tải thư viện hàm sleep() hệ thống xác định chương trình sleep() [ 11/05/21 ] seed(3VM:-/ /task7$ sudo chown root myprogco mpiled [11/05/21]seed@VM:~/ /task7$ sudo chmod 4755 myprogco mpiled [11/05/21]seed@VM:~/ /task7$ 11 myprogcompiled -rwsr-xr-x root seed 7388 Nov 08:05 myprogcompiled [11/05/21]seed@VM:~/ /task7$ /myprogcompiled ‘,0LDPWD=/home/seed/Documents/task7 Trường hợp 3: Vì chương trình chương trình SET-UID root, ta cần đăng nhập vào tài khoản user root xác định biến LD_PRELOAD Khi chạy chương trình, ta thấy function sleep() người dùng định nghĩa thực thi biến LD_PRELOAD diện Điều xảy ta tài khoản root chủ sở hữu function root Điều làm cho q trình có real ID effective ID, biến LD_PRELOAD khơng bị loại bỏ [11/05/21]seed@VM:~/ /task7$ sudo su root