THAO TÁC TRONG HTTP HEADER

Một phần của tài liệu Xây dựng công cụ hỗ trợ quản lý quá trình phát triển đề án phần mềm gắn kết với hệ thống phần mềm Microsoft Project (Trang 37)

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” : (adsbygoogle = window.adsbygoogle || []).push({});

<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. (adsbygoogle = window.adsbygoogle || []).push({});

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. (adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Xây dựng công cụ hỗ trợ quản lý quá trình phát triển đề án phần mềm gắn kết với hệ thống phần mềm Microsoft Project (Trang 37)