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

Luận văn tốt nghiệp: Tìm hiểu công cụ web craking và password craking

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 (1.47 MB, 46 trang )


Trường Đại Học Bách Khoa Hà Nội
Viện Công Nghệ Thông Tin & Truyền Thông




Tìm hiểu công cụ Web craking và
Password craking






Giảng Viên Hướng Dẫn: Ths.Đỗ Văn Uy
Nhóm 08:
Lê Ngọc Giang 20080793
Đồng Tuấn Anh 20080024
Phan Đình Thái 20083496
Trịnh Quang Hòa 20081023
Lê Quang Tiệp 20082674

Lớp: CNPM-K53

Hà Nội, 05-2012

2




Contents
Phần 1:Công cụ Web Hacking 3
I. Tổng quan 3
II. VULNERABILITY SCANNERS(máy quét lỗ hổng) 3
1) Tổng quan về máy quét lỗ hổng 4
2) Nikto 6
3) LibWhisker 13
III. Kiểm tra ứng dụng 15
1) Paros Proxy 15
2) Burp Proxy 22
3) Wget 25
Phần 2: Password Cracking / Brute-Force Tools 27
I. Tổng quan 27
II. PAM và mật khẩu trên Unix 28
1) Thực hiện trên Linux 28
2) Đối số của Cracklib 30
3) OpenBSD login.conf 32
4) John the ripper 34
Tài liệu tham khảo 46


3


Phần 1:Công cụ Web Hacking
I. Tổng quan
Bảo mật Server có thể được chia thành hai loại lớn: kiểm tra máy chủ cho các lỗ
hổng phổ biến và thử nghiệm các ứng dụng web. Một Server sẽ được cấu hình theo danh
sách kiểm tra trước khi nó được triển khai trên Internet:
 Secure network configuration(Cấu hình mạng an toàn) : thiết lập tường

lửa hoặc hạn một thiết bị tương tự hạn chế lưu lượng truy cập đến các cổng cần
thiết (có thể là cổng 80 và cổng 443).
 Secure host configuration(Cấu hình an toàn máy chủ) cấu hình hệ điều
hành luôn được cập bản vá bảo mật, chức năng kiểm tra được kích hoạt, và chỉ
có các quản trị viên(administrator) có thể truy cập vào hệ thống.
 Secure web server configuration(Cấu hình an toàn server) cài đặt mặc
định của Server đã được xem xét, các tập tin mẫu đã được gỡ bỏ, và server hoạt
động trong một tài khoản người dùng có hạn chế.
Tất nhiên, một danh sách ngắn như vậy không bao gồm các chi tiết cụ thể của một sự kết
hợp Apache / PHP hoặc các chi tiết của tất cả các khuyến cáo của Internet Information
Server (IIS) trong việc thiết lập cài đặt, nhưng nó phải phục vụ như là cơ sở cho chính sách
xây dựng một Server mạnh . Một máy quét các lỗ hổng cũng nên được sử dụng để xác
minh chính sách xây dựng Server.
Bảo mật của ứng dụng web cần được quan tâm là tốt. Chương này tập trung vào các công
cụ được sử dụng để kiểm tra các lỗ hổng phổ biến cho một Server, nhưng số ít các công cụ đề
cập ở đây giải quyết các khái niệm về thử nghiệm ứng dụng web thực tế vể vấn đề an
ninh chứ không phải là máy chủ ứng dụng được cài đặt.
II. VULNERABILITY SCANNERS(máy quét lỗ hổng)
Server như Apache, iPlanet, và IIS đã trải qua nhiều sửa đổi và cập nhật bảo mật. .Danh
mục có chứa một danh sách các tập tin thông thường, các tập tin với các lỗ hổng đã được biết
đến, và các phương thức khai thác lỗ hổng chung cho một loạt các máy chủ. Ví dụ, một máy
quét lỗ hổng cho các tập tin sao lưu (chẳng hạn như đổi tên default.asp để default.asp.bak)
hoặc cố gắng khai thác theo cây thư mục (chẳng hạn như kiểm tra %% 255c 255c ).Các
công cụ quét xử lý theo logic để đọc các danh mục phương pháp khai thác lỗ hổng, gửi yêu
cầu đến Server, và giải thích các yêu cầu để xác định xem máy chủ là có lỗ hổng. Những
công cụ xác định lỗ hổng này dễ dàng sửa chữa bởi cấu hình máy chủ an toàn, cập nhật các
bản vá bảo mật.
4

1) Tổng quan về máy quét lỗ hổng

a) Giới thiệu về máy quét lỗ hổng
Bộ quét lỗ hổng phân tích an ninh mạng của bạn bằng cách sử dụng kiến thức cơ
bản rộng nhất và mới nhất kiểm tra các lỗ hổng. Khi khởi động hoặc lên lịch quét lỗ
hổng, dịch vụ phát hiện các lỗ hổng một cách an toàn bằng cách sử dụng công
cụ quét suy diễn của nó, một quá trình thích nghi thông minh chỉ chạy thử nghiệm phù
hợp cho mỗi máy chủ được quét. Dịch vụ đầu tiên thu thập thông tin về mỗi máy chủ,
chẳng hạn như hệ điều hành và các phiên bản của nó, các cổng truy cập và dịch vụ, sau
đó lựa chọn các modun kiểm tra thích hợp. Ảnh hưởng quá trình quét lên lưu lượng
mạng là tối thiểu vì dịch vụ lấy mẫu băng thông và sau đó sử dụng một lượng nhất
định các tài nguyên mà mà bạn chỉ định.

Kiến thức cơ bản về các lỗ hổng được cập nhật liên tục như lỗ hổng bảo mật mới được
thêm vào và cập nhật. Vì lý do này, các tốt nhất là thực thực hiện lịch kiểm tra an ninh
mạng thường xuyên để giảm thiểu rủi ro tiềm năng và đảm bảo tính an ninh liên
tục. Nên lên lịch quét thường xuyên hàng tuần cộng với chạy một quét theo yêu cầu bất
cứ khi nào các thiết bị mạng mới được giới thiệu hoặc cấu hình được cập nhật.

