Tải bản đầy đủ (.pdf) (114 trang)

Xây dựng các ca kiểm thử an toàn thông tin cho ứng dụng web

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.59 MB, 114 trang )



i


I HC QUI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ




NGUYỄN THỊ THU HIỀN



XÂY DỰNG CÁC CA KIỂM THỬ
AN TOÀN THÔNG TIN CHO ỨNG DỤNG WEB




LUẬN VĂN THẠC SỸ CÔNG NGHỆ THÔNG TIN






Hà Nội - 2014



ii



I HC QUI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ


NGUYỄN THỊ THU HIỀN


XÂY DỰNG CÁC CA KIỂM THỬ
AN TOÀN THÔNG TIN CHO ỨNG DỤNG WEB


Ngành: Công nghệ thông tin
Chuyên ngành: Kỹ thuật phần mềm
Mã số: 60480103


LUẬN VĂN THẠC SỸ CÔNG NGHỆ THÔNG TIN


NGƢỜI HƢỚNG DẪN KHOA HỌC: TS. ĐẶNG ĐỨC HẠNH



Hà Nội - 2014



i

LỜI CẢM ƠN
c hi li cc bin TS. c Hnh, B 
 ngh phn mm, Khoa  ng i hc ,
i hc Qu 
ng dn ch bc hin lu
c gi li cc t
i hc i hc Qung
dt nhng kin thc, nhng kinh nghi
cm t trong sut thc Cao hc.
Cum bi, b 
ng nghip, nh  c
sut thi gian hc Cao hc hin luc.

H05 4



Nguyn Th Thu Hin


ii

LỜI CAM ĐOAN
n lum th  cho
ng dng webi s ng dn khoa hc ca TS. c
Hnh. Ni dung ca lu bt k u
 .


05 4


H
Nguyn Th Thu Hin


iii

MỤC LỤC

LI C i
L ii
MC LC iii
DANH MU, T VIT TT vi
DANH MC BNG vii
DANH M viii
M U 1
N 2
1.1. n trong kim th phn mm 2
1.1.1. m v kim th phn mm 2
1.1.2. m th 2
1.1.3. c kim th 3
1.2. Kim th ng dng web 4
1.2.1. m ng dng web 4
1.2.2. Hong ca mt ng dng Web 6
1.2.3. Kim th ATTT cho ng dng web 7
1.2.4. m th  7
T K CA KIM TH ATTT CHO NG DNG WEB 8
2.1. t k ca kim th ATTT 9

2.2. Tng h ATTT cho ng dng web 10
 d liu t hng SQL Injection 10
R2. X  li hng XSS 10


iv

R3. S dnh l hng CSRF 11
R4. Kim tra quyn truy cp c 12
R5. Session Hijacking 12
R6. Session fixation 12
R7. Kii file 13
 liu nhy cm 14
R9. User enumeration 15
R10. HTTP Only cookie 15
R11. Chuyuyn tip thiu thm tra 15
R12. Th  16
R13. S d 16
R14. Mt khu mnh 16
2.3. m th ATTT 17
F1. Ca kim th mc chung 19
F2. Ca kim th cho chp  t 24
F3. Ca kim th cho chm 28
F4. Ca kim th cho chi 35
F5. Ca kim th cho cha 44
F6. Ca kim th cho ch 60
F7. Ca kim th cho ch 66
F8. Ca kim th cho ch 71
F9. Ca kim th cho ch 78
F10. Ca kim th cho ch 84

F11. Ca kim th cho chng 93


v

F12. Ca kim th n d liu nhy cm 94
F13. Ca kim th cho chn mt khu 96
N D H TR 98
3.1. Minh hm th 98
3.2.  h tr 100
3.2.1. Qum th  100
3.2.2. m th vi tng cha h thng website 101
KT LUN 102
U THAM KHO 103


vi

DANH MỤC KÝ HIỆU, TỪ VIẾT TẮT
Từ viết tắt
Tiếng Anh
Tiếng Việt
XSS
Cross-site script
L hng XSS
CSRF
Cross-site request forgery
L hng CSRF
URL
Uniform Resource Locator

nh v ng nht
ATTT
Information security

HTTP
HyperText Transfer Protocol
Giao thc truyn tn
HTTPS
Hypertext Transfer Protocol
Secure
Giao thc truyn tn

HTML
HyperText Markup Language
 n
DB
Database
 d liu
SQL
Structured Query Language
 truy vu

