1. Trang chủ
  2. » Luận Văn - Báo Cáo

an ninh an toàn web

37 147 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 37
Dung lượng 818,28 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

LỜ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 2

SQL 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 3

Hì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 5

sơđã 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 7

o 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 8

cấ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 9

o 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 10

client 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 11

Hì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 12

thố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 13

var 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 14

Select * 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 15

Nhữ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 17

2.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 18

2.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đó

Ngày đăng: 31/01/2018, 10:53

TỪ KHÓA LIÊN QUAN

w