Quét các thiết bị kết nối ngoài trên một mạng vòng ngoài sẵn dùng cho tất cả người
dùng (với chức năng quét phân quyền) bằng cách sử dụng các máy quét kết nối
ngoài. Quá trình các thiết bị kết nối trong của IP nội bộ được hỗ
trợ bằng cách sử dụng các thiết bị máy quét, cài đặt bên trong mạng công ty. Với các thiết
bị máy quét, có các tùy chọn máy quét để áp dụng cho từng nhiệm vụ quét. Có
thể chọn một thiết máy quét để gửi các công việc quét một thiết bị cụ thể, hoặc có
thể chọn tùy chọn bộ quét song song để phân phối các công việc quét trên máy
quét nhiều trong các nhóm mục tiêu để cải thiện hiệu suất quét.
b) Cơ chế quét lỗ hổng
Có một số sự kiện diễn ra trong quá trình quét dễ bị ảnh hưởng. Các hành vi chuẩn
cho các sự kiện này được mô tả dưới đây. Để thay đổi hành vi chuẩn, tùy chỉnh quét và
các tùy chọn bổ sung trong thiết lập tùy chọn , và sau đó áp dụng các thiết lập cá
nhân tùy chỉnh theo yêu cầu hoặc nhiệm vụ lịch trình quét. Có thể chỉ định các thiết bị

thăm dò được gửi và các cổng được quét trong quá trình phát hiện ra máy chủ, và các
cổng TCP và UDP được quét trong quá trình quét cổng.

 Host Discovery:Dịch vụ kiểm tra tính sẵn sàng của máy chủ mục tiêu. Đối với mỗi máy
chủ, dịch vụ kiểm tra xem máy chủ được kết nối với Internet, cho dù đã bị đóng
cửa và cho dù đó cấm tất cả các kết nối Internet. Dịch vụ ping mỗi máy chủ mục
tiêu bằng cách sử dụng đầu dò ICMP, TCP và UDP. Các đầu dò TCP và UDP được gửi
đến cổng mặc định cho các dịch vụ phổ biến trên mỗi máy chủ, chẳng
hạn như DNS, TELNET, SMTP, HTTP và SNMP. Nếu các thiết bị thăm dò này nhận
được ít nhất một phản hồi từ máy chủ, máy chủ được coi là "còn hoạt động."
Các loại thiết bị thăm dò đã gửi và danh sách các cổng được quét trong quá trình phát
hiện máy chủ được cấu hình thông qua các tùy chọn bổ sung .
5

Nếu máy chủ không phải là "còn hoạt động" thì quá trình quét sẽ không tiến hành. Bạn có
thể chọn để quét máy chủ đã ngừng hoạt động bằng các tùy chọn quét của bạn, nhưng tùy
chọn đó có thể tăng thời gian quét và không được gợi ý cho loại C hoặc các mạng lớn
hơn.
Sau khi phát hiện ra máy chủ, các sự kiện này xảy ra tự động: cổng quét, phát hiện hệ
điều hành, dịch vụ phát hiện và xác thực đến máy chủ khi được kích hoạt tính năng xác
thực.

 Post scanning:Dịch vụ tìm thấy tất cả các cổng TCP và UDP mở trên máy chủ mục
tiêu. Danh sách các cổng TCP và UDP quét được cấu hình thông qua các tùy chọn quét.

 OS detection:Dịch vụ cố gắng để xác định hệ điều hành được cài đặt trên máy chủ mục
tiêu. Điều này được thực hiện thông qua ngân xếp vân tay của giao thức TCP / IP , dấu
vân tay của hệ điều hành trên các cổng chuyển hướng và được tăng cường thêm thông
tin thu thập được trong quá trình quét, như thu thập thông tin NetBIOS


 Service discovery: : khi một cổng TCP hoặc UDP được báo cáo là mở, các dịch
vụ quét sử dụng một số phương pháp phát hiện để xác định các dịch vụ đang chạy trên
cổng, và xác nhận các loại hình dịch vụ đang chạy để có được những dữ liệu chính xác
nhất.

 Authentication:: Xác thực đến máy chủ là tùy chọn cho một máy quét lỗ hổng. Đối
với một máy quét lỗ hổng cho phép xác thực, dịch vụ xác thực đến máy chủ mục tiêu dựa
trên các loại chứng thực được lựa chọn trong thiết lập tùy chọn cá nhân và thiết lập chứng
thực trong các tài khoản người dùng. Dịch vụ này sử dụng các thông tin cho các máy chủ
mục tiêu theo quy định trong thiết lập chứng thực. Nếu xác thực đến máy
chủ là không thành công, dịch vụ thực hiện đánh giá lỗ hổng mà không xác thực.

 Vulnerability Assessment: Sử dụng thông tin thu thập được về mỗi máy chủ mục
tiêu trong các bước quét trước đó,dịch vụ bắt đầu đánh giá lỗ hổng. Dịch vụ quét tất cả
các lỗ hổng trong kiến thức cơ bản hoặc một danh sách lựa chọn của các lỗ
hổng, dựa trên các thiết lập của người dùng quét. Dịch vụ kiểm tra lỗ hổng được áp
dụng cho mỗi máy chủ mục tiêu dựa trên các thông tin thu thập được trên máy chủ đó.

c) Quét và tường lửa
Thực hiện một quét hoặc định vị đối so với một thiết bị được bảo vệ bởi một bức
tường lửa là một hoạt động phổ biến. Mỗi ngày các công cụ quét thực hiện hàng
ngàn quét và định vị trong mạng cấu trúc liên kết bảo vệ máy chủ của họ với các tường
lửa mà không có bất kỳ vấn đề.Vấn đề có
6

thể phát sinh khi quét lưu lượng truy cập được định tuyến thông qua các bức tường lửa từ
trong ra ngoài, tức là khi thiết bị máy quét đang ngồi trong khu vực bảo vệ mạng và
quét một mục tiêu được đặt ở phía bên kia của bức tường lửa.

Nhiều bức tường lửa hiện đại được cấu hình để theo dõi các kết nối, duy trì NAT và bảng

