Tải bản đầy đủ (.pdf) (37 trang)

Bài tập lớn môn an toàn mạng (86)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.03 MB, 37 trang )

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG
KHOA CƠNG NGHỆ THƠNG TIN

Học phần: An tồn mạng

Bài báo cáo:

Tìm hiểu về cơng cụ Cutycapt trên Kali Linux

Giảng viên hướng dẫn:
Nhóm mơn học:
Sinh viên thực hiện:
Mã sinh viên:
Số điện thoại:

TS. Đặng Minh Tuấn
02
Vũ Đường Quý
B18DCAT195
0918292201

Hà Nội 2021


MỤC LỤC
Danh mục từ khoá viết tắt ............................................................................................................................. 3
Danh mục hình ảnh ....................................................................................................................................... 4
Lời mở đầu .................................................................................................................................................... 5
Chương 1. Giới thiệu về cơng cụ Cutycapt ................................................................................................... 6
1.1. CutyCapt là gì? .................................................................................................................................. 6
1.2. Tại sao sử dụng CutyCapt? ................................................................................................................ 6


1.3. Các tùy chọn của CutyCapt ................................................................................................................ 7
1.3.1. Chức năng cơ bản........................................................................................................................ 8
1.3.2. Chức năng ảnh hưởng đến cách một trang được trả lại và hiển thị ............................................. 9
1.4. Các tính năng chính của Cutycapt.................................................................................................... 12
1.4.1. Chụp màn hình cơ bản .............................................................................................................. 12
1.4.2. Thay đổi User-agent .................................................................................................................. 13
1.4.3. Vơ hiệu hóa JavaScript ............................................................................................................. 15
1.5. Mã nguồn của Cutycapt ................................................................................................................... 16
1.5.1. Phân tích source code file .hpp ................................................................................................. 16
1.5.2. Phân tích source code file .cpp.................................................................................................. 18
Chương 2. Hướng dẫn cài đặt và sử dụng Cutycapt ................................................................................... 30
2.1. Cài đặt .............................................................................................................................................. 30
2.2 Sử dụng ............................................................................................................................................. 30
Chương 3. Các bài lab/demo ....................................................................................................................... 32
3.1. Chụp màn hình cơ bản với các định dạng khác nhau ....................................................................... 32
3.1.1. Định dạng PNG ......................................................................................................................... 32
3.1.2. Định dạng PDF ......................................................................................................................... 33
3.1.3. Định dạng JPEG ........................................................................................................................ 33
3.2. Chụp màn hình trang web sau khi thay đổi user-agent .................................................................... 34
3.3. Chụp màn hình trang web sau khi vơ hiệu hố JavaScript .............................................................. 35
Kết luận ....................................................................................................................................................... 36
Tài liệu tham khảo ...................................................................................................................................... 37

2


Danh mục từ khoá viết tắt
Từ viết
tắt
SVG

PDF
PS
PNG

JPEG
TIFF
GIF
BMP
HTML
CSS
MNG
ICO
GUI

Thuật ngữ tiếng Anh/ giải thích

Thuật ngữ tiếng Việt/ giải thích

Định dạng ảnh vector
Định dạng tài liệu di động
Định dạng Binary được phát triển bởi
PostScript
Adobe Systems
Định dạng tệp đồ hoạ raster hỗ trợ nén
Portable Network Graphics
dữ liệu nhưng khơng làm mất chất lượng
hình ảnh
Định dạng ảnh 16bit, có thể kết hợp ánh
Joint Photographic Experts Group sáng đỏ, xanh dương, xanh lá để hiển thị
hàng triệu màu

Tagged IMage File Format
Định dạng tệp hình ảnh được gắn thẻ
Graphics Interchange Format
Định dạng Trao đổi Hình ảnh
Bitmap picture
Định dạng ảnh kỹ thuật số bitmap
HyperText Markup Language
Ngôn ngữ Đánh dấu Siêu văn bản
Ngơn ngữ được sử dụng để tìm và định
Cascading Style Sheet
dạng lại các phần tử được tạo ra bởi
HTML
Multiple-image Network
Đồ hoạ mạng đa hình ảnh
Graphics
Định dạng dành cho các biểu tượng của
Icon
Microsoft Windows
Graphical User Interface
Giao diện đồ họa người dùng
Scalable Vector Graphics
Portable Document Format