HQL
Hibernate Query Language
  truy v  i
ng
IP
Internet Protocol
Giao thng
ID

identification
nh danh
MAC
Media Access Control
u khin truy nhng
VD
Example

DL
Data
D liu



vii

DANH MỤC BẢNG
B c bi hng XSS 11
Bng 2.2. Bng tng hng vi tng cha mt ng
dng web 18
Bm th ch cn kim tra mt l h thng 19
Bm th vp  t 24
Bm th vm 28
Bm th vi 35
Bm th va 44
Bm th v 60
Bm th vt 1 bn ghi 66
Bm th v 71
Bm th vng Upload 78
Bm th v 84

Bm th v Chuyng 93
Bm th vi ch liu nhy cm 94
Bm th vc n mt khu 96


viii

DANH MỤC HÌNH VẼ
ng d 5
ng ca mt ng dng Web 5
m th ATTT 8
 kin 98
m th ng dng web 100
3.3. Chm th cho tng chng dng web 101



1

MỞ ĐẦU
Trong th  n nay, phn mi
  a cuc s    ng  ng to l n i sng ca con
i. Bi v ht, vic kim th m bo chng phn mm
 ng. Gi c kim th phn m n
 m th      ng t   m bo bo mt phn
mm. Bi nhng n hng v bo mt nguy hi dn
nhng hu qu ng.
i ti ph cao, an ninh mng v thuc an ninh
phi truyn th bing, n an ninh quc
gia. Theo t i ph t hc

M khong 67,2 t u khong 400 t USD, ch ng sau ti phm ma
 USD) [1].
Thc trng  ti Vim n nhi
mng vc s p. Theo nhnh
c [2], hu hp ca Vit Nam
  ph ng hon thc ci
ng vc t. V  n
hu,  , kinh t c
gia. Vim bo bo mt phn m u cp thit t buc i
vi bt k phn my, vic kim th bo m u bt
bum th phn mm ca rt nhi nhu cu
thc t u v i vng
dng web m th   hng v bo mt ca ng
dng web. Sau mi s ng dn ca TS. c Hnh,
uM TH 
TIN CHO NG D. Luc c 
- : nibn
- : Thit k  kim th ATTT cho ng dng web
- Vn dng  h tr


2

CHƢƠNG 1. KHÁI NIỆM CƠ BẢN

Trong  nhn trong kim th
phn mm th 
1.1. Các khái niệm cơ bản trong kiểm thử phần mềm
c li nhn v kim th phn m
c kim th.

1.1.1. Khái niệm về kiểm thử phần mềm
Kiểm thử phần mềm [5]      t h th  n
i nhu kit qu
ca h th
Mục đích của kiểm thử phần mềm i hay khim khuyt phn
mm nhm bo hiu qu hong ta phn mm trong nhiu u kin
.
  hiKiểm thử phần mềm [6] t
tit tp hc thit k  m bc
hin th    c thit k    c hin bt c th 
  t pha quan tr   n h thng,