ARP và hoạt động một máy quét chống lại một tập lớn các mục tiêu có thểquá tải các
bảng này. Các hậu quả của tràn như vậy là đa dạng và phạm vi từ sự suy giảm các chức
năng tường lửa để hoàn thành một vụ tai nạn.
Nên đặt các thiết bị máy quét trong cấu trúc liên kết mạng của bạn trong
một cách thức rằng chức năng quét và lập bản đồ thông qua một bức tường lửa từ trong
ra bên trong tránh được nếu có thể. Nếu không,thực hiện các thử nghiệm đánh giá của
riêngtrên mạng của để xác nhận tác động đến tường lửa. Độ chính xác của quét cũng có
thể bị ảnh hưởng, do đó nên so sánh kết quả dự kiến sẽ chống lại các kết quả chi
tiết được cung cấp trong các báo cáo của. Có thể điều này có thể là dịch vụ ảnh hưởng
đến kết quả quét có thể khác nhau.
2) Nikto
Nikto là một phần mềm quét máy chủ web mã nguồn mở (GPL),nó thực hiện kiểm tra
toàn diện các mục trên máy chủ web,bao gồm hơn 6.400 tập tin có khả năng gây nguy
hiểm/CGIs,kiểm tra phiên bản đã “lỗi thời” của hơn 1200 máy chủ.Nikto cũng kiểm tra
các tập tin cấu hình của máy chủ chẳng hạn như nhiều tập tin chỉ mục(index files) ,các
tùy chọn của máy chủ HTTP.Các “plug in” được tự động cập nhật thường xuyên.
Nikto không được thiết kế như một công cụ quá “lén lút”.Nó sẽ kiểm tra một máy chủ
web trong thời gian nhanh nhất có thể .
Kiểm tra một máy chủ web để tìm ra các vấn đề về lỗ hổng bảo mật có thể có bao gồm:
- Các tập tin cấu hình của máy chủ và phần mềm
- Các tập tin và các chương trình mặc định
- Các tập tin và chương trình không an toàn
- Các phiên bản máy chủ đã cũ

Nikto được xây dựng trên LibWhisker2(RFP) và có thể chạy trên bất kỳ nền tảng có hỗ
trợ môi trường Perl.Nó hỗ trợ SSL,proxy.máy chủ xác thực…Nó thể được cập nhật tự
động từ dòng lệnh.
a) Cách thực hiện
Đây là một máy quét dựa trên Perl, Nikto chạy trên Unix, Windows và Mac OS X.
Nó sử dụng Perl thư viện tiêu chuẩn đi kèm với cài đặt mặc định Perl. Nikto cũng yêu

cầu LibWhisker (LW.pm), dễ dàng cài đặt.
Quét : Để bắt đầu với Nikto cần chỉ định một máy chủ mục tiêu với tùy chọn
“–h” . Khi engine phát hiện ra lỗ hổng bảo mật tiềm năng, máy quét ghi chú lại đi
kèm với đầu ra để giải thích lý do tại sao một phát hiện có thể là một nguy cơ bảo mật:


- Nikto 1.35/1.34 - www.cirt.net
- Nikto 1.35/1.34 - www.cirt.net
7

+ Target IP: 10.0.1.8
+ Target Hostname: 10.0.1.8
+ Target Port: 80
+ Start Time: Fri Aug 19 21:54:46 2005

- Scan là phụ thuộc vào chuỗi "Server" có thể được làm giả, sử dụng –g để ghi đè lên
+ Server: Apache/2.0.53
+ Server does not respond with '404' for error messages (uses '403').
+ This may increase false-positives.
+ All CGI directories 'found', use '-C none' to test none
+ Apache/2.0.53 appears to be outdated (current is at least Apache/2.0.54). Apache
1.3.33 is still maintained and considered secure.
+ 2.0.53 - TelCondex Simpleserver 2.13.31027 Build 3289 and below allow directory
traversal with '/ /' entries.
+ /.DS_Store - Apache on Mac OSX will serve the .DS_Store file, which contains
sensitive information. Configure Apache to ignore this file or upgrade to a newer
version. (GET)
+ /.FBCIndex - This file son OSX contains the source of the files in the directory.
(GET)
+ /docs/ - May give list of installed software (GET)


Các tùy chọn cơ bản cần thiết để chạy Nikto. Các tùy chọn quan trọng nhất được thiết
lập máy chủ mục tiêu, cổng đích, và tập tin đầu ra. Nikto chấp nhận các ký tự đầu tiên
của một tùy chọn là một từ đồng nghĩa. Ví dụ, bạn có thể chỉ định-s-ssl để sử dụng
giao thức HTTPS, bạn có thể chỉ định-w hoặc -web đầu ra định dạng HTML.

8

Tùy chọn
Giải thích
-host
Chỉ định một máy chủ duy nhất. Nikto không chấp nhận các tập tin với tên
máy chủ

-port

Chỉ định một cổng tùy ý.
-verbose

Cung cấp đầu ra chi tiết , không được viết tắt (-v được dành riêng cho các tùy
chọn máy ảo).

-ssl

Cho phép hỗ trợ SSL. Nikto không chấp nhận HTTPS nếu bạn chỉ định cổng
mục tiêu 443.

-generic

Hướng dẫn Nikto để bỏ qua các banner của máy chủ và chạy một quét bằng

cách sử dụng toàn bộ cơ sở dữ liệu
-Format

Định dạng đầu ra HTML, CSV, hoặc văn bản. Phải được kết hợp với đầu ra.
 -f htm
 -f csv
 -f txt

-output

Các bản ghi đầu ra một tập tin
Ví dụ : -output nikto80_website.html –F htm
-id

Cung cấp thông tin xác thực HTTP cơ bản.
Ví dụ: -id username:password
-vhost

Sử dụng một máy chủ ảo cho server mục tiêu chứ không phải là địa chỉ
IP. Điều này ảnh hưởng đến nội dung của HTTP Host: header. Điều quan trọng
là sử dụng tùy chọn này trong môi trường máy chủ chia sẻ.
-Cgidirs