3


Danh mục hình ảnh
Hình 1.1. Các tuỳ chọn của Cutycapt............................................................................................................ 7
Hình 1.2. Lệnh chụp màn hình cơ bản ........................................................................................................ 12
Hình 1.3. Kết quả trả về của lệnh chụp màn hình ....................................................................................... 12

Hình 1.4. Lệnh thay đổi user-agent ............................................................................................................. 13
Hình 1.5. Kết quả trả về của lệnh thay đổi user-agent ................................................................................ 14
Hình 1.6. Lệnh vơ hiệu hố JavaScript ....................................................................................................... 15
Hình 1.7. Kết quả trả về của lệnh vơ hiệu hố JavaScript .......................................................................... 15
Hình 1.8. Khai báo file .hpp ........................................................................................................................ 16
Hình 1.9. Khởi tạo giá trị file .hpp .............................................................................................................. 17
Hình 1.10. Định dạng dữ liệu file hình ảnh................................................................................................. 17
Hình 1.11. Các hàm xử lý hệ thống ............................................................................................................ 18
Hình 1.12. Khởi tạo file .cpp ...................................................................................................................... 19
Hình 1.13. Khởi tạo định dạng file .cpp...................................................................................................... 20
Hình 1.14. Xử lý Javascript của Cutycapt................................................................................................... 21
Hình 1.15. Hàm tạo Contructor file .cpp..................................................................................................... 22
Hình 1.16. Hàm xử lý của Cutycapt............................................................................................................ 23
Hình 1.17. Lưu file Snapshot ...................................................................................................................... 24
Hình 1.18. Chọn định dạng file ................................................................................................................... 25
Hình 1.19. Duyệt Frame với CssSelector.................................................................................................... 26
Hình 1.20. Giao diện hướng dẫn khởi tạo ................................................................................................... 27
Hình 1.21. Hàm main xử lý hệ thống ......................................................................................................... 28
Hình 1.22. Hàm main xử lý hệ thống 2 ....................................................................................................... 29
Hình 2.1. Các package cần thiết để cài đặt Cutycapt .................................................................................. 30
Hình 2.2. Cách mở cutycapt........................................................................................................................ 30
Hình 2.3. Cutycapt đã được mở .................................................................................................................. 31
Hình 3.1. Ảnh chụp website với định dạng PNG ........................................................................................ 32
Hình 3.2. Ảnh chụp website với định dạng PDF ........................................................................................ 33
Hình 3.3. Ảnh chụp website với định dạng JPEG....................................................................................... 33
Hình 3.4. Ảnh chụp website trước khi thay đổi user-agent......................................................................... 34
Hình 3.5. Ảnh chụp website sau khi thay đổi user-agent ............................................................................ 34
Hình 3.6. Ảnh chụp website sau khi vơ hiệu hoá Javascript ....................................................................... 35

4



Lời mở đầu
Trong thời đại công nghệ thông tin phát triển như hiện nay thì vấn đề về đảm bảo
an tồn, an ninh thơng tin ln được đặt lên hàng đầu, trong đó phương pháp kiểm thử an
ninh ln được sử dụng phổ biến nhất nhằm xác định các mối đe dọa trong hệ thống và các
lỗ hổng tiềm tàng của nó. Việc này vừa giúp hệ thống khỏi các nguy cơ liên quan đến bảo
mật, vừa giúp các nhà phát triển khắc phục những vấn đề còn tồn đọng trong thiết kế.
Hiện nay rất nhiều các công cụ phần mềm được ra đời nhằm thực hiện và hỗ trợ
nhiều mục đích khác nhau, trong đó có các cơng cụ chụp màn hình trang web tự động
thường được sử dụng cho các nhiệm vụ giám sát khác nhau, chẳng hạn như phát hiện vi
phạm bản quyền, vi phạm trang web và các vấn đề pháp lý và bảo mật khác. Đây cịn là
một cơng cụ hữu ích cho các nhà nghiên cứu, nhà phát triển và nhà báo, trong đó có những
cơng cụ mã nguồn mở và miễn phí có thể giúp bạn tự động hóa tác vụ tạo ảnh chụp màn
hình trang web như CutyCapt, wkhtmltoimage, Firefox, PhantomJS và Pageres-CLI.
Sau khi được học mơn “An tồn mạng nâng cao” do thầy TS. Đặng Minh Tuấn tận
tình giảng dạy, với mong muốn tìm hiểu sâu hơn về các kiến thức của môn học cũng như
vận dụng các kiến thức đã học vào thực tế, em xin chọn chủ đề “Tìm hiểu về công cụ
Cutycapt trên Kali Linux”. Trong phần báo cáo này em sẽ trình bày 1 số phương pháp sử
dụng Cutycapt để chụp hình ảnh website với các tuỳ chọn và định dạng ảnh khác nhau mà
không cần tải trước website bằng trình duyệt.

