You are on page 1of 1

Thay đổi ID để xem được

resource của tài nguyên khác ví


dụ detail_user?id=X, giá trị X là
giá trị ID của một user trong hệ
thống
HTTP Tamper
Firewall lọc các request ở
method GET, nhưng cùng chức
năng đó với phương thức POST
thì lại không bị. Hay xảy ra ở
các modern framework.
Script nằm trong Parameter DOM XSS
Script nằm trên URL Reflected XSS
Script nằm trong Database Stored XSS (Nguy hiểm) Tham khảo https://
www.owasp.org/index.php/
Loại bỏ script tags (JS, HTML) Testing_for_HTTP_Parameter_p
Encode dữ liệu dưới dạng HTTP Parameter Pollution ollution_(OTG-INPVAL-004)
HTML Encoding Bypass SQL Injection
HTTP Header: X-XSS- Khắc phục (Front-End và Back- Bypass XSS
Protection: 1 (chỉ áp dụng cho end)
trình duyệt sử dụng nhân Trong tệp tin config
Chrome) Thông tin lập trình viên (email,
Sử dụng Token cho mỗi XSS (Cross Site Scripting) Trong comment code username,..)
Request Tài khoản test
Đánh cắp session/cookies
Trong mã nguồn Mã hoá code
Chèn keylogger
Trong code Làm rối code (Obfuscate) trước
Phát tán mã độc khi release hoặc là deploy lên Các công cụ
Sensitive Information Exposed Production
Kết hợp với lỗi CSRF để khai Mục đích
thác các điểm yếu của ứng Cần xoá bỏ các thông tin nhạy
dụng cảm trước khi release

Khai thác lỗ hổng trình duyệt .git folder (ví dụ http://


(End-user) test.local/.git)

Sử dụng XSS Cheat-Sheet Khai thác Directory Listing Công cụ: dirsearch (python3)