Quét tất cả các thư mục CGI có thể. Điều này không quan tâm đến “lỗi 404“mà
Nikto nhận được thư mục gốc. Xem "config.txt" để được hướng dẫn làm thế
nào để cấu hình các thư mục mà nó sẽ tìm kiếm. Ví dụ:
-C none
-C all
-C /cgi/


-mutate

Kiểm tra bất thường được mô tả trong phần "config.txt".
-evasion
Kỹ thuật trốn IDS. Nikto có thể sử dụng chín kỹ thuật khác nhau để định dạng
các yêu cầu URL trong một nỗ lực để vượt qua hệ thống phát hiện xâm nhập
không phức tạp chuỗi khớp.


9


Các tùy chọn dòng lệnh mở rộng trong Nikto

Tùy chọn
Giải thích
-cookies

In các tập tin cookie được trả về bởi máy chủ. Điều này tạo ra hoặc là quá
nhiều thông tin không cần thiết hoặc thông tin rất hữu ích tùy thuộc vào cách
máy chủ xử lý người sử dụng không được thẩm định.
-root

Thêm vào trước thư mục cung cấp -root cho tất cả các yêu cầu. Điều này giúp
khi bạn muốn kiểm tra trang cấu trúc thư mục ẩn của trang web . Ví dụ, nhiều
ngôn ngữ kỹ thuật sẽ thêm vào trước một định danh để thay thế cho ngôn ngữ
trang web đó
/ en / scripts /
/ en / scripts / bao gồm /
/ en / menu / foo /

/ de / scripts /
Trong trường hợp này, Nikto có thể báo cáo không chính xác rằng nó không
thể tìm thấy script phổ biến. Vì vậy, sử dụng tùy chọn -root:
./nikto.pl –h website –p 80 –r /en
-findonly

Chỉ quét máy chủ mục tiêu cho cổng HTTP (S) , không thực hiện quét toàn
bộ. Quét có thể sử dụng nmap hoặc cổng cắm kết nối nội bộ dựa trên Perl.
-nolookup
Không trả về địa chỉ IP của máy chủ.
-timeout N

Dừng quét nếu không có dữ liệu nhận được sau một thời gian n giây. Mặc định
là 10.
-useproxy
Sử dụng các proxy được định nghĩa trong file config.txt. Các phiên bản trước
của Nikto yêu cầu bạn bật tùy chọn này hoặc tắt trong file config.txt. Điều này
là thuận tiện hơn.
-debug

Cho phép đưa ra tin nhắn gỡ lỗi chi tiết. Lựa chọn này có thể được viết tắt. Về
cơ bản nó liệt kê các yêu cầu LibWhisker băm cho mỗi truy Nikto URL. Ở đây
chỉ là một phần nhỏ của các thông tin in ra:
D: - Connection: Keep-Alive
D: - Host: 10.0.1.8
D: - User-Agent: Mozilla/4.75 (Nikto/1.35 )
D: - $whisker->INITIAL_MAGIC: 31337
-dbcheck

Thực hiện một kiểm tra cú pháp của scan_database.db chính và các tập tin

user_scan_database.db. Những tập tin này chứa các bài kiểm tra cụ thể mà
Nikto thực hiện đối với máy chủ. Lựa chọn này không thể viết tắt.
-update

Cập nhật các plug-in của Nikto và kiểm tra phiên bản mới.


10

Tùy chọn –update giúp cập nhật phiên bản mới cho Nikto. Nó làm cho chương trình kết
nối với và tải về bản mới nhất của plug-in
$ ./nikto.pl update
No updates required.
www.cirt.net message: Version 2.0 is still coming

