Danh mục

KỸ THUẬT KHAI THÁC LỖI TRÀN TRONG BỘ ĐỆM (Phần 2)

Số trang: 12      Loại file: doc      Dung lượng: 65.50 KB      Lượt xem: 15      Lượt tải: 0    
10.10.2023

Phí tải xuống: 2,000 VND Tải xuống file đầy đủ (12 trang) 0
Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Trên các hệ điều hành đa người dùng nói chung và UNIX nói riêng, thiết kế truyền thống cho phép user root(superuser) có quyền tối cao có thể thực hiện mọi thao tác trên hệ thống. Hơn nữa, có một số thao tác đòi hỏibuộc phải có quyền root mới có thể thực hiện được, ví dụ thay đổi mật khẩu (phải cập nhật file /etc/passwd).Để người dùng bình thường có thể thực hiện được các thao tác này, hệ thống UNIX cung cấp một cơ chế thiếtlập quyền thực tế của tiến trình đang thực thi thông qua các...
Nội dung trích xuất từ tài liệu:
KỸ THUẬT KHAI THÁC LỖI TRÀN TRONG BỘ ĐỆM (Phần 2)KỸTHUẬTKHAITHÁCLỖITRÀNBỘĐỆM(Phần2)trangnàyđãđượcđọc lầnPhần2:KỹthuậtkhaitháclỗitrànbộđệmMụclục 1.Quyềnrootvàchươngtrìnhsetuid/setgid • 2.Chươngtrìnhbịtrànbộđệm • 3.Tổchứcshellcodetrênbộnhớ • 4.Xácđịnhđịachỉshellcode • 5.Viếtchươngtrìnhkhaitháclỗitrànbộđệm • o 5.1.Truyềnshellcodequabộđệm 5.2.Truyềnshellcodequabiếnmôitrường o 6.Kếtluận • Tàiliệuthamkhảo • Liênkết •1.Quyềnrootvàchươngtrìnhsetuid/setgidTrêncáchệđiềuhànhđangườidùngnóichungvàUNIXnóiriêng,thiếtkếtruyềnthốngchophépuserroot(superuser)cóquyềntốicaocóthểthựchiệnmọithaotáctrênhệthống.Hơnnữa,cómộtsốthaotácđòihỏibuộcphảicóquyềnrootmớicóthểthựchiệnđược,vídụthayđổimậtkhẩu(phảicậpnhậtfile/etc/passwd).Đểngườidùngbìnhthườngcóthểthựchiệnđượccácthaotácnày,hệthốngUNIXcungcấpmộtcơchếthiếtlậpquyềnthựctếcủatiếntrìnhđangthựcthithôngquacáchàmthiếtlậpquyềnnhưsetuid()/setgid(),seteuid()/setegid(),setruid()/setrgid().Quyềnthựctếsẽđượchệthốngtựđộngthiếtlậpthôngquabitthuộctínhsuid/sgidcủafilechươngtrình.Vídụchươngtrìnhpasswdđượcsuidroot:rsxx1rootroot12244Feb82000/usr/bin/passwdKhiuserbìnhthườngthựcthichươngtrình,quyềnthựctếcóđượcsẽlàquyềncủangườisởhữu(owner)file,ởđâylàroot.Doyêucầusửdụng,trênhệthốngUNIXthườngcónhiềufilechươngtrìnhđượcthiếtlậpthuộctínhsuid(choowner,group).Vídụsausẽminhhoạrõhơnđiềunày:/*suidsh.c*/voidmain(){setuid(0);system(/bin/sh);}[SkZ0@gammabof]$gccosuidshsuidsh.c[SkZ0@gammabof]$suPassword:#chownroot.rootsuidsh#chmod4755suidsh#exit[SkZ0@gammabof]$lslsuidshrwsrxrx1rootroot13637Mar2615:54suidsh[SkZ0@gammabof]$iduid=501(SkZ0)gid=501(SkZ0)groups=501(SkZ0)[SkZ0@gammabof]$./suidshbash#iduid=0(root)gid=501(SkZ0)groups=501(SkZ0)Cóthểthấy,nếuchươngtrìnhsuid/sgidbịlỗibảomật,hackersẽtậndụngđiềunàyđểđiềukhiểnchươngtrìnhthựchiệnmãlệnhbấtkỳtrênhệthốngvớiquyềncaohơnvàthậmchívớiquyềncaonhấtroot.Đóchínhlàmụcđíchcủaviệckhaitháccáclỗhổngbảomậttrênmáytạichỗ(local).2.ChươngtrìnhbịtrànbộđệmĐểminhhoạcáchtổchứcvàchènshellcodevàochươngtrìnhbịlỗi,tasẽsửalạimộtchútchươngtrìnhvuln.cđãvídụởphần1:/*vuln1.c*/intmain(intargc,char**argv){charbuf[500];if(argc>1){strcpy(buf,argv[1]);printf(%s ,buf);}}Kíchthướccủabộđệmbuflà500byte.Từnhữngtrìnhbàyởphầntrước,đểkhaitháclỗitrànbộđệmtrongchươngtrìnhvuln1.cchúngtachỉcầnghiđègiátrịcủacontrỏlệnhbảolưu(savedinstructionpointer)đượclưutrênstackbằngđịachỉmãlệnhmongmuốn,ởđâychínhlàđịachỉbắtđầucủashellcode.Nhưvậychúngtacầnphảisắpxếpshellcodeởđâuđótrênbộnhớstackvàxácđịnhđịachỉbắtđầucủanó.3.TổchứcshellcodetrênbộnhớVấnđềcủaviệctổchứcshellcodetrênbộnhớlàlàmthếnàođểchươngtrìnhkhaitháclỗicóthểxácđịnhđượcđịachỉbắtđầucủabộđệmchứashellcodebêntrongchươngtrìnhbịlỗi.Thôngthường,takhôngthểbiếtmộtcáchchínhxácđịachỉcủabộđệmtrongchươngtrìnhbịlỗi(phụthuộcvàobiếnmôitrường,thamsốkhithựcthi),dođótasẽxácđịnhmộtcáchgầnđúng.Điềunàycónghĩachúngtaphảitổchứcbộđệmchứashellcodesaochokhibắtđầuởmộtđịachỉcóthểlệchsovớiđịachỉchínhxácmàshellcodevẫnthựcthikhônghềbịảnhhưởng.LệnhmáyNOP(NoOPeration)giúptađạtđượcđiềunày.KhigặpmộtlệnhNOP,CPUsẽkhônglàmgìcảngoàiviệctăngcontrỏlệnhđếnlệnhkếtiếp.Nhưvậy,chúngtasẽlấpđầyphầnđầucủabộđệmbằngcáclệnhNOP,kếđólàshellcode.Hơnnữa,đểkhôngphảitínhtoánchínhxácvịtrílưucontrỏlệnhbảolưutrênstack,chúngtasẽchỉđặtshellcodeởkhoảnggiữacủabộđệm,phầncònlạisẽchứatoàncácgiátrịđịachỉbắtđầucủashellcode.Cuốicùng,bộđệmchứashellcodesẽcódạng: Hình1:TổchứcshellcodetrênbộnhớHìnhsaumôtảtrạngtháicủastacktrướcvàsaukhitrànbộđệmxảyra. Hình2:Trạngtháistacktrướcvàsaukhitrànbộđệm Before AfterCómộtvấnđềcũngcấnlưuýởđâylàsựsắpxếp(alignment)biếntrênstack.Giátrịđịachỉcóđộdài4byte(32bit),vìvậykhiđượcsắpvàostackkhôngphảilúcnàocũngchínhxácnhưmongmuốn.Ởphầntrướcchúngtađãbiếtstacksửdụng ...

Tài liệu được xem nhiều: