Chủ Nhật, 1 tháng 11, 2015

Web Application Security Testing Cheat Sheet

Web Application Security Testing Cheat Sheet

DRAFT CHEAT SHEET - WORK IN PROGRESS

Introduction

This cheat sheet provides a checklist of tasks to be performed when performing a blackbox security test of a web application.

Purpose

This checklist is intended to be used as an aide memoire for experienced pentesters and should be used in conjunction with the OWASP Testing Guide. It will be updated as the Testing Guide v4 is progressed.
The intention is that this guide will be available as an XML document, with scripts that convert it into formats such as pdf, Media Wiki markup, HTML etc.
This will allow it to be consumed within security tools as well as being available in a format suitable for printing.
All feedback or offers of help will be appreciated - and if you have specific chances you think should be made, just get stuck in.

The Checklist

Information Gathering

Configuration Management

Secure Transmission

Authentication

Session Management

Authorization

Data Validation

Denial of Service

Business Logic

Cryptography

Risky Functionality - File Uploads

Risky Functionality - Card Payment

Web Service Testing

HTML 5

Error Handling

Other Formats

  • DradisPro template format on github
  • Asana template on Templana (thanks to Bastien Siebman)

Authors and contributors

Simon Bennetts
Rory McCune 
Colin Watson
Simone Onofri
Amro AlOlaqi
All above are authors of the Testing Guide v3

Related articles

OWASP Cheat Sheets Project Homepage
Developer Cheat Sheets (Builder)
Assessment Cheat Sheets (Breaker)
Mobile Cheat Sheets
OpSec Cheat Sheets (Defender)
Draft Cheat Sheets

Thứ Tư, 7 tháng 10, 2015

[HS-S1] P1 Giới thiệu XSS là gì


Hello :D bài này lâu quá rồi giờ mới có thời gian ngồi viết nhể. Hehe. Hôm nay chúng ta sẽ cùng thảo luận về XSS là gì, phương pháp rất thông dụng trong tấn công website nhé.
Đó chính là XSS. XSS là viết tắt của: Cross Site Scripting. Lẽ ra nếu viết tắt thì nó phải là CSS :( nhưng để phân biệt với CSS ngôn ngữ lập trình giao diện người dùng web nên người ta đã viết nó thành XSS.

Vậy XSS được bắt nguồn như thế nào và dùng để làm gì ?

Đầu tiên thì để tạo hứng khởi cho các bạn :D mình xin tiết lộ đó là, ngay cả Facebook, năm 2013 vừa rồi cũng có phát hiện vài lỗi XSS cực kì nghiêm trọng, mà từ đó hacker có thể dễ dàng chiếm được quyền Facebook của bạn trái phép.
XSS là phương pháp mà hacker khai thác lỗi của ứng dụng, từ đó nhập vào ứng dụng dữ liệu có chứa script độc để lợi dụng hoặc chiếm quyền trái phép của website.
Những lỗi như thế này có thể gặp ở bất cứ đâu do sơ hở của lập trình viên, như wordpress, joomla, vbb.... Tuy nhiên các bạn lưu ý rằng, thường thì bản thân những mà nguồn lớn như trên rất ít khi có bug, hoặc nếu có thì thường sẽ được phát hiện và cấp bản vá rất nhanh. Nên chủ yếu lỗi sẽ xảy ra từ các sản phẩm của bên thứ 3 như Plugins, themes....
Ví dụ về XSS. Giả sử mình lập trinh 1 ứng dụng web bình thường, trong đó có phần comment, mình lập trình cho người dùng nhập dữ liệu vào ô comment, sau đó sẽ hiển thị ở bài viết :D Wow, mọi thứ sẽ ổn khi mà người dùng nhập những đoạn text bình thường. Nhưng nếu có 1 hacker tinh quái nào đấy nhập dữ liệu như thế này:
Thì khi đó bạn vào bài viết, sẽ hiện lên 1 thông báo của javascript là "XSS ! DETECTED". Đó là ví dụ đơn giản cho việc hacker có thể nhúng javascript vào website :( Mà javascript thì có thể làm được rất nhiều việc. Tồi tệ hơn là có thể đánh cắp cookie để login trái phép (Nếu ứng dụng bảo mật ko kĩ), hoặc có thể mượn quyền của bạn để tác động tới website (Nếu như bạn là admin thì hacker có thể mượn quyền bạn để hành động như admin)....
Ngoài ra điều này có thể xảy ra ở bất cứ đâu mà người dùng có thể nhập dữ liệu vào, thậm chí là những thành phần nhạy cảm như cookie, tùy thuộc vào ứng dụng web.
Những điều này mình sẽ hướng dẫn cụ thể hơn 1 chút ở bài tiếp theo đó là Sử dụng và phòng thủ XSS. Các bạn đón đọc nha :D
Bài viết được chia sẻ tại website: DuyK.Net . Vui lòng tôn trọng tác giả cũng như tôn trọng chính bạn bằng cách không gỡ bỏ dòng chữ này khi chia sẻ lại bài viết.

CSRF là gì và Cách phòng thủ

CSRF là gì và Cách phòng thủ

CSRF là viết tắt của Cross Site Request Forgery. Nôm na hiểu ra tiếng việt thì có nghĩa là: Mượn quyền trái phép. Đây là 1 lỗi rất thường gặp, khá nguy hiểm :D và rất nhiều coder chưa có kinh nghiệm hầu như ko để ý tới vấn đề này
Độ khó: Trung bình.
Yêu cầu: Kiến thức lập trình và kiến thức về dịch vụ web  cơ bản

Hello, hôm nay là 30/4 :D có dịp rảnh rỗi tý, nhân tiện cũng viết bài mới :( lâu lắm rồi ko xuất hiện.
OK. Giờ vào vấn đề nhé :D mình sẽ nói 1 cách đơn giản và dễ hiểu bằng ví dụ như sau:
Giả sử: Ứng dụng web của bạn, nếu đăng nhập dưới quyền Admin thì sẽ có thể xóa bài viết bằng cách truy cập: http://domain.com/admin.php?xoa_bai_viet=1234
Ok, từ việc này ta sẽ đặt ra vấn đề. Sẽ ra sao, nếu bạn đang đăng nhập dưới quyền admin, mà Hacker gửi cho bạn 1 link rút gọn để dẫn tới link trên (Giả sử bit.ly/link-rut-gon chẳng hạn). Và bạn click vào mà ko biết đó là gì, sau đó vô tình chính bạn đã xóa bài viết 1234 mà ko hề có chủ ý :D
Hoặc ngay cả method http POST cũng có thể bị giả lập 1 cách dễ dàng = javascript.
Ok, từ trên, chúng ta có thể suy nghĩ rộng ra 1 vài trường hợp khác như ăn trộm tài khoản chẳng hạn. Giả sử ứng dụng web cung cấp phương thức để thay đổi email chẳng hạn. Hacker cũng có thể hướng người dùng truy cập vào địa chỉ nào đó mà ở bên trong có thực thi mã độc 1 cách bí mật mà người dùng ko biết để mượn quyền user của người dùng thực hiện hành vi trên ứng dụng web bị hack.
Ngay cả trang mạng xã hội Facebook nổi tiếng cũng đã từng mắc phải lỗi bảo mật CSRF này :D
Vậy chúng ta phải làm thế nào để khắc phục ?
Hãy suy nghĩ về việc làm thế nào để xác minh rằng, người dùng đang thực hiện hành vi chính từ ứng dụng web của bạn và ko có sự giả mạo mượn quyền !
Yes ! Đó là tạo ra 1 mã TOKEN cho mỗi người truy cập vào web của bạn, và sử dụng nó để xác minh cho mỗi hành động người dùng. Token này bạn có thể tạo ngẫu nhiên, hoặc theo quy tắc... tùy theo thuật toán bạn muốn, nhưng nó cần được lưu và gắn vào mỗi hành động của người dùng.
Quay lại việc khắc phục ví dụ đầu tiên. Khi bạn thêm vào 1 tham số GET nữa để xác minh, giả sử gọi là TOKEN, và bạn kiểm tra TOKEN của GET có khớp với TOKEN mà bạn lưu trong ứng dụng cho người dùng này hay ko, trước khi thực hiện hành động xóa.
Khi đó giả sử TOKEN bạn tạo ra cho người dùng này là: TOKEN = ABCDEF1234321 thì link xóa bài hợp lệ lúc này là
http://domain.com/admin.php?xoa_bai_viet=1234&TOKEN=ABCDEF1234321
:D Lúc này hacker sẽ phải bó tay vì hắn hoàn toàn ko thể lấy được tham số TOKEN để mượn quyền trái phép được nữa :)
Đó là cách tốt nhất và phổ biến nhất để khắc phục vấn đề này

Thứ Tư, 30 tháng 9, 2015

15 mẹo giúp sử dụng Chrome DevTools hiệu quả

15 mẹo giúp sử dụng Chrome DevTools hiệu quả

15-chrome-devtools-tips-and-tricks
Google Chrome là trình duyệt web phổ biến thường được nhiều lập trình viên sử dụng. Trong đó có nhiều tính năng hỗ trợ nổi bật như trực tiếp chỉnh sửa CSS (live-editing CSS), sử dụng console và debugger. Trong bài viết này, SSS sẽ giới thiệu đến bạn 15 mẹo giúp sử dụng Chrome DevTools hiệu quả và cải thiện quy trình làm việc tốt hơn.

1. Nhanh chóng chuyển đổi file

Nếu sử dụng Sublime Text, chắc hẳn bạn đã quá quen thuộc với overlay “Go to anything”. Tin vui là Chrome DevTools cũng có tính năng này. Bạn chỉ cần nhấn tổ hợp phím Ctrl+P (hoặc Cmd+P với máy Mac) để nhanh chóng tìm kiếm và mở bất kì file nào trong project của mình.
1

2. Tìm kiếm trong source code

Nếu bạn muốn tìm kiếm trong source code thì phải làm sao? Để tìm kiếm một chuỗi cụ thể trong tất cả các files được tải trên page, hãy nhấn Ctrl+Shift+F (hoặc Cmd+Opt+F). Phương thức tìm kiếm này cũng hỗ trợ cả trên Regular expression (Biểu thức chính quy).
2.SearchAll

3. Di chuyển tới dòng lệnh

Sau khi mở một file trong tab Sources, DevTools cho phép bạn dễ dàng đi tới bất kì dòng lệnh nào bằng cách nhấn Ctrl+G (hoặc Cmd+L) và gõ số thự tự dòng bạn muốn đến.
Hoặc theo cách khác, bạn có thể nhấn Ctrl+O (Cmd+O) rồi nhập :số thứ tự dòng cần đến.
3.JumpToLine

4. Chọn các elements trong console

DevTools console cũng hỗ trợ 1 vài hàm và biến giúp chọn nhanh các DOM element: (The DevTools console supports some handy magic variables and functions selecting DOM elements:)
  • $() – viết tắt của document.querySelector(). Trả về element đầu tiên hợp với CSS selector trong ngoặc (Ví dụ: Nếu bạn gõ $(‘div’) thì sẽ trỏ về element div đầu tiên của page).
  • $$() – viết tắt của document.querySelectorAll(). Trả về 1 chuỗi các element hợp với CSS selector trong ngoặc.
  • $0 – $4 – Khi gõ $0 sẽ hiển thị DOM element mới nhất được chọn trong bảng điều khiển element. $1 – $4 sẽ lần lượt hiển thị DOM element thứ hai đến thứ 5.
4.
Nếu muốn tìm hiểu nhiều hơn về Console commands, bạn có thể đọc thêm Command Line API.

5. Sử dụng đa dạng carets & selections

Đây là 1 tính năng tương tự Sublime Text khác. Trong khi chỉnh sửa file, bạn có thể thiết lập đa dạng carets bằng cách giữ phím Ctrl (Cmd với Mac) và click vào bất kì chỗ nào bạn muốn,  vì vậy cho phép bạn cùng lúc viết code ở nhiều dòng khác nhau.
5.MultipleSelectClick

6. Preserve Log

Bạn có thể giữ lại log trong DevTools Console thay vì xóa chúng mỗi lần load page bằng cách check vào tùy chọn ☑Preserve Log trong Tab Console. Tính năng này khá tiện dụng khi bạn muốn kiểm tra những bugs xuất hiện ngay trước khi page unload.
6.PreserveLog

7. Pretty Print {}

Chrome DevTools  cung cấp sẵn công cụ “làm đẹp” code giúp bạn định dạng những đoạn code rút gọn thành những đoạn code dễ đọc hiểu. Để làm được điều này, trong tab Sources, bạn nhấp chọn ký hiệu {} ở góc trái bên dưới file đang mở.
7.PrettyPrint

8. Device mode

DevTools cũng cung cấp trang lập trình thân thiện với điện thoại di động. Clip từ Google dưới đây sẽ giới thiệu 1 vài tính năng chính của Device mode như điều chỉnh màn hình, mô phỏng chạm cảm ứng và mô phỏng trạng thái kết nối network trục trặc (bad network connections simulator).

9. Thiết bị mô phỏng cảm biến Device emulation sensors

Một tính năng khá “cool” khác của Device Mode là cho phép lựa chọn mô phỏng cảm biến của các thiết bị di động như chạm cảm ứng màn hình hay accelerometers (gia tốc kế). Thậm chí bạn có thể giả lập vị trí địa lý của mình. Để làm được điều này, bên dưới tab Elements, bạn chọn tab Emulation -> Sensors.
9.Sensors

10. Color Picker

Khi chọn 1 màu trong Style editor, bạn có thể nhấp chuột vào color preview và pop-up picker sẽ hiện ra. Trong khi color picker đang chạy, nếu bạn rê chuột trên page, trỏ chuột của bạn sẽ trở thành một kính lúp để chọn màu chuẩn xác đến từng pixel.
10.ColorPicker

11. Force element state

DevTools cung cấp 1 tính năng giúp giả lập trạng thái CSS trên các elements như :hover :focus, giúp dễ dàng tạo kiểu cho các element này.
11.SimulateHover

12. Visualize the shadow DOM

Các textbox, button hoặc input ngoài các element cơ bản thường bị ẩn đi. Tuy nhiên, bạn có thể vào Settings -> General và chọn Show user agent shadow DOM để giúp chúng hiển thị cụ thể. Thậm chí bạn có thể tạo kiểu (style) riêng cho các textbox, button hoặc input này, giúp dễ dàng tùy chỉnh theo ý muốn.
Ví dụ: Thông thường, bạn chỉ nhìn thấy . Nhờ tính năng này, bạn có thể thấy được chuỗi code tạo nên input đó.
12.ShadowDOM

13. Chọn các occurrence tiếp theo Select next occurrence

Nếu bạn chọn 1 từ gốc bất kì, sau đó giữ Ctrl+D (Cmd+D) trong khi chỉnh sửa các tập tin trong Tab Sources, thì những từ (giống từ gốc) còn lại sẽ được chọn, giúp bạn chỉnh sửa tất cả cùng lúc.
If you press Ctrl + D (Cmd + D) while editing files in the Sources Tab, the next occurrence of the current word will be selected as well, helping you edit them simultaneously.
13.MultiSelect

14. Thay đổi định dạng màu sắc

Giữ Shift và nhấp chọn vào ô hiển thị màu mẫu để thay đổi định dạng giữa các bảng mã rgba, hsl và hexadecimal.
14.ColorFormat

15. Chỉnh sửa các tập tin local nhờ Workspaces

Workspaces là một tính năng hữu ích của Chrome DevTools, giúp công cụ này trở thành một IDE (Integrated Development Environment – Môi trường phát triển tích hợp) thực thụ. Workspaces kết nối các tập tin trong tab Sources với các tập tin trong local project, vì vậy bạn có thể chỉnh sửa và lưu trực tiếp mà không cần copy/paste (sao chép/dán) những thay đổi của mình vào text editor bên ngoài.
Để thiết lập cấu hình Workspaces, bạn vào tab Sources và nhấp chuột phải vào bất kì đâu trên panel bên trái và chọn Add Folder To Worskpace, hoặc chỉ cần kéo và thả toàn bộ project folder vào Developer Tools. Giờ thì các sub directories và tất cả files của folder được chọn đã sẵn sàng để chỉnh sửa bất kể bạn đang ở trên page nào. Thậm chí, bạn có thể liên kêys các file trong folder của mình với các file của page để  chỉnh sửa trực tiếp và lưu trữ dễ dàng hơn. To make it even more useful, you can then map files in your folder to those used by the page, allowing for live editing and easy saving.
Bạn có thể tìm hiểu thêm về Workspaces tại đây.
Dịch từ tutorialzine.com.