Ch ng 4: Thao tác trên tham s truy n
CH NG 4:THAO TÁC TRÊN THAM S TRUY N
cd
Thao tác trên tham s truy n là k thu t thay đ i thông tin quan tr ng trên cookie, URL hay bi n n c a form. K thu t Cross-Site Scripting, SessionID, SQL Injection, Buffer Overflow…c ng c n dùng đ n các tham s này đ hoàn thi n các b c t n công c a hacker. Có th nói các tham s truy n là đ u m i cho m i ho t đ ng c a hacker trong quá trình t n công ng d ng. Vì th đây là n i dung ch ng đ u tiênđ cđ c p trong ph n th hai, m c đích c ng là đ h tr t t h n ph n trình bày các ch ng k ti p.
I. THAO TÁC TRÊN URL
I.1. Khái ni m:
Khi nh p m t form HTML thì k t qu s đ c g i đi theo hai cách: GET hay POST. N u dùng GET, thì t t c các tên bi n và giá tr c a nó s xu t hi n trong chu i URL.
Ví d 4.I.1-1: Có m t trang web ng d ng cho phép thành viên đãđ c thay đ i m t kh u.
http://www.nganhang.com/example?user=thang&newpass=123
V i:
+ username là tên ng i c n thay đ i m t kh u. + newpass là m t kh u m i cho username
Ch ng 4: Thao tác trên tham s truy n
http://www.nganhang.com/example?user=admin&newpass=111111
Hacker đã có th thay đ i m t kh u c a admin b ng m t m t kh u m i b t kì, trong ví d này là ‘1111111’
I.2. M t s bi n pháp kh c ph c
ch ng l i ki u thay đ i n i dung m t chu i URL, ng d ng có th áp d ng bi n pháp sau:
• ng d ng s d ng c ch b ng b m (hash table). Sau khi ng i dùng ch ng th c thành công v i m t username , ng d ng s sinh ra m t khoá t ng ng. Khoá này s đ c l u trên server cùng v i bi n username trong đ i t ng b ng b m. M i khi ng i dùng k t n i đ n ng d ng, khoá và username này s đ c g i đi và đ c so sánh v i khoá và username trong b ng b m. N u t ng ng v i b n ghi trong d li u thì h p l . Còn n u không thì server bi t r ng ng i dùng đã thayđ i URL.
• Ngoài ra, v i nh ng thông tin có giá tr , c n mã hoá thông tin này tr c khi cho hi n th trên trình duy t đ tránh hacker có th s a đ i tùy ý.
II. THAO TÁC TRÊN BI N N FORM
II.1. Khái ni m
Thông tin có th đ c chuy n đ i thông qua m t bi n n c a form, g i là Hidden Form Field. Bi n n form không hi n th trên màn hình trình duy t nh ng ng i dùng có th tìm th y n i dung c a nó trong “ view source ”, vì th đây là m t
đi m y u đ hacker l i d ng b ng cách l u n i dung trang web xu ng trình duy t, thay đ i n i dung trang và g i đ n trình ch .
Ch ng 4: Thao tác trên tham s truy n
Ví d 4.II.1-1: Form g c có n i dung nh sau:
<form action="http://www.tancong.com/cuahang.pl" method="POST"> ...
<input type="hidden" name="giaca" value="99.99"> ...
</form>
N u không có s thay đ i nào thì yêu c u đ n trình ch có n i dung :
POST /cuahang.pl HTTP/1.0 ...
giaca=99.99
Nh ng n u hacker gán m t giá tr khác cho tr ng “giaca” :
<form action="http://www.tancong.com/cuahang.pl" method="POST"> ...
<input type="hidden" name="giaca" value="0.99"> ... </form> thì yêu c u s thay đ i: POST /cuahang.pl HTTP/1.0 ... giaca=0.99
Ngoài vi c thay đ i n i dung bi n n c a form, hacker còn bi n đ i n i dung các thành ph n trong form, nh chi u dài c a m t ô nh p d li u đ th c hi n vi c t n công “BUFFER OVERFLOW”, …
Ch ng 4: Thao tác trên tham s truy n
II.2. M t s bi n pháp kh c ph c
• Ch nên s d ng bi n n c a form đ hi n th d li u trên trình duy t, không
đ c s d ng giá tr c a bi n đ thao tác trong x lí ng d ng.
• Dùng bi n HTTP_REFERERđ ki m tra ngu n g c c a yêu c u g i đ n, tuy nhiên hacker có th s d ng Proxy đ che d u ngu n g c th c c a nó, vì v y c ng không nên quá tin t ng bi n HTTP_REFERER đ ki m tra.
• Ghép tên và giá tr c a bi n n thành m t chu i đ n. S d ng thu t toán mã hoá MD5 ho c m t ki u hash m t chi u khác đ t ng h p chu iđó và l u nó vào m t hidden field g i là “Chu i m u”.
Khi giá tr trong form đ c g i đi, các thao tác nh trên đ c th c hi n l i v i cùng m t khoá mà ta đnh tr c. Sau đó đem so sánh v i “Chu i m u”, n u chúng không kh p nhau thì ch ng t giá tr trong bi u m u đã b thay đ i.
• Dùng m t sessionID đ tham chi u đ n thông tin đ c l u tr trên c s d li u.
Ch ng 4: Thao tác trên tham s truy n
III. THAO TÁC TRÊN COOKIE
III.1. Khái ni m
ph n th nh t, ch ng 2, m c IV, lu n v n đã trình bày c b n khái ni m v cookie. Trong m c này, lu n v n ch trình bày cách thayđ i m t cookie.
Vì cookie là thành ph n l u tr thông tin b o m t nh t nên Cookie th ng đ c dùng đ l u gi tr ng thái cho giao th c HTTP h n là bi n n form và bi n URL. Nó còn đ c dùng đ l u tr nh ng thông tin c a ng i dùng khi s d ng ng d ng và nh ng d li u khác c a session. T t c các lo i cookie nh persistent hay non-persistent, secure hay insecure đ u có th b thay đ i b i ng i dùng và đ c g i v cho trình ch . Do đó hacker có th thay đ i n i dung cookie đ phá ho i
ng d ng.
V i nh ng công c mi n phí nh Winhex thì non-persistent cookie có th b thay
đ i n i dung. Còn SSL ch có th b o v cookie trong quá trình truy n.
Ví d 4.III.1-1: v cookie dùng đ l u tr thông tin cho ng d ng web thông tin du l ch:
Cookie: lang=en-us; ADMIN=no; y=1 ; time=10:30GMT ;
Cookie xác đnh ng i dùng này không ph i là Admin (ADMIN=no), nh ng n u hacker thay đ i tr ng này đi u gì s x y ra? Hacker có th thay đ i l i thành nh sau:
Cookie: lang=en-us; ADMIN=yes; y=1 ; time=12:30GMT ;
Ch ng 4: Thao tác trên tham s truy n
III.2. M t s bi n pháp kh c ph c
• S d ng đ i t ng session l u tr thông tin quan tr ng trên trình ch . Khi ng d ng c n ki m tra thông tin c a m t ng i dùng, ng d ng s dùng sessionID c a ng i dùngđ ch đ n thông tin c a ng i dùng đó trong cache hay c s d li u.
• Xây d ng m t c ch ki m tra n i dung c a cookie đ tìm ra nh ng giá tr không h p l t đó bi t đ c cookie đó là gi . Ví d là n u bi n c “ng i qu n tr ” đ cđ c thi t l p là đúng trong cookie, nh ng giá tr c a s th t ng i dùng trong cookie l i không gi ng nh giá tr s th t c a “ng i qu n tr ” đ c l u tr trên server.
• Ph ng pháp cu i cùng là mã hoá cookie. Có m t s ph ng pháp mã hoá nh symmetric (dùng 1 khóa duy nh t cho c mã hóa và gi i mã) hay asymmetric (mã hóa dùng 2 khóa riêng bi t, m t khóa dùng chung cho mã hóa và m t khóa riêngđ gi i mã)
IV. THAO TÁC TRONG HTTP HEADER
URL, bi n n form, cookie đ u là nh ng thành ph n l u tr thông tin mà ng i dùng thông th ng có th xem và thay đ i. Tuy nhiên, nh ng thành ph n đó đ u đ c chuy n đi thông qua HTTP Header. Vì th , m c dù HTTP Header không ph i là tham s truy n c a m t ng d ng nh ng m i thông tin đ u đ c l u tr vào nó tr c khi chuy n đi nên trong ph n này s đ c p đ n vi c thay đ i m t HTTP Header.
IV.1. Khái ni m
Thông th ng ch có trình duy t và trình ch là trao đ i HTTP Header ( xem chi ti t trong ph n th nh t, ch ng 2, m c II), còn h u h t các ng d ng web thì
Ch ng 4: Thao tác trên tham s truy n
không. Tuy nhiên, hacker có th t vi t m t ch ng trình đ đi u khi n HTTP header (nh xem n i dung, t o m i) hay s d ng các proxy mi n phí cho phép thay đ i d li u đ c g i t trình duy t. Ngoài ra hacker có th t n công tr c ti p b ng cách telnet g i HTTP Requestđ n trình ch .
Ví d 4.IV.1-1:
su-2.05# telnet localhost 80 Trying 127.0.0.1...
Connected to localhost. Escape character is '^]'. GET / HTTP/1.0
Referer: www.redhat.com/login.asp
User-Agent: <!--#exec cmd="/bin/id"-->
HTTP/1.1 200 OK
Date: Mon, 17 Dec 2001 20:39:02 GMT Server:
Connection: close
Content-Type: text/html
Ph n in đ m là n i dung hacker thay đ i.
Ví d 4.IV.1-2:
Referer header ch a URL c a trang web mà t đó yêu c u đ c g i đi. Vì th m t vài ng d ng s ki m tra thành ph n này trong header đ đ m b o r ng nó
đ c g i t trang web c a ng d ng đó. Vi c làm này dùng đ ng n ch n vi c hacker l u l i trang web xu ng máy, ch nh s a thu c tính form, phá ho i b ng cách nh m vào client side validate hay server side include, sau đó g i đi. Nh ng ph ng pháp ki m tra này s th t b i khi hacker có th s a l i Referer header đ
Ch ng 4: Thao tác trên tham s truy n
Referer: www.redhat.com/login.asp
IV.2. M t s bi n pháp kh c ph c
n gi n là không tin t ng vào HTTP header n u ch a có các bi n pháp an toàn. V i các header g i t trình ch , ch ng h n nh cookie thì có th đ c mã hoá. Còn v i các header g i t trình khách thì không nên dùng các tham s nh referer,…đ th c hi n các bi n pháp an toàn.
Nh n xét:
M i thông tin quan tr ng trao đ i gi a trình duy t và trình ch không nên l u tr d i d ng chu i thông th ng mà c n đ c mã hóa, ngoài ra nh ng thông tin này nênđ c ki m tra,đ i chi u v i d li u trong c s d li u hay trong cache c a trình ch , phòng tránh tr ng h p n i dung thông tin b sai l ch.
Bên c nhđó, vi c ki m tra d li u đúng đ n là c n thi t vì h u nh các k thu t t n côngđ u d a vào d li u nh p trên URL, bi n n form hay cookie nh ki u t n công Cross-Site Scripting trong ch ng k ti p hay SQL Injection trong ch ng 6…
Ch ng 5: Chèn mã l nh th c thi trên trình duy t n n nhân (Cross Site Scripting)
Ch ng 5
CHÈN MÃ L NH TH C THI TRÊN TRÌNH DUY T N N NHÂN
N i dung:
I. Cross Site Scripting (XSS)
II. Ph ng pháp t n công XSS truy n th ng.III. M t s WebSite tìm th y l h ng XSS.