Config.txt : Nikto sử dụng tập tin config.txt để thiết lập các tùy chọn nhất định hoặc sử
dụng ít thường xuyên hơn hoặc có nhiều khả năng được sử dụng cho mỗi lần quét. Tập
tin này bao gồm hơn một chục các thiết lập. Một tùy chọn có thể được bỏ bằng cách đặt
một biểu tượng thăng (#). Dưới đây là một số các thiết lập mặc định rằng bạn sẽ có nhiều
khả năng thay đổi:

#CLIOPTS=-g -a
#NMAP=/usr/bin/nmap
SKIPPORTS=21 111
DEFAULTHTTPVER=1.1
#PROXYHOST=10.1.1.1
#PROXYPORT=8080
#PROXYUSER=proxyuserid
#PROXYPASS=proxypassword
#STATIC-COOKIE=cookiename=cookievalue

@CGIDIRS=/cgi.cgi/ /webcgi/ /cgi-914/ /cgi-915/ /bin/ /cgi/ /mpcgi/
/cgi-bin/ /ows-bin/ /cgi-sys/ /cgi-local/ /htbin/ /cgibin/ /cgis/
/scripts/ /cgi-win/ /fcgi-bin/ /cgi-exe/ /cgi-home/ /cgi-perl/
@MUTATEDIRS=/ / /members/ /porn/ /restricted/ /xxx/
MUTATEFILES=xxx.htm xxx.html porn.htm porn.html
@ADMINDIRS=/admin/ /adm/
@USERS=adm bin daemon ftp guest listen lp mysql noaccess nobody nobody4 nuucp
operator root smmsp smtp sshd sys test unknown uucp
web www
@NUKE=/ /postnuke/ /postnuke/html/ /modules/ /phpBB/ /forum/

@ CGIDIRS thiết lập có chứa một danh sách không gian được giới hạn các thư
mục.Nikto cố gắng để xác định xem mỗi thư mục tồn tại trước khi cố gắng để tìm kiếm
các tập tin bên trong nó, mặc dù các -allcgi tùy chọn ghi đè lên hành vi này.
Thiết lập CLIOPTS chứa các tùy chọn dòng lệnh bao gồm tất cả thời gian Nikto
chạy.Điều này là hữu ích cho việc rút ngắn dòng lệnh bằng cách đặt –generic,-verbose ,-
web tùy chọn ở đây.
NMAP và SKIPPORTS kiểm soát hoạt động quét cổng của nikto (-findports). Nếu nhị
phân nmap không được cung cấp (thường là trường hợp cho hệ thống Windows), Nikto
sử dụng các chức năng Perl để quét cổng. Thiết lập SKIPPORTS chứa một danh sách
không gian giới hạn của số cổng không bao giờ để quét.
Sử dụng các thiết lập PROXY* cho phép hỗ trợ proxy cho Nikto. Mặc dù rất hiếm khi có
nhu cầu thay đổi các thiết lập DEFAULTHTTPVER, bạn có thể tìm thấy các máy chủ có
hỗ trợ 1,0 phiên bản duy nhất.

* Các thiết lâp MUTATE* làm tăng đáng kể thời gian cần để quét một máy chủ với lựa
chọn -mutate.
@ MUTATEDIRS hướng dẫn Nikto để chạy tất cả các kiểm tra từ thư mục gốc hoặc thư
mục được liệt kê ở đây. Điều này rất hữu ích cho các trang web sử dụng quốc tế, theo đó
11


các thư mục “/ script trở thành thư mục / 1033/scripts”. Các thiết lập MUTATEFILES
hướng dẫn Nikto để chạy một kiểm tra cho mỗi tập tin chống lại tất cả các thư mục plug-
in hiện tại của nó. Lưu ý rằng có hai kỹ thuật đột biến, mutate3 và mutate4, bỏ qua các
giá trị này. Kỹ thuật 3 thực hiện điều tra người sử dụng chống lại các máy chủ Apache
bằng cách yêu cầu / ~thư mục người sử dụng, lợi dụng của sự không chính xác của cấu
hình các public html (UserDir module) thiết lập trong file httpd.conf. Kỹ thuật 4 là tương
tự, nhưng nó sử dụng phương thức /cgi-bin/cgiwra/~ .

@ADMINDIRS để đoán vị trí của các phần liên quan đến quản trị viên của trang web.

@USERS thiết lập có thể là hữu ích đối với các máy chủ Apache có thể có các thư mục
công cộng html được kích hoạt (mod_userdir).
b) Trường hợp nghiên cứu: Quét Chữ ký(Catching Scan Signatures)
Là administrator, bạn cần phải chạy các máy quét lỗ hổng đối với các server của bạn
như là một phần của bảo trì thường xuyên. Sau đó, tốt nhất là nó có thể tìm được các lỗ
hỏng trên server của bạn trước khi một người nào khác tìm ra. Mặt khác, làm thế nào bạn
có thể cho biết nếu một người nào đó chạy các công cụ chống lại bạn? Một hệ thống phát
hiện xâm nhập (IDS) có thể giúp đỡ, nhưng IDS có một số nhược điểm: nó thường không
thể xử lý băng thông cao, nó dựa trên trí thông minh mô hình phù hợp, có thể không
(phần lớn) xem dòng mã hóa SSL, và nó là tốn kém ( snort mã nguồn mở đòi hỏi một đội
ngũ để duy trì và theo dõi các sự kiện). Câu trả lời, trong trường hợp này, là để biến các
tập tin ghi lưu của bạn. Bạn cho phép khai thác ưu điểm mạnh mẽ trên server của bạn,
phải không?

Common Signatures (Chữ ký phổ biến) : các tập tin nhật ký là một thiết bị an
ninh. Chúng là hệ thống báo động, có nghĩa rằng nếu bạn thấy một dấu hiệu tấn công
trong tập tin của bạn, bạn biết bạn đã bị tấn công.Nếu cuộc tấn công đã xâm nhập các
máy chủ, các bản ghi web sẽ là nơi đầu tiên để đi cho tái tạo các sự kiện. Các bản ghi
cũng giúp các quản trị và lập trình theo dõi lỗi hoặc trang xấu trên web của một trang

web cần thiết để duy trì một server ổn định. Với điều này có nghĩa là, bạn nên có một
chính sách để chuyển về logging Server, thu thập các tập tin ghi lưu, xem xét các tập tin
ghi lưu, và lưu trữ các tập tin ghi lưu.
Bảng sau đây liệt kê một số chi tiết để tìm kiếm khi thực hiện một đăng nhập. Nhiều
trong số các kiểm tra có thể được tự động với các công cụ đơn giản như grep.

12


Excessive 404
response codes
404 trong logfile của bạn thường có nghĩa là một trong ba điều: "Goodies"
một lỗi đánh máy hoặc lỗi trong một trang trên trang web, người dùng
nhập sai URL, hoặc một người sử dụng độc hại được tìm kiếm Nếu bạn
nhìn thấy một số yêu cầu từ một địa chỉ IP mà kết quả trong một chuỗi của
404 lỗi, hãy kiểm tra phần còn lại của các bản ghi của bạn cho địa chỉ
IP. Bạn có thể tìm thấy một yêu cầu thành công (200 đáp ứng) ở một nơi
khác điều đó cho biết hoạt động nguy hiểm.
Unused file
extensions
Đây là một tập hợp con của 404s quá nhiều, nhưng đó là một chỉ số tốt về
một công cụ tự động. Nếu trang web của bạn chỉ sử dụng *. Jsp tập tin,
yêu cầu cho các tập tin *. Asp sẽ được ra khỏi chỗ.
Excessive 500
response codes
Bất kỳ lỗi máy chủ nên được kiểm tra. Điều này có thể có nghĩa là ứng
dụng có lỗi, hoặc một người sử dụng độc hại đang cố gắng để gửi dữ liệu
không hợp lệ đến máy chủ.
Sensitive filenames


Tìm kiếm các bản ghi cho các yêu cầu có chứa passwd, cmd.exe, boot.ini,
ipconfig, hoặc tên tập tin hệ thống và các lệnh khác
Examine
parameters