Các reqest có nhiều data trả về Lựa chọn những thông tin trả về
Response API trả về
hợp lý. Không trả về full Object
Đoán được số cột trả về (sử
Union https://exploit-db.com
dụng lệnh ORDER BY <số cột>
CVE Phải cập nhật bản vá (Nâng cấp
Information_schema Khai thác thông tin Version
hoặc Patch)
Dấu hiệu phát hiện: Nhiều
request trong Logs. Outdate Phải cập nhật
True-False
Dữ liệu trả về ít, chỉ có 2 giá trị Download từ nguồn tin cậy
là True/ False Install (hãng)

Phát hiện: Performance tăng Check-sum trước khi sử dụng


Web Framework
Sử dụng hàm sleep(), wait() Blind Encryption
Time Based
Sử dụng heavy query: Tính toán CSRF
các số lớn.
Tìm miêu tả sử dụng của các Filter XSS
Phát hiện: Error Logs nhiều Document / Guide tính năng phục vụ cho việc Filter Injection
Error Based Security
Sử dụng các hàm ví dụ GROUP Validate input (Email, Phone
BY, CONVERT, HAVING BY Number, CC Number,..)
Sử dụng kí tự đặc biệt Authorization
Kiểm tra giá trị trả về Xác định có bị lỗi hay không Dễ phát triển
sqlmap Sử dụng các tool khai thác Ưu điểm
Dễ scale dọc / ngang
Cách khai thác SQL Injection Micro-service
Đoán câu query trong mã nguồn Khó vận hành
Tạo một câu query hợp lệ Nhược điểm
Khó quản lý
(Payload)
Injection MySQL
Khai thác
Maria DB
Escape String T-SQL
MS SQL Server
Ép kiểu dữ liệu (Chỉ dùng cho
tham số là số) SQLite
Binding Parameter File
Sử dụng Procedure hoặc MongoDB Port 27017
Stored, hoặc Function
Redis
Cách khắc phục NoSQL
Cloudflare
Free Memcached
Sử dụng Web Application
Mod_Security
Firewall ElastichSearch
Commercial
P-SQL Oracle
Mã hoá dữ liệu input, generate
Cài đặt từ đúng nguồn
ID Number,.. Install
Checksum trước khi cài đặt
Sử dụng Token
Xoá bỏ các tài khoản mặc đinh
Thiết lập quyền trên database
Hạn chế rủi ro Mật khẩu không nằm trong danh
Xem thêm phần MySQL
sách đoán được (phổ biến)
Trong code có sử dụng một ứng
Database Thiết lập mật khẩu Chữ, số, kí tự đặc biệt, HOA,
dụng binary của hệ thống (ping, Độ phức tạp
Mật khẩu đủ mạnh thường
cmd, mail,..) Command Injection (RCE -
Remote Code Execution) Input Validation Độ dài > 8-12 kí tự
Giới hạn giá trị truyền vào
Cách khắc phục Xác định IP Source, chỉ được
Validate
Account phép kết nối tới thay vì ANY
Configuration
XML (XPATH) Injection hoăc % (với MySQL)
Sử dụng một hệ thống bên Chỉ cho phép các quyền cơ bản
ngoài để truy cập hoặc thao tác (Insert, update, delete, excute,..)
với một chức năng bên trong
Một user thì làm việc với 1
Thiết lập SOP Thiết lập Role / Permission database
Lỗi xảy ra ở Client-site (Trình CSRF Không chạy quyền root / sa
duyệt)
Không làm việc với FILE
Cách khắc phục
Kiểm tra chính xác hostname
Transport Sử dụng SSL/TLS
abc.com để tránh bị bypass
Kiểm tra HTTP Referer hợp lệ
dưới dạng Chỉ bind Port vào địa chỉ Local
abc.com.attacker.com Listen (Bind Port)
hoặc Loopback (127.0.0.1)
Buffer Over Flow Ví dụ tìm kiếm ElastichSearch:
Sử dụng công cụ https:// port:9200 + country:"VN"
Upload backdoor lên hệ thống Exposed sensitive data shodan.io để tìm kiếm dữ liệu rò
rỉ MongoDB: port:27001 +
Đổi đuôi file về dịnh dạng .php,..
Architecture country:"VN"
Kết hợp Directory Traversal File-name
Lỗi trả về không nên quá chi tiết
trong File name, ví dụ: ../test.jpg
Không show toàn bộ lỗi của ứng
Content-type của HTTP Request
Bypass MVC Xử lý lỗi dụng
Header
Chỉ nên trả về trạng thái lỗi
Chỉ kiểm tra header của file File-type (Mine-type) Web Sercurity chung chung
dưới dạng Binary. Append nội
dung backdoor vào dưới cùng Tomcat
của file.
NginX
Cần validate cả 2 giá trị file- Vendor
name và file-type IIS
Upload File
Sử dụng Token, ngăn chặn việc Apache
flood data (upload liên tục) Làm giả (Fake)
Web Server
Đổi tên của tất cả các tệp tin Khắc phục Version Ẩn thông tin
được upload lên về 1 định dạng
Tránh bị khai thác thông tin, tìm kiếm CVE https://exploit-db.com
Thiết lập bằng .htaccess Không cho phép thực thi
(execuable) với file được upload Customize lại thông tin trang
Thiết lập trong cấu hình Web báo lỗi
Server lên Debug off
Tắt tính năng thông báo lỗi
Thiết lập cấu hình đúng cho
định dạng file cần thực thi. Để Set Proxy cho trình duyệt
Lưu ý với các Web Server là
tránh trường hợp thực thi (127.0.0.1:8080)
Proxy (NGinX)
test.jpeg/index.php thì sẽ xử lý
Certificate Authority (CA)
file jpeg như là một file PHP
Repeater: Mô phỏng họat động
Download file bất kỳ trong hệ
của HTTP Request/ Response
thống
Intruder: Tạo nhiều HTTP
Sử dụng Directory Traversal Cách khai thác
Request theo một pattern nào
File Inclusion đó (Dictionary, Brute force,..)

Sử dụng token Features Decoder: Decode hex/base64/


Burp Suite Community urlencode
Sử dụng whitelist Inline Proxy
Comparer: So sánh sự khách
Tắt tính năng Directory Listing nhau của HTTP Request hoặc
(Index) Response
Sử dụng các bộ lọc có sẵn của Scanner:
Framework
Download File Intercept
Sử dụng hotlink. Sử dụng token Khắc phục
để truy cập Thêm những Website mình cần
HTTP Protocol Scope kiểm tra, phục vụ cho filter
Tên file được gen ngẫu nhiên, History HTTP Proxy
khó đoán
Ngăn truy cập trực tiếp vào file Filter HTTP Proxy
Viết một module trong việc wrap
lại tính năng download. Nhưng ZAP OWASP
cần phải cẩn trọng, khả năng bị
Thiết lập giá trị domain bên ngài
khai thác Directory Traversal
mà sử dụng tài nguyên của
Phát tán mã độc, nội dung độc Header Same Origin Policy (SOP) mình
hại Rủi ro Nếu thiết lập Accept ALL (*) thì
Thực thi Web Shell sẽ bị tấn công CORS

Dùng để bypass, vượt qua Cần xác định rõ vai trò của từng
đường dẫn được thiết lập trong Request / Response method trong các module. Tránh
GET/POST/Delete
mã nguồn Method trường hợp lợi dụng việc này để
Directory Traversal Bypass Firewall
Sử dụng bộ lọc loại bỏ các kí tự
cho các đường dẫn tương Khắc phục RESTFul
đối ../,./
Trả về mã lỗi đúng: 500 khi có
HTTP Basic Authentication Status lỗi, 200 thành công, 403 khi bị
chặn
Web Form (Trang quản trị)
CVE
Single Sign On (SSO)
Version
AD Thư viện sử dụng
Tích hợp với các hệ thống khác Công cụ: https://
LDAP HTTPS www.ssllabs.com/ssltest/
Mật khẩu không nằm trong danh Expired của Certificate
sách đoán được (phổ biến)
Configuration sử dụng tool
Chữ, số, kí tự đặc biệt, HOA, Thiết lập mật khẩu https://ssl-config.mozilla.org/
Độ phức tạp
thường Mật khẩu đủ mạnh
Nếu ứng dụng chỉ hoạt động ở
> 8-12 kí tự Độ dài subdomain a.b.com thì không
Scope (Path/ Domain)
Google Capcha Sử dụng Capcha đủ mạnh nên set giá trị Domain trong
cookie là *.b.com
Sử dụng thêm Token cho mỗi
request đăng nhập Expired
Authentication Cookie HTTPOnly: Chỉ sử dụng cho
Email xác thực hành động reset-
mật khẩu Khả năng dò đoán Username & HTTP Request (Backend).
Luôn phải confirm 2 lần Password Javascript không gọi được
Nhập mật khẩu cũ Cookie khi set Flag này.
OTP Secure: Chỉ gửi cookie trong
môi trường làm việc với HTTPS
Tấn công bằng phương pháp
Brute Force JWT
Không nên lưu trữ mật khẩu Đủ mạnh
trong Cookie Encryption
Session Management Key mã hoá không quá dễ đoán
Không lưu trữ mật khẩu dưới
dạng Clear-text Checksum

SHA1 Lưu trữ mật khẩu Định danh hoặc xác định mỗi Hash(IP, Time, User-Agent +
session cho một người duy nhất Salt)
SHA256 Sử dụng mã hoá hoặc hàm băm
Expired: Sau bao lâu thì session
Bcrypt đủ mạnh Session bị vô hiệu hoá.
MD5 (+ Salt đủ lớn) Không nên để session lên trên
URL
Sử dụng nhiều luồng (threads)
để tạo ra nhiều HTTP Request Session nên được thay đổi ở
cùng một lúc để cùng truy cập mỗi lần đăng nhập khác nhau
và cùng muốn thay đổi dữ liệu hoặc ở mỗi trạng thái khác nhau
(có thể là 1 biến, 1 row trong
database, 1 vùng shared data, Session phải được huỷ bỏ sau
memory , etc...) khi người dùng logout hoặc thay
đổi trạng thái
Quá trình các thread thực thi
lệnh trông như 1 cuộc đua giữa Góc nhìn của lập trình viên
các vận động viên điền kinh Whitebox Sử dụng các công cụ hỗ trợ lập
Racing Condition Pentest Static Code Scan
olympic vì vậy có thể liên tưởng trình viên viết mã an toàn
đến thuật ngữ (keyword) “Race
condition”. Blackbox Góc nhìn của Hacker
Lỗi Logic
Các bài toán làm các công việc
chuyển tiền, tính toán số dư thì
nên đưa xuống tầng database
để xử lý.
synchronized
Cách khắc phục
Lock trạng thái
Làm việc với số âm
Chia cho không
Lỗi xử lý
Kiểm tra chuỗi rỗng hoặc null
Kiểm tra kiểu dữ liệu

You might also like