ng h thc h thng mng
t ra hay ch.
1.1.2. Các phương pháp kiểm thử
Trong thc tm th phn mm [6c s dng
m th m th ng (dynamic testing).
Kiểm thử tĩnh (static testing): kim th phn mi
phi duyt lc t bc s dng gi
kim tra logic, ln tng chi tin ch
ch y kin cnh, thuc t.
   k thut.
Kim th  c thc hin m ng lp
n mch kin c
m th c thc hin t ng.


3

Kiểm thử động (dynamic testing): m th c
 u tra trng c

kim th dn m th nh bng s thc hin cng kim th
hay chy m th c hong cnh,
tm tra s phn ng v h thng ti theo thi gian.
Trong kim th ng, phn mm phi thc s y. Kim th ng
bao gc vi phn mm, nh m tra xem liu ra

1.1.3. Các chiến lược kiểm thử
Trong chic kim thchiến lược kiểm thử [6] 
nh  m th h  m th hp tr  kim th h  Chi ti 
 phi.
1.1.3.1. Kiểm thử hộp đen – Black box
Mt trong nhng chic kim th quan trm th hng
d lim th h
Ma b  
c     ng h   
c hic t c mc kim th , kim th  xem
 d li  u ra ng vi mong mun n
phh th   n. Kim
th dc t n thi  n nhng ri ro chc chn.
Kim th hm th 
rm ninh phi. S d
bn s c nhng kim th ng l
m th hi
m th n mc kim tra
thc s  hing ht kim
th t rt nhiu ca kim th  kim tra mt th  
th ch cn kim tra bng 1 ca kim th duy nht    mt s phn ca
l c ki Do vy, kim th hm
,  lm t ki.
1.1.3.2. Kiểm thử hộp trắng – White box

t chic kim th i kim th h
kim th hp trng hay kim th n kh
c d liu kim th bng s kim th 


4

logic cm th  truy c lii thut
 nh thc hi m th hp
tr c kt hp vi m th h  to ra b 
kim th  nhm gim thiu ri ro.
1.1.3.3. Kiểm thử hộp xám – Gray box testing
Kim th hi ph truy cp ti c lii thut
  ng m t k   m th  m th  mc
i s dng hay mc hi d linh dng d
lit chic “hộp xám”, bu ra
 “hộp đen” n gi v h thc kim tra. S
c bit quan trng khi qum th p  Intergartion testing
gic vit bt k 
giao di kim th. Kim th h m c thit
k i chi quy i.
1.2. Kiểm thử an toàn thông tin cho ứng dụng web
nh kim th chn mm, vic kim th ng tin
cho mi ng dt v rt quan trngc bing dng
web, loi ng dc tp. ng dng web
hia nhiu hacker. Bi vy, vim b
ting du cp thi u k  v
 u t hi m th 
ng dng web.
1.2.1. Khái niệm ứng dụng web

ng dt ng dng ch s dng giao th 
 thi s d
m 
h duyt t i
         
Web.
T      thu  ng ng d    n rt
ng ng dng bng CGI (Common
c ch  kt n
d ling dc vit bng
  t nn nhiu
ngun d liu.


5

Mt ng dm:



.1. : King d
- Lm v hin th d li
 ng dng to b cc cho trang web.
- Lp ng dx a ng d x i
      nh, gi kt qu      
t b thut l, PHP hay
 c tri       M WebSphere,
WebLogic, Apache, IIS 
- Lp d li qun tr d liu (DBMS) chm qu
 lin s dng.


ng ca mt ng dng Web g, h
qun tr  d liu:

 1.2. ng ca mt ng dng Web
T       t)  c s d  Internet


6

Explorer, Netscap Navigator, Firefox       
H qun tr  d liu ph bi SQL Server, MySQL, DB2, Access 
Mt gi bo v mt h thng mc s dng
la (firewall)t h thng mc
  xem
t b lc
truy xun mt mc truy xun
m 
- c cm nhng dch v truy xu
- c cm nhng dch v t 
- Kia ch truy nhp, ca ch truy nhp
Firewall hong dc truy nhp ci s
dng
Trong k thut phn mm, mt Ứng dụng web [7] ng d
th tip cng dng web ph
bin nh  t c a m p nht
ng d t phn m
 ph bin cng d
hin thc tuyc tuyn, wiki, dio lun,
weblog, MMORPG, h qun tr ni dung, phn mm quc u

ch



    .       



1.2.2. Hoạt động của một ứng dụng Web
t s gi m 
a giao th  cho thc
thi mng t nhi 
ch u b din dch thu c
 c t nn
 d lin   v 
1 lung d linh dng theo giao thm 2 phn:
-    lii
gi


7

- n ni dung d lii v  t file
HTML, mnh, mn phim hay mn b
Vi firewall, lu 
hp l, nu k t  hng trong ng d
u dng trong vin k t t tn
t h thng mn tt (hay l
ho ng dng ca nhc
ti thng mng, h k t  li d

l h m rng s t th.
1.2.3. Kiểm thử ATTT cho ứng dụng web
Kiểm thử bảo mật web [3] m tra s m b lio v 
a h thc s t h thng hoc s d
a mt s  x 
kin thc v  bo mt, kinh nghim thc t v n
 thng website.
Vic thit lp bo mt cho mt h thng website ph thuu yu t:
bo mt v thit k, bo mt v n, bo mt v t lp c
duyt, bo mng la.
 lu  cn v bo
mn.  bo mt ca ng d
n ch y nh s a thu
ng dng. Da ng dng web, vic kim th  nh
 c b tm quyn ki th
ng ng dng k thut kim th hp trng.
1.2.4. Quy trình kiểm thử an toàn thông tin
m th ch u h th
u thit k h th m th 
i vi h
thng. T m th  thc hin kim th  i.


8

m th   1.3 [3]:
3m th ATTT
Bu
K
t

i vi h thng
m th ATTT
Thc hin kim th ATTT
N li
Sai

Tài liệu giải pháp


9

CHƢƠNG 2. THIẾT KẾ CA KIỂM THỬ ATTT
CHO ỨNG DỤNG WEB

ng dc rt nhi vic m
 gim thiu nhn xut phn mm c nhng
c v l    m b   t
nn phn mu phc: lm
th. Vim b l hng v n tri
 m bo thc hi u
c kim tra m ATTT ca mt h thng web.
2.1. Phƣơng pháp thiết kế ca kiểm thử ATTT
 thit k   m th    ng d    c
hic sau.
Bước 1:  li ATTT. 























 , 2 



 



















 , 





















.












 "SQL Injection". 





























 . 





































 .
Bước 2: 

  hng bo m    xut hin    
nhau ca mt h thng. Bi v     t ng d  
ng ch   c
 c phi.
V, 


















 , 


, li "SQL Injection"  : 

 ,
, 

, 

, 
Bước 3: 




  



 m th  ng vi cp

, vi l





 . 



















 








 ,  . 




























10

 . 























 select * from user where user = „Tên đăng nhâ
̣
p ngươ
̀
i
dng nhp‟ and pass = „Mâ
̣
t khâ
̉
u ngươ
̀
i du
̀
ng nhâ
̣
p‟ . 










Tên đăng nhâ

̣
p = abc‟ or „a‟=‟a 
 . 



 select * from user where user = „abc‟ or „a‟=‟a‟ and
pass = „Mâ
̣
t khâ
̉
u ngươ
̀
i du
̀
ng nhâ
̣
p‟ ,  . 



,





. 








 , 
















 


. 

























.
n ca ca kim th m bo  c 3. Trong
phm vi lu          
n c    kim th m nhn mnh       xut




m th ATTT cho ng dng Web.
Trong phn tip theo c  c 2.2. s tng h



ATTT, mm th 
2.2. Tổng hợp nguy cơ về ATTT cho ứng dụng web
Ph tng hp nhng v  dn mi vi ng dng
web. Mi v m 3 ph v mt ATTT ca
v ng.
R1. Tương tác với cơ sở dữ liệu tránh lỗ hổng SQL Injection
Mô tả: D liu  t c truyi dng tham s,
c s dn t d liu.
Nguy cơ: Khi truy vn t d liu, lng s d
cd lit  b mc li SQL
Injection hoc HQL Injection (nu s dng Hibernate). Bng vic li d
k t  liu trong database t 
khon admin, ly c
Phòng chống:        ruy vn SQL ph 
PrepareStatement, tt c tham s phc add b (setParamc x
dn. Vi truy vn HQL, tt c tham s phc add
b (setParamc x dn [8].
R2. Xử lý dữ liệu đầu vào tránh lỗ hổng XSS


11

Mô tả: X  d li h mi dng
 c bi  c bit trong
 d lic khi gi t
Nguy cơ: Kt qu server tr v  yi dng HTML.
Ni dung tr v ng bao gm c nh . H thng
  b mc li XSS n     li    -Site

t tng (ASP, PHP,
CGI, JSP ) nhng th HTML hay nh 
hi cho nhng ni s d
u hc vit b-
   HTML.
Phòng chống:   hn mi d
t c bit do client gn  bao g. Vin
thc hin ng hp: d liu ly ra t database khi tr v cho client. Bn cht
ca vi  ng chung trong bng 2.1. 
  thng thm [4].
Bng 2.1 c bi hng XSS
STT
Ký tự
HTML
1
"
"
2
&
&
3
'
'
4
/
/
5
<
&lt;
6

>
&gt;
R3. Sử dụng Token trong phương thức GET và POST tránh lỗ hổng CSRF
Mô tả:  d li
t, s dc to ra mp ci
t tham s c GET hom  token
  
Nguy cơ: CSRF (Cross-n quyn ca
 thc hin m  
mt me n tay ca m 
    ch quy    ch quy  thc hi 
 K ta admin truy ct
u
 bit. M nn tin
ng:


12

/>000. Tsender i gi tin, receiver i nhn tiamount 
tin chuyn. Hi i A th i
m tra sender i thng link. Tuy vy, bng
mc A ch t iframe
tt trong m
th chuyn tin t n bt k 
Phòng chốngi vu quan trng, s d
server s kiu g client, np l 
u s c thc hin [9].
R4. Kiểm tra quyền truy cập của người dùng
Mô tả: Kin c.

Nguy cơ:  thn, m 
truy c liu vic kim tra quy
c ki truy c lic quyn
(leo quyn).
Phòng chống: Kim tra quyn trong tng request g [10].
R5. Session Hijacking
Mô tả:  m bo ATTT, h thng kng
th ses
 IP, User-Agent hoa ch MAC.
Nguy cơ: K thut tp l sau
khi n thng bh gia h c
 trong cookie hay tham s URL, bin n ca form [11].
Phòng chống: Gii hn phm vi ng dng ca session ID
o Kt hp Session ID va ch ct
o Kt hp session ID vng thi

o  i h thng hay ht hiu l
thc hi hot (cookie)
o i s dng ph    i h th    session
hin th nh thng khi h 
ng lc
o Thit lp thi gian ht hiu lng h
 d
R6. Session fixation


13

Mô tả:  m bn phn mm cn to session mi sau
t khi h thng

ng hp session ca ng di. Hacker
 s dng l h n bit n/ Mt khu.
Nguy cơ: K thut t         p l
bi mt sesion ID hp l p
 th  
p l [12].
Phòng chống:
- Biện pháp 1: Phn mm cp vi mn.
Theo kiu t th
mt session ID do hacker to s to m
ng, ng dng phi hy b c cung cp bi
t co mt session ID
m
- Biện pháp 2ng nh thng. Vic to
ng d thng gii hn (ch to mt session ID mi
         khin cho nhng hacker
     p l ca h th   s dng
 [12].
- Biện pháp 3: Gii hn phm vi ng dng ca session ID
o Kt hp session ID va ch ct.
o Kt hp session ID vng th
c
o  i h thng hay ht hiu
l thc hi hot (cookie).
o i s dng ph ch  i h th 
session hin th nh
thng khi h ng lc.
o Thit lp thi gian ht hiu l    ng hp
  dng 
R7. Kiểm soát các thao tác với file

Mi ng di file cn v bo mt. Th nht, file
 thng cm b, hp l  c c
. Th hai, vch 
Vi mi lo
 [10].
File upload:


14

Mô tả: Gii hn ch nh du ca ng dng
. Kim so  
upload ti mc web hop,
th Ch \m tra phn m rng ca file
khi x .
Nguy cơ: ng s dng dc
g client, nu ng d c kii
c thc hi dn vic download ho
hp l.
Phòng chống:  m b m
vi file upload,  cn ki  file upload:
- Kin m rng ca file, ch c hin v
nh du
- Ki v  uan n c ghi file, bi ng dn file
phc lc  /, \  null
File download:
Mô tả: u tt c d li th khi
xut h thng xut ra hoc tc chia s (share). vic
thc hin ti (download) d li trong URI
request phi v th liu

nhy ct web server.
Nguy cơ:  thng tn tt xut d liu truy
vn, kt qu i d. T, ch
h  d liu ca h thng:
o  c con cc webapp.
o i v 
o p trc tic.
o : Nhng link sau s i m th
xu c:
o :8080/ams/share/report_out/exportDMHangHoa20121022090
909.xls
Phòng chống:  lit
t  c share. Vic thc hi liu
i qua  ph
R8. Mã hóa dữ liệu nhạy cảm
Mô tả: Cn n vic th liu nhy cm trong
 d liu hong truyn.


15

Nguy cơ: Khi h thng b t t 
s d liu hong truyn liu nhy cm s b l n

Phòng chống:  gim thit ATTT vi d li
ng truyn ng dng cn m liu nhy c
s d liu  dng giao thc HTTPS vng (
thng giao dch trc tuyp) [10,13].
R9. User enumeration
Mô tả: S di cho c ng hp nh

nht kh thng. Nhng h
t gia nht khu.
D th  thng.
Nguy cơ: ng ht gia nhp
t khu. D th 
 thng.
Phòng chống: S di cho c ng hp nh
t kh thng [14].
R10. HTTP Only cookie
Mô tả: u thit lp thuu
c set thu h s d
 p cookie c
Nguy cơ:    s d     p cookie c i

Phòng chống: u thit lp thu
c set thu c
 [15].
R11. Chuyển hướng và chuyển tiếp thiếu thẩm tra
Mô tả:  can thi
t ng dng du cn s dc kim tra,
m bn na ng dng. Nu
c kim tra, k t  t
phn mc hi, hoc la nt khu, hoc nhny
c
Nguy cơ:   n mm
c hi, hoc la nt khu, hoc nhy c

×