Web máy chủ tấn công cũng ẩn trong thời hạn yêu cầu trả lại một phản hồi
200. Hãy chắc chắn rằng Server của bạn đăng nhập các thông số thông
qua traversalSearch URI.Đối tượng cho các cuộc tấn công để cố gắng để
phá vỡ các thư mục, chẳng hạn như , ,% 2e% 2e.
Long strings
Tìm kiếm cho chuỗi dài (hơn 100 ký tự) gửi như một tham số. Ví dụ, một
tên người dùng bằng chữ A 200 lặp đi lặp lại lần có thể cho thấy nỗ lực
của một ai đó để phá vỡ các ứng dụng.
Unix shell
characters
Kiểm tra cho các ký tự có ý nghĩa đặc biệt trong shell hoặc SQL. Ký tự
thường gặp là '| <> & *!
Strange User-Agent
headers
Kiểm tra các chuỗi không tương ứng với phiên bản phổ biến nhất của
Internet Explorer, Mozilla, Opera, hay Safari. Ví dụ, Nikto xuất ra tiêu đề
User-Agent: Mozilla/4.75 (Nikto/1.30), nó là tầm thường để thay đổi
chuỗi này, nhưng những sai lầm đơn giản thường xác định người dùng độc
hại. Tất nhiên, hãy chắc chắn rằng Server của bạn ghi lại tiêu đề này!


13

3) LibWhisker
Thư viện LibWhisker ( do Rain Forest Puppy tập

hợp nhiều mô-đun Perl phổ biến vào một nguồn tài nguyên duy nhất cho các công cụ dựa
trên HTTP. Nó phục vụ như các công cụ truyền thông cốt lõi của Nikto và thiết lập các
chức năng cung cấp một cách để xây dựng các trình thu thập dữ liệu trang web một cách
nhanh chóng.
a) Cách thực hiện
Cài đặt đơn giản, nhưng nó thay đổi không nhiều từ hầu hết các mô-đun CPAN. Sau
khi giải nén file tải về, vào thư mục và tạo các thư viện. Khi đã xong, cài đặt LW2.pm
vào thư mục Perl của bạn. Bạn có thể làm điều này trong ba lệnh:

$ cd libwhisker-current
$ perl Makefile.pl lib
$ perl Makefile.pl install

LibWhisker có thể có vẻ hơi thừa vì nó chứa các chức năng của một số module Perl đã có
sẵn, chẳng hạn như LWP, Base64, và HTML :: Parser. Ưu điểm của LibWhisker là nó
gọn (kích thước file nhỏ hơn so với tất cả các mô-đun khác thay thế), đơn giản (một mô-
đun duy nhất), tập trung (chỉ xử lý HTTP và HTTPS yêu cầu), và mạnh mẽ (cung cấp
một giao diện duy nhất để xử lý yêu cầu và đáp ứng các đối tượng). Nó cũng là dễ đọc
hơn so với whisker ban đầu! LibWhisker cũng đã gia nhập cộng đồng mã nguồn mở trên
các máy chủ , do đó, nó không phải là quá khó để tìm.
Sức mạnh của chức năng HTTP LibWhisker tỏa sáng trong một công cụ như Nikto. Cũng
có thể sử dụng thư viện để xây dựng các script Perl cho bất cứ điều gì dựa trên web mà ta
cần phải thực hiện. Bảng 7-3 liệt kê một số các hàm LibWhisker thông dụng nhất

Hàm thông dụng LibWhisker

Hàm
Giải thích
get_page($url, \%request)


Lấy một URL đầy đủ theo quy định của tham số
url. băm yêu cầu% là tùy chọn.
http_new_request(\%request)

Tạo một đối tượng yêu cầu. Các đối tượng yêu cầu
chứa các tiêu đề, phương pháp, và các dữ liệu được
gửi đến một server. Thiết lập một tiêu đề mới bằng
cách thêm các phím băm yêu cầu.
crawl_new($start, $max_depth, \%request,
\%tracking)

Khởi tạo một đối tượng thu thập dữ liệu được sử
dụng bởi LibWhisker để theo dõi các thông tin một
trang web. Băm %request được tạo ra bởi
http_new_request.
crawl($crawl_object, $start, $max_depth)

Thực hiện thu thập dữ liệu được xác định bởi
crawl_object $.

14

Dưới đây là một ví dụ về làm thế nào bạn có thể tạo ra một script để lấy các tập tin
robots.txt từ các Server. Sử dụng hàm LW2 :: get_page ()

#!/usr/bin/perl
use LW2;
use strict;
my $host = $ARGV[0];
my ($code, $html) = LW2::get_page('http://'.$host.'/robots.txt');

print "$code\n$html";

Cần cung cấp tên máy trên dòng lệnh và script xử lý các phần còn lại.

Paris:~] mike% ./crawler.pl www.google.com
200
User-agent: *
Allow: /searchhistory/
Disallow: /search
Disallow: /groups

Yêu cầu một trang duy nhất là một cái gì đó mà một vài dòng của script shell và lệnh
Netcat có thể xử lý. Các script trước đây đã được viết để giả định một kết nối với HTTP,
bỏ qua một kết nối có thể HTTPS. Trong khi đó, ta sẽ phải di chuyển từ Netcat OpenSSL
lệnh-dòng để xử lý các loại kết nối khác nhau, LibWhisker xử lý cả hai.Nó cũng cung cấp
một cơ chế đơn giản để giả mạo như là bất kỳ loại trình duyệt web.Xây dựng một đối
tượng yêu cầu với các tiêu đề, chẳng hạn như chuỗi User-Agent của bất kỳ trình duyệt
bạn muốn mạo danh.

#!/usr/bin/perl
use LW2;
use strict;
my $url = $ARGV[0];
my $req = LW2::http_new_request();
$req->{'Accept'} = '*/*';
$req->{'Connection'} = 'Close';
$req->{'User-Agent'} = 'Mozilla/5.0';
LW2::http_fixup_request($req);
my ($code, $html) = LW2::get_page($url,$req);
print "$code\n$html";


Các dòng lệnh phải được nhập hơi khác nhau:
Paris:~] mike% ./crawler.pl

Phản hồi của máy chủ sẽ giống hệt nhau.


15