5


Chương 1. Giới thiệu về công cụ Cutycapt
1.1. CutyCapt là gì?
CutyCapt, được viết bởi Bjorn Hohrmann, là một tiện ích dòng lệnh dùng để ghi lại
kết xuất Webkit cho một trang web và lưu kết xuất đó dưới dạng tệp SVG, PDF, PS, PNG,
JPEG, TIFF, GIF hoặc BMP.

Về cơ bản, nó là một chương trình cho phép chụp ảnh màn hình của một trang web
và lưu nó dưới dạng một trong các loại tệp được liệt kê ở trên. Cutycapt là một cơng cụ khá
đơn giản, tuy nhiên cũng có khá nhiều tùy chọn có thể thiết lập khi sử dụng.

1.2. Tại sao sử dụng CutyCapt?
Có thể đơi khi bạn muốn xem trước website trông như thế nào mà không cần phải
đợi mọi thứ tải trong trình duyệt. CutyCapt cung cấp cho bạn khả năng thực hiện điều này
từ dòng lệnh và thực hiện khá tốt công việc hiển thị trang. Có những cơng cụ khác thực
hiện chức năng tương tự, nhưng việc hiển thị trang của chúng không phải lúc nào cũng tốt.
CutyCapt là một công cụ xuất sắc trong chức năng này.
Trước khi chúng ta đi sâu vào chương trình, tơi muốn trình bày ngắn gọn Webkit là
gì. Webkit là một cơng cụ kết xuất của trình duyệt, có nghĩa là khi bạn u cầu một trang
trong trình duyệt, công cụ kết xuất sẽ lấy tất cả HTML, CSS, Javascript và bất kỳ thứ gì
khác tải cùng với trang và hiển thị nó lên màn hình của bạn. Webkit chỉ là một trong nhiều
công cụ đang được sử dụng và mỗi trình duyệt có một cơng cụ cụ thể được sử dụng.
Ví dụ: Webkit được sử dụng bởi trình duyệt Safari, trong khi Google Chrome sử
dụng một trình duyệt gọi là Blink, Firefox sử dụng Gecko và Internet Explorer sử dụng
Trident. Bây giờ chúng ta đã trình bày các khái niệm cơ bản về công cụ kết xuất là gì, hãy
cùng xem các tùy chọn có sẵn cho CutyCapt.

6


1.3. Các tùy chọn của CutyCapt

Hình 1.1. Các tuỳ chọn của Cutycapt
Để hiểu đầy đủ những gì hầu hết các tùy chọn này làm, cần phải có hiểu biết cơ bản
về cách các yêu cầu HTTP hoạt động và cách mỗi phần của mã ảnh hưởng đến cách một
trang được hiển thị, Javascript ảnh hưởng đến trang như thế nào, v.v…
Có thể thấy, có khá nhiều tùy chọn có sẵn và về cơ bản chúng có thể được chia thành

hai loại - loại ảnh hưởng đến chức năng cơ bản của chương trình và loại ảnh hưởng đến
cách một trang được trả lại và hiển thị.

7


1.3.1. Chức năng cơ bản

--help
Hiển thị tóm tắt các tùy chọn.

--url = <url>
URL cần lấy (http: ... | tệp: ... | ...)

--out =
Tệp đích (.png | pdf | ps | svg | jpeg | ...)

--out-format = <f>
Giống như phần mở rộng trong --out, ghi đè heuristic

--min-width = <int>
Chiều rộng tối thiểu cho hình ảnh (mặc định: 800)

