BÁO CÁO BÀI TẬP LỚN MÔN an ninh web, bằng XML. Dịch vụ Web là tài nguyên phần mềm có thể xác định bằng địa chỉ URL, thực hiện các chức năng và đưa ra các thông tin người dùng yêu cầu. Một dịch vụ Web được tạo nên bằng cách lấy các chức năng và đóng gói chúng sao cho các ứng dụng khác dễ dàng nhìn thấy và có thể truy cập
Trang 1LỜI MỞ ĐẦU
Thếgiớingàynayđãcónhiềutiếnbộmạnhmẽvềcôngnghệthôngtin(CNTT)
từ một tiềm năng thông tin đã trở thành một tài nguyên thực sự, trở thành sản phẩmhàng hoátrongxã hội tạora mộtsựthayđổi tolớn tronglực lượngsảnxuất, cơsởhạtầng,cấutrúckinhtế,tínhchấtlaođộngvàcảcáchthứcquảnlýtrongcác lĩnhvựccủa
xãhội
Trong những năm gần đây, Việt Nam ngày càng phát triển và nhất là về mặtcông nghệ thông tin Đặc biệt là về ứng dụng Website, hầu như mọi người ai cũngtừng nghe và làm việctrên ứngdụng Website.Website trở nênphổ biến và trở thànhmộtphầnquantrọngcủamọingườivànhấtlàcác doanhnghiệp,côngty Bêncạnhđó
lýdoantoànbảomậtchoứngdụngWebsiteluônlàvấnđềnangiảicủamọingười
Vớicác lýdo trên,emmạnhdạnđề xuấtđềtài“Nghiên cứu một số hình thức tấn công Website phổ biến và các giải pháp phòng chống” để làm đề tài thực tậpchuyênngànhchomình.Emthấyđâylàđềtàimangtínhthựctếcao, giúpchocácnhàquản trị Website có thể làm tốt hơn công việc của mình, cũng như đảm bảo an toànthôngtin cho doanhnghiệp, công ty Đồng thời cũng giúp ích rất nhiều choem trongcáccôngviệcsaunày
Nộidungđềtàigồmbaphầnchính:
Chương1:Tổngquanvềbảomậtvàứngdụng Website
Chương2:NghiêncứucáchìnhthứctấncôngvàgiảiphápbảomậtWebsite.Chương 3: Triển khai demo một số hình thức tấn công và các giải pháp bảomật
DANH MỤC TỪ VIẾT TẮT
Trang 2SQL Structured Query Language
CHƯƠNG I: TỔNG QUAN VỀ BẢO MẬT ỨNG DỤNG WEBSITE1.1 Tổng quan về ứng dụng Website.
Ứng dụng Website là một ứng dụng chủ/khách sử dụng giao thức HTTP đểtươngtácvớingườidùnghayhệthốngkhác
Website là một “trang web” trên mạng Internet, đây là nơi giới thiệu nhữngthôngtin, hìnhảnhvề doanhnghiệpvà sảnphẩm,dịch vụcủadoanhnghiệp (haygiớithiệu bất cứ thôngtin gì) để khách hàng có thể truy cập ở bất kỳ nơi đâu, bất cứ lúcnào
Website là tập hợp nhiều trang Khi doanh nghiệp xây dựng website nghĩa làđang xây dựng nhiều trang thông tin, catalog sản phẩm, dịch vụ Để tạo nên mộtwebsitecầnphảicó3yếutốcơbản:
- Cầnphảicótênmiền(domain)
- NơilưutrữWebsite(hosting)
- Nộidungcáctrangthôngtin
Mộtứngdụng webthườngcókiếntrúcgồm:
MôhìnhhoạtđộngcủaứngdụngWebsite:
Trang 3Hình 1.2: Mô hình hoạt động của ứng dụng Website.
Trongđó:
- Trìnhkhách( haycòngọilàtrìnhduyệt):InternetExplorer,FireFox,Chrome
- Trìnhchủ:Apache,IIS,…
- Hệquảntrịcơsởdữliệu:SQLServer,MySQL,DB2,Access….1.2
Bêncạnhđó,mộtgiảipháp dùngđểbảovệmộthệthốngmạngthườngđượcsửdụnglàbứctườnglửa,nócóvai trònhưlàlớpràochắnbênngoàimộthệthốngmạng,
vìchứcnăngchínhcủafirewalllàkiểm soátluồngthôngtingiữacácmáy tính.Cóthểxem firewallnhư mộtbộ lọc thôngtin, nó xácđịnh và chophép mộtmáy tínhnày cóđược truy xuất đến một máy tính khác hay không, hay một mạng này có được truyxuấtđếnmạngkiahay không
Ngườitathường dùngfirewallvào mụcđích:
- Chophéphoặccấmnhữngdịchvụtruyxuấtrangoài
- Chophéphoặccấmnhữngdịchvụtừbênngoàitruynhậpvào trong
- Kiểmsoátđịachỉtruynhập,cấmđịachỉtruynhập
Firewall hoạt động dựa trên gói IP do đó kiểm soát việc truy nhập của máyngườisửdụng
Đầutiên trình duyệt sẽ gửi một yêucầu (request) đến trình chủ Website thôngquacác lệnh cơbảnGET, POST…củagiao thức HTTP, trìnhchủ lúc nàycó thể chothựcthi một chươngtrình được xây dựng từnhiều ngôn ngữ nhưPerl, C/C++… hoặctrình chủ yêucầu bộ diễn dịch thực thi các trang ASP, JSP… theo yêu cầu của trìnhkhách
Tùy theo các tác vụ của chương trình được cài đặt mà nó xử lý, tínhtoán, kếtnối đến cơ sở dữ liệu, lưu các thông tin do trình kháchgửi đến…và từ đó trả về cho
Trang 4- Headermôtảcácthôngtinvềgóidữliệuvàcácthuộctính,trạngtháitraođổigiữatrìnhduyệtvàWebServer
- Body là phầnnội dung dữ liệumà Server gửivề Client, nó cóthể làmột fileHTML,mộthìnhảnh, mộtđoạnphimhaymộtvănbảnbấtkì
Theo mô hình ở hình 1.1, với firewall, luồng thông tin giữa trình chủ và trìnhkhách là luồng thông tin hợp lệ Vì thế, nếu hacker tìm thấy vài lỗ hổng trong ứngdụng Website thì firewall không còn hữu dụng trong việc ngăn chặn hacker này Do
đó, các kĩ thuật tấn công vào một hệ thống mạng ngày nay đang dần tập trung vàonhững sơ suất (hay lỗ hổng) trong quá trình tạo ứng dụng của những nhà phát triểnWebsitehơnlà tấncôngtrựctiếpvàohệthốngmạng,hệđiềuhành.Tuynhiên,hackercũng có thể lợi dụng các lỗ hổng Web để mở rộng sự tấn công của mình vàocác hệthốngkhôngliênquankhác
Vớicông nghệ hiệnnay,Website khôngchỉ đơn giảnlàmột trangtin cungcấpcáctinbàiđơngiản.NhữngứngdụngviếttrênnềnWebsitekhôngchỉ đượcgọilàmộtphầncủaWebsitenữa,giờđâychúngđượcgọilàphầnmềmviếttrênnềnWebsite
Có rất nhiều phần mềm chạy trên nền Website như Google word (xử lý vănbản),Googlespreadsheets(xửlýbảngtính),Email,…
Mộtsốưuđiểmcủaphầnmềmhayứngdụngchạytrênnềnweb:
Mọingườiđềucótrìnhduyệt vàbạnchỉcầntrìnhduyệtđểchạyphầnmềm
Phầnmềm luônluônđượccậpnhậtvìchúngchạytrênserver
Luônsẵnsàng24/7
Dễdàngbackupdữliệuthườngxuyên
Cóthểtruycậpmọilúc,mọinơi,chỉcầncóInternet
Chiphítriểnkhairẻhơnnhiềusovớiphầnmềmchạytrêndesktop
1.2 Tổng quan về an ninh mạng.
Trong quá khứ, an ninh thông tin là một thuật ngữ được sử dụng để mô tả cácbiệnphápbảomậtvật lýđược sửdụngđể giữchochính phủhaydoanhnghiệp nhữngthôngtin quan trọng khỏi bị truy cập bởi công chúngvà để bảo vệ nó chống lại thayđổi hoặctiêuhủy Nhữngbiệnpháp nàybaogồmlưu trữtài liệucógiá trị trongtủ hồ
Trang 5sơđã bị khóa hoặckét và hạnchế truycậpvật lýđến các khuvực nơi mà các tài liệu
đã được lưu giữ Với sựphổ biến củamáy tính và các phương tiện truyềnthôngđiện
tử, cáchtruy cậpdữ liệucũ thay đổi Khicông nghệ tiếptục phát triển, hệ thốngmáytínhđượckết nối vớinhau đểtạothành mạngmáytính,chophépcác hệ thốngchiasẻtàinguyên,baogồmcảdữliệu
Các mạng máy tính cuối cùng, mà hầu hết các liên kết nối mạng máy tính truycậpcông cộng, là Internet Mặc dù các phương pháp bảovệ dữ liệuđã thay đổi đáng
kể,kháiniệmvềanninhmạngvẫngiốngnhưlàcácthôngtin bảomật
Bởi vì máy tính có thể thu hồi, và số tiền quá lớn của dữ liệu, chúng được sửdụng trong gần như mọi khía cạnh của cuộc sống Máy vi tính, mạng, và Internet làmột phần không thể thiếu của nhiều doanh nghiệp Sự phụ thuộc của chúng trên cácmáytínhtiếptụctăngkhicác doanhnghiệpvàcánhân trởnênthoảimáihơnvớicôngnghệvà tiếnbộ công nghệ nhưlà làmchohệ thốngthânthiện với ngườidùng hơn và
dễdànghơnđểkếtnối
Mộthệ thốngmáy tínhduy nhất yêucầucác công cụ tựđộng để bảo vệ dữ liệutrênhệthốngtừnhữngngườidùng cóquyềntruycậphệ thống.Mộthệthốngmáytínhtrênmạng(một hệthốngphânphối) đòihỏi rằngdữliệuvàohệ thốngđó đượcbảovệkhông chỉ từ truy cập địa phương mà còn từ các truy cập từ xa trái phép và từ chặnhoặc thay đổi dữ liệu trong quá trình truyền giữa các hệ thống An ninh mạng khôngphảilàmộtsảnphẩm, quytrình, haychính sáchmà làsựkết hợpcủacácsảnphẩmvàquy trình có hỗ trợ một chính sách quy định Mạng lưới an ninh được thực hiện củacác thiết bị an ninh, chính sách và quy trình để ngăn chặn truy cập trái phép vào tàinguyênmạng,thayđổihoặchủyhoạitàinguyênhoặcdữliệu
Trongmộtdoanhnghiệphay mộttổchứcnàođó,thìphảicócácyếutốcầnđượcbảovệnhư:
- Dữliệu
- Tàinguyên:conngười,hệthốngvàđườngtruyền
- Danhtiếngcủacôngty
Nếukhôngđặtvấnđềantoànthôngtinlênhàngđầuthìkhi gặpphảisựcốthìtáchạiđếndoanhnghiệpkhôngnhỏ:
- Tốnkémchiphí
Trang 6- Tốnkémthờigian.
- Ảnhhưởngđếntàinguyênhệthống
- Ảnhhưởngđếndanhdự,uytíncủadoanhnghiệp
- Mấtcơhộikinhdoanh
1.3 Các thuật ngữ liên quan.
Vìtínhchấtphổbiếncủathuậtngữhacker,nêntrongphầntrìnhbày,luậnvănsẽ
sử dụng“hacker”thaycho“kẻtấncông”
HTTP header là phần đầu (header) của thông tin mà trình khách và trình chủ gửichonhau Những thông tin trình khách gửi cho trình chủ được gọi là HTTP requests(yêu cầu) còn trình chủ gửi cho trình khách là HTTP responses (trả lời) Thôngthường,mộtHTTPheadergồmnhiều dòng,mỗidòngchứatênthamsốvàgiá trị.Một
sốtham sốcóthể đượcdùng trongcảheaderyêucầuvàheadertrảlời,cònsốkhác thìchỉđược dùngriêngtrongtừngloại.Vídụ:
•Headeryêucầu:
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Accept-Encoding: gzip, deflate
o Dòng đầu là dòng yêu cầu cho biết phương thức yêu cầu (GET hoặc POST),
Trang 7o Tiếptheolàcáctham số.Chẳnghạnnhư:
+ Accept-Language:Chobiếtngônngữ dùngtrongtrangweb
+Host:Chobiếtđịachỉcủamáychủ
+Referer:Chobiếtđịachỉcủatrangwebthamchiếutới
o HeadercủaHTTPrequestsẽkếtthúcbằngmộtdòngtrống.
o Tiếptheolàcáctham số.
o Tiếp theolàmột dòngtrống đểbáohiệukết thúcheader, tiếptheolàphần thâncủaHTTPresponse
HTTPlàgiaothứchướngđốitượngtổngquát,phitrạngthái,nghĩalàHTTPkhônglưu trữ trạng thái làm việc giữa trình duyệt với trình chủ Sự thiếu sót này gây khókhăn chomột số ứngdụng Website, bởivì trình chủ không biết được trước đó trìnhduyệtđã cónhữngtrạng tháinào Vì thế, đểgiảiquyết vấnđề này,ứngdụng Websiteđưara mộtkháiniệm phiên làmviệc(Session) CònSessionID làmộtchuỗi để chứngthựcphiên làmviệc Mộtsố trìnhchủ sẽcung cấpmộtSessionID chongười dung khi
họxemtrangWebsitetrêntrìnhchủ
ĐểduytrìphiênlàmviệcthìsessionIDthườngđượclưuvào:
+BiếntrênURL+Biếnẩnform+CookiePhiênlàmviệcchỉtồn tạitrongmộtkhoảngthờigianchophép,thờigiannàyđược
Trang 8cấuhình qui định tại trình chủhoặc bởi ứng dụng thực thi Trình chủsẽ tự động giảiphóngphiênlàmviệcđểkhôiphụclạitàinguyêncủahệ thống.
ỞnhữnglầntruycậpsauđếntrangWebsiteđó,ứngdụngcóthểdùnglạinhữngthong tin trong cookie (như thông tin liên quan đến việc đăng nhập vào YahooMessenger! ) mà người dùng không phải làm lại thao tác đăng nhập hay phải cũngcấplạicácthôngtinkhác
Cookieđượcphânlàm2loạisecure/non-securevàpersistent/non-persistentdo
- Non-persistentcookiethìđượclưutrữtrênbộnhớRAMcủamáykháchvàsẽ
bịhủykhiđóngtrangwebhaynhậnđượclệnhhủytừtrangweb
- SecurecookieschỉcóthểđượcgửithôngquaHTTPS(SSL)
- Non-Secure cookiecóthểđược gửibằng cảhaigiaothứcHTTPShayHTTP.Thựcchấtlàđốivớisecurecookiethìtrìnhchủsẽcungcấpchếđộtruyềnbảomật
Trang 9o Domain:Tênmiềncủatrangweb đãtạocookie(trongvídụtrênlà
www.redhat.com)
o Flag:manggiátrịTRUE/FALSE-Xácđịnhcácmáykhácvớicùngtênmiềncóđượctruyxuấtđếncookiehaykhông
o Path:Phạmvicácđịachỉ cóthể truyxuấtcookie.Vídụ:
Nếupathlà“/tracuu”thìcácđịa chỉtrongthưmục/tracuucũngnhưtấtcảcác thưmụcconcủanó như /tracuu/baomatcó thể truyxuất đếncookie này Cònnếu giá trịlà “/”thìcookiesẽđượctruyxuấtbởitấtcảđịachỉthuộcmiềntrangwebtạocookie
o Sercure: mang giá trị TRUE/FALSE - Xác định đây là một secure cookie haykhôngnghĩalàkếtnốicósửdụngSSLhaykhông
o Expiration: thời gian hết hạn của cookie, được tính bằng giây kể từ 00:00:00giờ
GMT ngày01/01/1970.Nếugiátrịnàykhôngđược thiếtlập thìtrìnhduyệtsẽhiểuđây
là non-persistentcookie vàchỉ lưu trong bộ nhớ RAMvà sẽ xoá nó khi trìnhduyệt bịđóng
o Name:Tênbiến(trongtrườnghợpnàylàApache)
o Value:Với cookie đượctạo ởtrênthìgiátrịcủaApachelà
64.3.40.151.16018996349247480 và ngày hết hạn là 27/07/2006, của tên miềnhttp://www.redhat.com
Proxy cung cấpchongười sử dụng truyxuất Internet nhữngnghi thứcđặc biệthoặc mộttập nhữngnghithức thựcthitrêndual_homed hosthoặc basionhost Nhữngchương trình client của người sử dụng sẽ qua trung gian proxy server thay thế choserverthậtsựmàngườisửdụngcầngiaotiếp
Proxy serverxácđịnhnhữngyêucầutừclientvàquyếtđịnhđápứnghaykhôngđáp ứng, nếu yêucầu được đáp ứng, proxy server sẽ kết nối với serverthật thay cho
Trang 10client vàtiếptục chuyểntiếp nhữngyêucầutừclient đếnserver, cũng nhưtrả lờicủaserverđếnclient.Vìvậyproxyserver giốngcầunốitrunggiangiữaservervàclient.
CHƯƠNG II: NGHIÊN CỨU CÁC HÌNH THỨC TẤN CÔNG VÀ GIẢI PHÁP BẢO MẬT WEBSITE.
hệquảntrịcơsởdữliệunhưSQLServer,MySQL,Oracle,DB2,Sysbase
Có bốn dạng thông thường bao gồm: vượt qua kiểm tra lúc đăng nhập(authorizationbypass),sửdụngcâulệnhSELECT,sửdụngcâulệnhINSERT,sửdụngcácstored-procedures
Đểbiếtcác websitesửdụngCSDLSQLtasửdụngcácphầnmềmhoặccáccôngcụtìmlỗi.Hoặc cáccôngcụtìmkiếmnhưGoogle.Vàdùngcáctừkhóatìmkiếmnhư:inurl:product.php?id=
Hình2.1.MộtcôngcụtìmLổiSQLInjection
Để biếtwebsite nàodính lỗi SQLInjection tathêm dấu“’ ” vào sauthanh địa
Trang 11Hình 2.2 Một site bị lổi SQL Injection.
Vớidạngtấncôngnày,tintặccóthểdễdàng vượtquacác trangđăngnhậpnhờvàolỗikhidùngcáccâulệnhSQLthaotáctrêncơsởdữliệucủaứngdụngWeb
Xétmộtvídụđiểnhình,thôngthườngđểchophépngườidùngtruycậpvàocáctrangWebđượcbảomật,hệthốngthườngxâydựngtrangđăngnhậpđểyêucầungườidùngnhậpthôngtin vềtênđăngnhập vàmậtkhẩu.Saukhi ngườidùng nhậpthôngtinvào, hệ thống sẽ kiểm tra tên đăng nhập và mật khẩu có hợp lệ hay không để quyếtđịnhchophép hay từchốithựchiện tiếp.Trongtrường hợpnày, ngườita cóthể dùnghaitrang,mộttrangHTML đểhiểnthịform nhậpliệuvà mộttrang ASPdùngđể xửlíthôngtinnhậptừphíangườidùng
Dạng tấn công nàyphức tạp hơn Để thựchiện đượckiểu tấn công này, kẻ tấncôngphải cókhả nănghiểu vàlợi dụngcác sơ hởtrong các thôngbáolỗi từhệ thống
đểdòtìmcácđiểmyếukhởiđầuchoviệctấncông.Xétmộtvídụrấtthườnggặptrongcác websitevề tin tức Thông thường,sẽ có mộttrang nhậnID của tin cần hiển thịrồi sau đó truy vấn nội dung của tin có ID này
Trong các tình huống thông thường, đoạn mã này hiển thị nội dung của tin có
IDtrùng vớiID đãchỉ địnhvà hầunhưkhôngthấy cólỗi.Tuy nhiên,giốngnhưvídụđăng nhập ở trước, đoạn mã này để lộ sơ hở cho một lỗi SQL injection khác Kẻ tấncông có thể thay thế một ID hợp lệ bằng cách gán ID cho mộtgiá trị khác, và từ đó,khởiđầuchomộtcuộctấncôngbấthợppháp
Thông thường các ứng dụng web cho phép người dùng đăng kí một tài khoản
đểtham gia.Chức năng khôngthể thiếulà saukhi đăngkí thànhcông, ngườidùng cóthể xem và hiệu chỉnh thông tin của mình SQL injection có thể được dùng khi hệ
Trang 12thốngkhôngkiểmtratínhhợp lệcủathôngtin nhậpvào.
o Xp_availablemedia:Hiểnthịnhữngổđĩa hiệnhànhtrênmáy
o Xp_dirtree:Hiểnthịtấtcảcácthưmụckểcảthưmụccon
o Xp_loginconfig:Lấythôngtinvềchếđộbảomậttrênserver
o Xp_makecab:ChophépngườisửdụngtạocáctậptinlưutrữtrênServer(haybấtcứtậptin nàomàservercóthểtruyxuất
o Xp_ntsec_enumdomain:liệtkênhữngdomainmàservercóthểtruyvấn
o Xp_terminate_process:chấmdứtmộttiếntrìnhvớithamsốPIDcủanó.
• Chuỗi kí tự không có dấu nháy đơn:
Nhữngnhàlậptrìnhcóthểbảovệứngdụng củahọbằngcáchloạibỏtấtcảdấunháy,thôngthườngloạibỏdấunháybằngcáchthaymộtdấunháythành2dấunháy
Ứngdụngsẽthaythế dấunháy,kếtquảtrongcâuinsertsẽnhưsau:
sởdữliệusẽlưulà“admin’ “)
Giả sử rằng ứng dụng cho phép người dùng thay đổi mật khẩu Các đoạn mãASPđượcthiếtkế đảmbảorằngngườisửdụngphải nhậpđúngmậtkhẩucũ trướckhinhậpmậtkhẩumới.Đoạnmã nhưsau:
username = escape( Request.form("username") );
oldpassword = escape( Request.form("oldpassword") );
newpassword = escape( Request.form("newpassword") );
Trang 13var rso = Server.CreateObject("ADODB.Recordset");
var sql = "select * from users where username = '" + username
+ "' and password = '" + oldpassword + "'";
rso.open( sql, cn );
if (rso.EOF)
{…
Câutruyvấnthiếtlậpmậtkhẩumớinhưsau:
sql = "update users set password = '" + newpassword + "' where username= '" + rso("username") + "'"
rso(“username”)chínhlàgiá trịusernamecóđượccâutruyvấnloginvànólà
admin’ Câutruyvấnlúcnàynhưsau:
update users set password = 'password' where username = 'admin' '
Nhờđó hackercó thể thay đổi mậtkhẩu củaadmin bằng giá trị củamình Đây
là1trườnghợp còntồntại tronghầuhết nhữngứngdụnglớn ngàynaycó sửdụngcơchếloại bỏdữ liệu.Giải pháptốt nhấtlà loạibỏnhữnggiá trịlỗi hơn làchỉnh sửa lại.Nhưngcómộtvấnđềlàcó mộtsốônhập dữliệu(nhưônhậptên)chophép nhữngkí
tựnày.Vídụ:O’Brien
Cách tốt nhất để giải quyết vấn đề nàylà không cho phép nhập dấu nháy đơn.Nếu điều này không thể thực hiện được , thì loại bỏ và thay thế như trên Trongtrườnghợpnày,cáchtốtnhấtlàđảmbảotấtcảdữliệuđượcđưavàocâutruyvấnSQL(kểcảnhữnggiátrịtrongcơsởdữliệu)phảiđượckiểmsoátmộtcáchchặtchẽ
Mộtsố ứng dụng phòng chống việc thêm câu truyvấn từ người dùng bằng cách giớihạnchiềudài của ônhập.Tuy nhiên, vớigiới hạnnày thì mộtsố kiểutấn côngkhôngthểthựchiệnđượcnhưngvẫncóchỗhởđểhackerlợidụng
Trang 14Select * from users where username=’aaaaaaaaaaaaaaa’’ and
kếtquảlàusernametrongcâulệnhcógiátrịlà:
Như vậy, có thể thấy lỗi SQL injection khai thác những bất cẩn của các lậptrìnhviênpháttriểnứngdụngwebkhixửlícácdữliệunhậpvàođểxâydựngcâulệnhSQL Tác hại từ lỗi SQL injection tùy thuộc vào môi trường và cách cấu hình hệthống Nếu ứng dụng sử dụng quyền dbo (quyền của người sở hữu cơ sở dữ liệu -owner) khi thao tác dữ liệu, nó có thể xóatoàn bộ các bảng dữ liệu, tạo các bảng dữliệumới,…Nếuứngdụng sửdụng quyềnsa(quyềnquản trịhệthống),nó cóthểđiềukhiển toàn bộ hệ quản trị cơ sở dữ liệuvà vớiquyền hạn rộng lớn như vậy nó có thểtạoracáctàikhoảnngườidùngbấthợpphápđểđiềukhiểnhệthốngcủabạn
•Tronghầuhết trìnhduyệt,nhữngkítựnênđượcmã hoátrênđịachỉURLtrước khiđượcsửdụng
• Việc tấn công theo SQL Injection dựa vào những câu thông báo lỗi do đó việcphòngchốnghaynhấtvẫnlàkhôngchohiểnthị nhữngthôngđiệp lỗichongườidùngbằng cáchthay thế những lỗi thôngbáobằng 1 trang do ngườiphát triển thiếtkế mỗikhilỗixảyratrênứngdụng
•Kiểmtra kĩgiátrịnhậpvàocủangườidùng,thaythế nhữngkítựnhư‘; v v Hãyloạibỏ các kí tự meta như “',",/,\,;“ và các kí tự extendnhư NULL, CR, LF, trongcácstringnhậnđượctừ:
•Dùngthuậttoánđểmã hoádữliệu
Kiểm tra tính đúng đắn củadữ liệu là 1vấn đề phức tạp và thường chưa đượcquan tâm đúng mức trong các ứng dụng Khuynh hướng của việc kiểm tra tính đúngđắn của dữ liệu khôngphải làchỉ cần thêm mộtsố chức năng vàoứng dụng,mà phảikiểmtramộtcáchtổngquátnhanhchóngđểđạtđượcmụcđích
Trang 15Nhữngtómtắt sauđâysẽ bànvề việckiểm tra tínhđúng đắncủa dữ liệu,cùngvớivídụmẫuđểminhhoạchovấnđềnày.
Cóbagiảipháptiếpcậnvấnđềnày:
1)Cố gắngkiểmtravàchỉnhsửađểlàmchodữliệuhợplệ
•Giảipháp2:bịvôhiệutrongcáctrườnghợpnhưgiảipháp1làdo:
-Dữliệubấthợp lệluônluônthayđổivàcùngvớiviệcpháttriểncáckiểutấncôngmới
•Giảipháp3:tốthơnhaigiảiphápkia,nhưngsẽgặpmộtsốhạnchếkhi càiđặt
- Cách bảomậttốt nhấtlàkết hợp cảgiảipháp 2và 3 Mộtvídụ chosựcầnthiếtkết hợp 2-3làdấunối giữahọ vàtên “QuentinBassington-Bassington”phải chophépdấugạchngangtrongbộđịnhnghĩadữliệuhợplệ,nhưngchuỗikítự“ “làmộtchuỗi
kítựđặcbiệttrongSQLserver
- Vídụnếucóbộlọcđể:
+Lọcbỏnhữngdữliệubấthợplệnhư‘ ‘,’select’và‘union’
+Mộthàmkiểmsoátđểloạibỏdấunháyđơnthìcóthểđốiphónhưsau
uni’onse’lect
@@version-‘ Mộtsốcáchcàiđặtcácchứcnăngkiểmtradữliệucơbản
•Cách1:Từchốidữliệubấthợplệ
•Cách2:Thaythếdấunháyđơn
•Cách3:Chỉchấpnhậndữliệuhợplệ
ĐâylàmộtdanhsáchcáccôngviệccầnlàmđểbảovệSQLserver:
•Xácđịnhcácphươngphápkếtnốiđếnserver:
+ Dùngtiện ích Network Utility để kiểmtra rằng chỉ có các thư việnmạng đangdùnglàhoatđộng
•Kiểmtratấtcảcác tàikhoảncótrongSQLServer
+ Chỉtạo tàikhoảncóquyềnthấpchocácứngdụng
Trang 16+ Loạibỏnhữngtàikhoảnkhôngcầnthiết
+Đảmbảorằngtấtcảtàikhoảncómộtmậtkhẩuhợplệ,…
•Kiểmtracácđốitượngtồntại
+Nhiềuextendedstoredprocedurecóthể đượcxoábỏmộtcáchantoàn
Nếu điều này được thựchiện, thì cũng nênxem xét việc loạibỏ luôn những tập tin.dllchứamã củacácextendedstoredprocedure
+Xoábỏtấtcảcơsởdữliệumẫunhư“northwind”và“pubs”
+ Xóa các stored procedure không dùng như: master xp_cmdshell, xp_startmail,xp_sendmail,sp_makewebtask
•Kiểmtranhữngtàikhoảnnàocóthểtruyxuấtđếnnhữngđối tượngnào
+ Đối vớinhững tài khoảncủa mộtứng dụng nào đó dùng để truyxuất cơ sởdữliệu thì chỉ được cấp nhữngquyền hạn cần thiết tối thiểu để truy xuất đếnnhững đốitượngnócầndùng.Kiểmtralớpsửachữacủaserver
+ Có mộtsố cáchtấn công như “bufferoverflow”, “format string”thường chúýđếnlớpbảovệnày
•Kiểmtracácphiênlàmviệctrênserver
• Thay đổi "Startup và chạy SQL Server" ở mức người dùng quyền hạn thấp trongSQLServerSecurity
-Songsongđólàcôngviệccủangườiquảntrịmạng
Cầncócơchế kiểm soátchặtchẽ vàgiới hạnquyềnxửlídữ liệuđến tàikhoảnngười dùng mà ứng dụng web đang sử dụng Các ứng dụng thông thường nên tránhdùngđếncácquyềnnhưdbohaysa.Quyềncàngbịhạnchế,thiệthại càngít
Ngoàirađểtránh các nguycơtừSQL Injectionattack, nênchúýloạibỏbất kìthông tin kĩ thuật nào chứa trong thông điệp chuyển xuống cho người dùng khi ứngdụngcólỗi.Cácthôngbáolỗi thôngthườngtiếtlộcác chitiếtkĩthuậtcóthể chophép
kẻtấn côngbiếtđượcđiểmyếucủahệthống
Trang 172.2 Local Attack
Local attack là một trong những kiểu hack rất phổ biến và có mức độ nguyhiểm rất cao Đối một web server thông thường khi bạn đăng ký một tài khoản trênservernàođóbạnsẽđược cấpmộttài khoảntrênserver đóvàmộtthưmục đểquảnlýsitecủamình.Vídụ :tenserver/tentaikhoancuaban.Và nhưvậy cũngcómộttài khoảncủa người dùng khác tương tự như : tenserver/taikhoan1.Giả sử tài khoản1 bị hackerchiếm được thì hacker có thể dùng các thủ thuật,các đoạn scrip,các đoạn mã lệnh đểtruy cập sang thư mục chứa site của bạn là tenserver/taikhoancuaban Và cũng theocáchnàyhackercóthể tấncôngsangcác sitecủangườidùngkhácvàcóthể lấythôngtin admin,database,các thông tin bảo mật khác hoặc chèn các đoạn mã độcvào trangindexcủasitebạn.Dạngtấn côngtrêngọilàLocalAttack
Thông thường nhất, Local Attack được sử dụng để đọc lấy thông tin config từvictim,sauđódựavàothôngtinởconfigvàmụcđíchcủahackerđểpháhoạiWebsite
ĐểthựchiệntấncôngLocalAttack,tùytheocáchthứccủahackermàcónhữngcáchLocal khác nhau.Thông thường thì các hacker thường sửdụng các đoạn lệnhđểtấncôngvàodatabase
Trước tiên phải có một con PHP/ASP/CGI backdoor trên server Backdoor thì
córấtnhiều loạikhácnhau nhưngphổbiếnnhấtlàphpRemoteView (thườngđượcgọi
là remview) R57Shell, CGITelnet, C99,…Tiến hành upload các công cụ ở trên lên,thườnglàcácconshellnhưR57,C99,…
Uploadmộttrong nhữngcôngcụđó lênhost(Thường thìchúngtasửdụng cácconshellR57,C99, vìnómạnhvàdễsửdụng)
Đểcóhostchúngtacónhiều cách:
+Muahostngaytrênserver
+ Hack một trang bị lỗi và upload shell lên (thường thì hacker sử dụng SQLInjectionđểhackmộttrangwebvàchiếmtàikhoảnadmincủatrangwebđóvàuploadcácconshelllên)hoặckhaitháclỗiinclusion
+ Search backdoor (Vào google.com search keyword: <?phpRemoteView?> ,r57Shell ) Vói cách này thì hầu hết các con shell là của các hacker đã sử dụng vàchưabịxóa,nếuđượcthìchúngtanênuploadchochúngtamộtconshellkhác
Trang 182.1.2.2.Tiến hành Attack
Saukhi đã upload được shell code lên một servernào đó Hacker bắt đầu tìmcácwebsite cùngservervới websitechứashellcode,thôngthường cácHacker thường
sửdụngReverseIpdomainmàHackerđãuploadshellđểxemcácwebsitecùngserver
Saukhitìmđượcdanhsáchwebsite,lầnlượtcheckxemsitenàobịlỗivàcóthểlocalsangđược
CáclệnhthườngdùngtrongshellđểLocalAttack
Xemtêndomaintrêncùngmộthost:
ls -la /etc/valiases
cd /etc/vdomainaliases;ls –lia
Trường hợp đặc biệt khi không thể xem user nằm cùng host thì ta thêm && vào
cd /etc/vdomainaliases && ls –lia
Muốnbiếttênuserthìdùnglệnh:
cat /etc/passwd/
Hoặc:
less /etc/passwd
Localsangvictim, tứclàdichuyểnsangsite khác
Muốn biết tên user cần local sang thì chúng ta sử dụng Reverse Ip để lấy danh sáchuser trêncùng một server.Muốn biết user đó có tồn tại hay không chúng ta mở trìnhduyệt web lên và đánh đoạn : Ip của server/~ tên user (Ví dụ :203.166.222.121/~doanchuyennganh) Nếu trình duyệt hiện lên trang index củawebsitethìtức làuserđótồntại
+Xemnộidungcủafile:
cat /home/tên user cần local/public_html/index.php
Hoặc
Chúngtamuốnxemconfigcủa1diễnđàndungmãnguồnVbulletinthìdung:
ln -s /home/tên user cần local/public_html/forum/includes/config.php
doanchuyennganh.txt
Với doanchuyennganh.txt ở đây là file chúng ta tạo ra trên host của chúng ta để xemfile của người khác Nếu không sử dụng được các lệnh trên tức là server đã disablechứcnăngđó