III. Kiểm tra ứng dụng
Từ đầu đến giờ chúng ta đã xem xét các công cụ kiểm tra server. Khi làm như vậy, chúng
ta bỏ qua các lỗ hổng có thể có mặt trong các ứng dụng web. Lớp các lỗ hổng này phát
sinh từ chương trình không an toàn và hoặc cấu hình sai trong việc tương tác giữa server
và cơ sở dữ liệu. Chúng ta không thể giải thích bản chất của ứng dụng web không an toàn
và phương pháp luận và kỹ thuật cho việc tìm kiếm những lỗ hổng trong một chương duy
nhất. Những gì chúng ta sẽ hiển thị là những công cụ cần thiết cho bạn để “peek” vào một
ứng dụng web.
1) Paros Proxy
Nếu bạn tìm kiếm cho công cụ web proxy ứng dụng hoặc các công cụ đánh giá trên
Internet, bạn có thể sẽ đi qua các tài liệu tham khảo cho các tiện ích có tên là Achilles
hoặc WebSleuth. Các công cụ này không còn tích cực phát triển và giữa chúng có
quirks đủ để làm thất bại các kiểm toán viên web chuyên dụng nhất. Đây không phải
là một mất mát lớn vì các công cụ mới, dựa trên nền Java đã thực hiện trên là nặng ký
trong lĩnh vực local proxy . Achilles giới thiệu các tiện ích của local
proxy ,WebSleuth intractably được gắn liền với Internet Explorer. Paros là một proxy
dựa trên Java không chỉ phục vụ như là một local proxy , nhưng cho biết thêm cải tiến
đáng kể đến khả năng sử dụng, thử nghiệm kỹ thuật, và trình bày dữ liệu.
a) Thực hiện
Paros là Java thuần túy. Do đó, có thể tải về và biên dịch các nguồn chính mình hoặc

chỉ đơn giản là có được nhị phân và bắt đầu thử nghiệm. Bạn sẽ cần phải sử dụng môi
trường Java 1.4, vì vậy hãy chắc chắn để cập nhật cài đặt Java của hệ thống của bạn
nếu nó không đáp ứng yêu cầu này. Sau khi cài đặt, khởi động Paros và thiết lập các
cài đặt proxy HTTP của trình duyệt của bạn 127.0.0.1 cổng 8080 (HTTPS sử dụng
cùng một cổng). Bây giờ, bạn đã sẵn sàng để bắt đầu kiểm tra một ứng dụng web:
điều hướng thông qua các ứng dụng như bình thường thông qua trình duyệt
web.Paros âm thầm ghi lại cấu trúc thư mục và tập tin của mọi yêu cầu. Thông tin này
được lưu trữ trong một cơ sở dữ liệu tập tin dựa trên địa phương, nhưng có thể được
xuất khẩu như là một tập tin văn bản.
Hình 7-1 cho thấy cấu trúc thư mục của một ứng dụng Aspnuke trong khung trang
web ở góc trên bên trái của giao diện.

16


Hình 7-1: Paros theo dõi cấu trúc thư mục của mỗi trang web.

Mặc dù Paros quan sát mọi khía cạnh của yêu cầu, cho dù yêu cầu sử dụng HTTP
hoặc HTTPS, nó sẽ chỉ đăng nhập các tập tin cookie và hệ thống phân cấp các trang
web mặc định. Nếu bạn muốn ghi lại các khía cạnh khác của ứng dụng, điều hướng
đến menu Tools trên giao diện và thiết lập các tùy chọn mong muốn của bạn, như thể
hiện trong hình 7-2. Mặc dù GET và POST các tập tin có một xls mở rộng, họ là
những tab phân định rõ các tập tin mà bạn có thể xem với một trình soạn thảo văn bản
hoặc nhập khẩu vào một ứng dụng bảng tính. Các tập tin được ghi vào thư mục bộ lọc
trong đó Paros đã được cài đặt.
17


Hình 7-2: Áp dụng bộ lọc để lưu dữ liệu cụ thể.


Mẹo Kích hoạt tính năng "Avoid browers Cache" tùy chọn nếu bạn sẽ được thử
nghiệm sử dụng mạo danh, các cuộc tấn công dựa trên phiên (cookie đoán, Cookie
trộm cắp). Nếu không, bạn nhầm lẫn có thể giả định rằng một trang hồ sơ nefariously
thu được là do thao tác tham số URL chứ không phải là một lỗ hổng thực sự trong
ứng dụng.
Lựa chọn tiếp theo của bạn là hướng dẫn Paros để quét các mục trong hệ thống phân
cấp trang web cho các lỗ hổng phổ biến. Điều hướng đến trình đơn Máy quét và chọn
kiểu quét mà bạn muốn thực hiện, hoặc là tất cả các nút trong danh sách trang web
(Scan Tất cả) hoặc trang web đánh dấu (Scan). Tùy chọn quét chính sách được thể
hiện trong hình 7-3. Một khi bạn chọn quét loại Paros bắt đầu kiểm tra được xác định
trước của mình.
18


Hình 7-3: Kích hoạt tính năng quét dễ bị tổn thương cụ thể.

Kết quả quét có thể được thu thập thông qua các báo cáo tùy chọn trình đơn hoặc
nhấp vào tab Alerts trong khung dưới cùng của cửa sổ Paros, như hiển thị trong hình
7-4.
19


Hình 7-4: Xem các cảnh báo lỗ hổng từ một máy quét.

Lợi ích lớn nhất của một proxy địa phương là khả năng đánh chặn và viết lại các yêu
cầu web. Paros cung cấp khả năng này trong tab Trap, được chia thành hai
phần . Header section cho thấy yêu cầu chặn khi Trap request được kiểm tra. Điều
này cho phép bạn xem và chỉnh sửa toàn bộ URL và tiêu đề đó sẽ được gửi đến máy
chủ. Một khi bạn nhấp vào Tiếp tục, phần Header và Body phổ thông với, thích hợp
đủ, HTTP Header và dữ liệu cơ thể được trả về bởi máy chủ. Quá trình này được thể