--min-height = <int>
Chiều cao tối thiểu cho hình ảnh (mặc định: 600)

--max-wait = <ms>
Đừng đợi nhiều hơn (mặc định: 90000, vô hạn: 0)

8



--delay = <ms>
Sau khi tải thành công, hãy đợi (mặc định: 0)
--print-backgrounds = <on | off>
Hình nền trong đầu ra PDF / PS (mặc định: tắt)

--zoom-factor = <float>
Hệ số thu phóng trang (mặc định: khơng phóng to)

--zoom-text-only = <on | off>
Có chỉ thu phóng văn bản hay khơng (mặc định: tắt)

--http-proxy = <url>
Địa chỉ cho máy chủ proxy HTTP (mặc định: khơng có)

1.3.2. Chức năng ảnh hưởng đến cách một trang được trả lại và hiển thị

--user-style-path =
Vị trí của tệp biểu định kiểu người dùng, nếu có

--user-style-string = <css>
Quy tắc kiểu người dùng được chỉ định dưới dạng văn bản

9


--header = <name>: <value>
Tiêu đề yêu cầu; có thể lặp lại; một số không thể được thiết lập


--method = <get | post | put>
Chỉ định phương thức yêu cầu (mặc định: get)

--body-string = <string>
Nội dung yêu cầu chưa được mã hóa (mặc định: khơng có)

--body-base64 = <base64>
Nội dung u cầu được mã hóa Base64 (mặc định: khơng có)

--app-name = <name>
Tên ứng dụng được sử dụng trong Tác nhân người dùng; mặc định là
khơng có

--app-version = <version>
Phiên bản ứng dụng được sử dụng trong Tác nhân người dùng; mặc định
là không có

--user-agent = <string>
Ghi đè tiêu đề Tác nhân người dùng Qt sẽ đặt

10


--javascript = <on | off>
Thực thi JavaScript (mặc định: bật)

--java = <on | off>
Thực thi Java (mặc định: không xác định)

--plugins = <on | off>

Thực thi plugin (mặc định: không xác định)

--private-Browse = <on | off>
Duyệt web riêng tư (mặc định: khơng xác định)

--auto-load-images = <on | off>
Tải hình ảnh tự động (mặc định: bật)

--js-can-open-windows = <on | off>
Tập lệnh có thể mở cửa sổ? (mặc định: khơng xác định)

--js-can-access-clipboard = <on | off>
Tập lệnh clipboard priv (mặc định: không xác định)

11


1.4. Các tính năng chính của Cutycapt
1.4.1. Chụp màn hình cơ bản
Hãy bắt đầu với chụp màn hình cơ bản. Cú pháp lệnh sẽ là:
cutycapt –url = targeturl –out = filename để lưu dưới dạng

Hình 1.2. Lệnh chụp màn hình cơ bản
Chúng ta có thể sử dụng lệnh "display" để mở hình ảnh và xem CutyCapt đã làm được gì.

Hình 1.3. Kết quả trả về của lệnh chụp màn hình
Mọi thứ trên trang được hiển thị khá chính xác.
12



1.4.2. Thay đổi User-agent
CutyCapt cung cấp cho bạn khả năng thay đổi user-agent được gửi trong yêu cầu
HTTP. Một số trang web có các phiên bản trang khác nhau cho người dùng xem trang trên
PC so với một số loại thiết bị di động. Chúng tôi sẽ thiết lập user-agent để hiển thị như thể
chúng tôi đang yêu cầu trang web từ điện thoại Samsung Galaxy S5. Hãy xem nó trơng
như thế nào.

Hình 1.4. Lệnh thay đổi user-agent
Và hình ảnh…

13


Hình 1.5. Kết quả trả về của lệnh thay đổi user-agent
Trơng khác với trang gốc, phải khơng? Đây có thể là điều tốt với dân pen-tester.
Nếu đang thực hiện pen-test ứng dụng web, bạn có thể thấy rằng phiên bản di động của các
trang web có các điểm yếu về bảo mật mà trang web thơng thường khơng có. Ln luôn là
một ý tưởng hay để xem liệu các trang khác nhau này có tồn tại hay khơng.
Lưu ý nhỏ là bạn có thể thực hiện loại kiểm tra tương tự này từ trình duyệt của mình.
14


