Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Athena báo cáo thực tập tuần 2
1. TRUNG TÂM ĐÀO TẠO
QUẢN TRỊ MẠNG & AN NINH MẠNG QUỐC TẾ ATHENA
BÁO CÁO THỰC TẬP TUẦN II
ĐỀ TÀI
TÌM HIỂU CÁC CÔNG CỤ TẤN CÔNG
WEB APPLICATION
Giáoviênhướngdẫn:VõĐỗThắng
TrầnLâmMẫn
Sinhviênthựctập: Cao VănLực
Tuần2 :10/03/2014 – 17/03/2014
Nội dung: SQL INJECTION
2. 2
I. Tìmhiểuvề SQL ijection
1. Kháiquát SQL injection
SQL injection
làkĩtuậ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đểtiêmvào (injection) thihànhcáccâulệnh
SQL bấthợppháp (khôngđượcngườipháttriểnlườngtrước).
Hậuquả :chophépkẻtấncôngcóthểthựchiệncácthaotácxóa, sửa,.. thậmchícònchiếmđược
server đangchạy.
Lỗithườngxảyratrêncácứngdụng web cósửdụngcáchệquảntrịcơsởdữliệunhư SQL server,
MySQL, Oracle, DB2,..
Kẻtấncôngkhôngmắccônggiảmạo hay thămdòhệthống.
2. Cácdạngtấncông SQL ijection
Đểbiếtcác website cóbịlỗi SQL injection hay không ta cóthểsửdụngcácphầnmềmđể web
hoặccáccôngcụtìmkiếmnhư Google. Và dung cáctừkhóatìmkiếmnhư :“inurl: product.php?id=”.
T
ì
m
k
i
ế
m
l
ỗ
i
S
Q
L
i
n
3. 3
jection
2.1 Dạngtấncôngvượt qua kiểmtrađăngnhập
Vớidạngtấncôngnày, tin tặccóthểdễdàngvượt qua cáctrangđăngnhậpnhờvàolỗikhi dung
cáccâulệnh SQL thaotháctrêncơsởdữliệucủaứngdụng web.
Vídụcâulệnh SQL đểkiểmtralúcđăngnhập: “select * from tbl_user where name=user and
password=pass”;
Yêucầu username phảinhập username và password đúngmớiđượcđăngnhậpvào. Nhưngnếu
hacker cốtìnhnhậpvàotrường user làa’ or 1=1 -- -,thìcâutruy SQL sẽtrởthành :select * from
tbl_user where name=„a‟ or 1=1 -- - and password „ . Vìvế 1=1 luônđúngnên hacker
cóthểđăngnhậpvới username bấtkì.
2.2 Sửdụngcâulệnh select
Kẻtấncôngphảihiểuvàlơidụngcácthôngbáolỗicủahệthốngđểtìmcácđiểmyếukhởiđầuchotấncông.
Vídụđoạn code trongphp: “select * from users where id=”+$id;
Muốnlấygiátrị $id cầnphảisửdụngphươngthức gettrongphp .
Nếu hacker cốtìnhnhâpvàotrêntrìnhduyệt1‟ union select @@version,database(),3 limit 1,1-- -
thìcâutruyvấnsẽtrởthành: select * from users where id=1‟ union select @@version, database() ,
3 limit 1,1 --Vớicâutruyvấnnàynếuứngkhôngchếlọcmãlệnhtrongphpthì hacker sẽthấyđượctên
version của database đangsửdụngvàtêncủa database, mộtđiềumàngườilậptrìnhkhôngmongmuốn.
Hacker sẽtiếptụcthựchiêncáccâulệnhtruyvấnbấthợppháptiếptheođểlấytên table, column,
username, password,..Hackercóthểthấyđượcdữliệutronghệquảntrịcơsỡliệumàứngdụng web
đangchạy.
2.3Dạngtấncôngsửdụngcâulệnh insert
Thôngthườngcácứngdụng web chophépngười dung đăngkímộttàikhoảnđể login.
Saukhiđăngnhậpcóthểxemvàhiệuchỉnhthông tin củamình. SQL injection
cóthểđượcdùngkhihệthốngkhôngkiểmtratínhhợplệcủathông tin nhậpvào.
Vídụcâulệnh insert cócúphápsau:
Insert into Users (alias,email,money) values ($alias,$email,$money);
4. 4
Nếuđoạnmãtrongphplà:
$sql= “insert into Users (alias,mail,year) values(„” + $alias + “‟,” + “‟” +$email + “‟,” + “‟” +
$year + “‟)”;
Nếu hacker nhậpvàotrường alias vớinội dung như : „+Select top 1 * from Users+‟
Câulệnhtruyvấntrởthành: insert into Users (alias,email,money) values („‟ +Select top 1 * from
Users+ „‟ + „abc@gmail.com‟ + „2014‟ ).
Thìcâulệnh Select top 1 from Users cũngsẽđượcthựcthicùngcâulệnh insert.
Saukhicâutruyvấnđượcthựchiệntrên server thìtrongtrường alias của hacker sẽhiểnthịcácthông tin
của user top 1 trongbảng User. Vớicáchnày hacker cóthểthấyđượcthông tin củacác user bấtkì,
trongđóchứathông tin nhạycảmnhư password.
2.4 Dạngtấncôngsửdụng stored-procedures
Việctấncôngbằng stored-procedures sẽgâytáchạirấtlớnnếuứngdụngđượcthựcthivớiquyềnhệthống
„sa‟.
Vídụnếuthayđoạnmãtiêmvàodạng: „EXCE xp_cmdshell „cmd.exe
dirC:‟.Lúcnàyhệthốngsẽliệtkêthưmục ổ đĩa C: trên server.
Việcpháhoạikiểunàuthìthuộcvàocâulệnhđằngsau cmd.exe, đốivới server đangchạytrên Windows.
Vàcóthểdùng master..xp_cmdshellđểthihànhlệnhtừxa.
Vídụ:
Xp_availablemedia: Hiểnthịnhững ổ đĩahiệnhànhtrênmáy
Xp_dirtree: Hiểnthịtấtcảcácthưmụckểcảthưmục con
II. Các kĩthuậtphòngchống SQL injection
1. Kiểmsoátdữliệunhậpvào
Việcquantrongphòngchống SQL injection phảikiểmtracácdữliệumàngườidùngnhậpvào.
Nhưtrongphp ta cóthểdùnghàmmysql_real_escape_string().
Xâydựngmộtsốhàmđểloạibỏmốtsốkítựvàtừkhóanguyhiểmnhư: „,”,insert, select, uinion,…
2. Thiếtlập an toànchohệquảntrịcơsởdữliệu
6. 6
Mụclục
I. Tìm hiểu về SQL ijection..............................................................................................................................................2
1. Khái quát SQL injection...........................................................................................................................................2
2. Các dạng tấn công SQL ijection ..............................................................................................................................2
2.1 Dạng tấn công vượt qua kiểm tra đăng nhập.................................................................................................3
2.2 Sử dụng câu lệnh select.....................................................................................................................................3
2.3 Dạng tấn công sử dụng câu lệnh insert ...........................................................................................................3
2.4 Dạng tấn công sử dụng stored-procedures .....................................................................................................4
II. Các kĩ thuật phòng chống SQL injection............................................................................................................4
1. Kiểm soát dữ liệu nhập vào......................................................................................................................................4
2. Thiết lập an toàn cho hệ quản trị cơ sở dữ liệu......................................................................................................4