hiện trong hai nhân vật tiếp theo. Hình 7-5 thể hiện sự thay đổi của một yêu cầu tới
một lỗ ứng dụng PHP có lỗ hổng. Bạn sẽ nhận thấy rằng một giá duy nhất đã được
đưa vào topicid = 1, tham số URL. Hình 7-6 cho thấy các Header và cơ thể trở lại bởi
máy chủ.Header, được sử dụng để chứa các yêu cầu sửa đổi, bao gồm ngày, Server,
và các lĩnh vực khác. Thú vị hơn là phần Body, hiển thị các lỗi được sản xuất trong
cơ sở dữ liệu back-end Microsoft SQL do các dấu chấm phẩy không liên quan đưa
vào tham số topicid.
20


Hình 7-5: Trap và sửa đổi một yêu cầu URL.

21

Hình 7-6: Trap HTTP Headers và cơ thể của một yêu cầu.

Khả năng viết lại và chèn các ký tự tùy ý vào HTTP GET và POST yêu cầu làm cho
một công cụ như Paros không thể thiếu cho kiểm toán an ninh của một ứng dụng
web.Paros chỉ là một công cụ, kỹ thuật và thủ thuật bảo mật ứng dụng web thử
nghiệm là quá rộng để bao gồm trong chương này.
Cuối cùng, Paros có thêm một chức năng ẩn dưới trình đơn Tools. Bạn có thể có của
Paros nhện bất kỳ HTTP hoặc HTTPS ứng dụng và cư trú trong cửa sổ hệ thống phân
cấp trang web tự động. Các chức năng nhện làm việc với thành công khác nhau mà
phụ thuộc vào những gì ứng dụng đòi hỏi đối với các tập tin cookie, tiêu đề, và xác
thực. Tuy nhiên, nó phục vụ như là một tiện ích tốt đẹp mà sẽ cải thiện theo thời
gian. Nếu bạn tìm thấy chính mình bằng cách sử dụng Paros thường, hãy chắc chắn
kiểm tra các tùy chọn cấu hình tiên tiến trong menu Tools. Hình 7-7 cho thấy một số
các tùy chọn này, bao gồm cả khả năng cho proxy chuỗi và cung cấp cho phía máy
khách SSL giấy chứng nhận và các thông số quét tiên tiến.


Hình 7-7: Cấu hình tùy chọn nâng cao.


22

2) Burp Proxy
Trong khi Burp Proxy có thể yêu cầu một tên dễ nhớ hơn, Paros, nó thực hiện các
chức năng cơ bản giống nhau. Burp là sẵn tại như một
phần của một bộ các tiện ích dựa trên Java hoặc một công cụ độc lập dựa trên Java.

a) Thực hiện
Burp eschews một trình cài đặt Windows. Thay vào đó, bạn chỉ đơn thuần là trích
xuất các tập tin zip (hoặc tar.gz) vào một thư mục của sự lựa chọn của bạn và khởi
động ứng dụng. Jar với Java. Windows người dùng có thể nhấp chuột vào tập tin
suite.bat tiện dụng. Sau khi bắt đầu, toàn bộ bộ Burp trông một cái gì đó giống như
hình ảnh đó trong hình 7-8. Lưu ý rằng các proxy là thực sự là một phần của một bộ
các công cụ tập trung vào kiểm tra bảo mật ứng dụng web.


Hình 7-8: Khởi chạy Burp Proxy.

Điều đầu tiên bạn sẽ muốn làm là điều hướng đến tab Options và điều chỉnh các thiết
lập đánh chặn. Theo mặc định, Burp sẽ bắt đầu để chặn tất cả các yêu cầu HTTP cho
các tập tin hình ảnh không. Logic chặn có thể đơn giản là phù hợp với việc matchinh
của việc kết hợp các biến Boolean chống lại các thuộc tính của yêu cầu.Câu trả lời từ
máy chủ chặn một cách giống hệt nhau. Hình 7-9 cho thấy một số các tùy chọn này.
23

Hình 7-9: Cấu hình các tùy chọn đánh chặn.


Hình 7-10 và 7-11 cho thấy yêu cầu đánh chặn, sửa đổi các tham số URL, và nắm bắt
phản hồi của máy chủ. Điều này là giống hệt với phương pháp mô tả trước đó với
Paros chống lại các tham số topicid.
24

Hình 7-10: Chụp và sửa đổi một yêu cầu trình duyệt.
25

Hình 7-11: Kiểm tra phản hồi của máy chủ.

Mẹo này có vẻ tầm thường để sửa đổi các thông số URL với các công cụ như Paros
hoặc Burp. Trong thực tế, sức mạnh thực sự của những công cụ này là rõ ràng khi bạn
muốn chỉnh sửa dữ liệu POST hoặc các giá trị cookie. Sau đó, khả năng đánh chặn có
thực sự hữu ích.
3) Wget
Các công cụ cuối cùng chúng tôi trình bày có thể có vẻ ra khác nhóm so với các công cụ
trước đó. Wget là một công cụ dòng lệnh, về cơ bản sao chép nội dung của một trang
web. Nó bắt đầu tại trang chủ và sau mỗi liên kết cho đến khi nó đã phát hiện ra tất cả các
trang của trang web. Khi một người nào đó thực hiện một kiểm toán bảo mật của một ứng
dụng web, một trong những bước đầu tiên là để sàng lọc thông qua tất cả các trang của
ứng dụng. Đối với kẻ gửi thư rác, mục tiêu là để tìm địa chỉ email. Đối với những người
khác, mục tiêu là tìm kiếm các ghi chú các lập trình viên có thể chứa mật khẩu, câu lệnh
SQL, hoặc các phần khác. Cuối cùng, một bản sao của địa phương nội dung ứng dụng
web cho phép người tìm kiếm các trang web lớn một cách nhanh chóng cho các loại
thông tin.
Wget có sử dụng khác từ quan điểm của một quản trị viên của xem, chẳng hạn như việc
tạo ra mirror cho các trang web có lượng truy cập cao. Các quản trị viên cho những
mirror của nhiều trang web ( như và ) sử
dụng các công cụ wget hoặc tương tự để tái sản xuất các máy chủ trên các máy chủ thay
thế. Họ làm điều này để giảm tải và lây lan các trang web theo địa lý.

×