Sử dụng Firefox, hãy cài đặt tiện ích bổ sung User-Agent Switcher, cho phép bạn
thay đổi chuỗi User-Agent được gửi cùng với u cầu HTTP.

1.4.3. Vơ hiệu hóa JavaScript
Bây giờ, hãy xem trang trông như thế nào nếu chúng ta tắt Javascript. Cú pháp:

Hình 1.6. Lệnh vơ hiệu hố JavaScript
Và hình ảnh…


Hình 1.7. Kết quả trả về của lệnh vơ hiệu hoá JavaScript

15


Bạn có thể thấy điều gì sẽ xảy ra với giao diện và chức năng của một trang web khi
JavaScript bị tắt. Đây là một điều tốt khác nên làm khi bạn đang thực hiện kiểm tra ứng
dụng web. Nó có thể dẫn đến một lỗ hổng.
Vì vậy, đó là cách hoạt động nhanh chóng của CutyCapt. Bạn cũng có thể làm những
việc khác như thay đổi phương thức HTTP được sử dụng, thay đổi dữ liệu tiêu đề và tắt
các plugin cho một trang. Hãy thử với nó và chú ý cẩn thận đến cách một trang được hiển
thị khi bạn “phá vỡ” một số chức năng được tích hợp sẵn.

1.5. Mã nguồn của Cutycapt
1.5.1. Phân tích source code file .hpp
File CutyCapt.hpp là tập tin viết bằng ngôn ngữ lập trình C++. Nó chứa tệp tiêu đề
của mã nguồn CutyCapt nằm trong một chương trình nào đó. Ngồi ra, tập tin .hpp còn
lưu trữ các kiểu dữ liệu và các tham số.
Khai báo thư viện

Hình 1.8. Khai báo file .hpp

16


Hàm thiết lập giá trị đầu vào cho phương thức

Hình 1.9. Khởi tạo giá trị file .hpp


Định dạng kiểu file trong hệ thống

Hình 1.10. Định dạng dữ liệu file hình ảnh

17


Các hàm xử lý và các biến sử dụng:

Hình 1.11. Các hàm xử lý hệ thống

1.5.2. Phân tích source code file .cpp
Trong quá trình xử lý hệ thống file .cpp sẽ chứa đoạn mã thực thi của chương trình
cutycapt. Cutycapt cần thiết lập thư viện đầu vào cũng như phương thức xử lý của Network,
SVG, WEBKIT, GUI, CORE system. Ngoài ra nó cịn import những Plugin sử dụng cho
q trình sử lý của hệ thống file như JPEG, GIF, SVG, MNG, ICO.

18


Hình 1.12. Khởi tạo file .cpp

19


Từ những QString ban đầu được xử lý, hệ thống sẽ biết được file sẽ chứa định dạng
format được lưu trong 1 mảng chứa định dạng file.

Hình 1.13. Khởi tạo định dạng file .cpp


20


Từ dữ liệu đầu vào của QWebFrame là QString CutyPage sẽ gán dữ liệu cho QString và
gán dữ liệu trả về là Null.
Trong file cịn có hàm JS Confirm, JSPrompt, JSConsoleMessage, JSAlert đây là những
phương thức xử lý JS phía UI frontend.

Hình 1.14. Xử lý Javascript của Cutycapt

21


Hàm tạo phương thức và hàm tạo instant contructor dữ liệu của Cutycapt:

Hình 1.15. Hàm tạo Contructor file .cpp

22


Hàm xử lý chính của Cutycapt:

Hình 1.16. Hàm xử lý của Cutycapt

23


Cutycapt sử dụng cơ chế lưu Snapshot lưu một “hình ảnh” tức thời về hệ thống file của
máy chủ tại một khoảng thời gian nhất định.
Snapshot được thiết kế cho mục đích lưu trữ ngắn hạn. Do đó, snapshot mới nhất sẽ ghi

đè lên image cũ hơn.

Hình 1.17. Lưu file Snapshot

24


Từ mformat đầu vào là kiểu định dạng từ lời gọi file, switch để chọn định dạng theo kiểu
định dạng từ file hệ thống.

Hình 1.18. Chọn định dạng file

25


×