banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận thâm nhập Khai thác và phòng chống Path Traversal Attack  XML
  [Article]   Khai thác và phòng chống Path Traversal Attack 01/10/2008 05:47:50 (+0700) | #1 | 153462
seamoun
Advisor

Joined: 04/01/2002 14:05:10
Messages: 357
Offline
[Profile] [PM]
I. GIỚI THIỆU

Path Traversal hay còn được biết với một số tên khác như “dot-dot-slash”, “directory traversal”,”directory clumbing” và “backtracking” là hình thức tấn công truy cập đến những file và thư mục mà được lưu bên ngoài thư mục webroot. Hình thức tấn công này không cần sử dụng một công cụ nào mà chỉ đơn thuần thao tác các biến với ../ (dot-dot-slash) để truy cập đến file, thư mục, bao gồm cả source code, những file hệ thống, …
Để nhận biết khả năng khai thác lỗi này, các kẻ tấn công thường quan sát kết quả có được từ spider hoặc crawler mang lại. Quan sát khả năng khai thác Path Traversal ở đây là gì ?
Ví dụ kết quả trả về từ Spider hay Crawler có dạng sau:
Code:
http://seamoun.com/getUserProfile.jsp?page=main.html
 http://seamoun.com/index.php?file=help
 http://seamoun.com/main.cgi?home=index.htm

Ngoài ra các bạn còn thấy nhiều dạng URL khác mà có “mùi” Path Traversal, các bạn tự hỏi làm sao biết được ? Trả lời: thông qua kinh nghiệm khi phân tích URL mà có được.

II. KHAI THÁC

Khi có được kết quả từ việc spider Website với các URL có dạng như trên, kẻ tấn công có thể sử dụng “../” để thử liệu có truy cập file và thư mục khác được không ? Ví dụ
Code:
http://seamoun.com/getUserProfile.jsp?page=../../../etc/passwd

Dựa vào thông báo lỗi từ Website kẻ tấn công biết được đường dẫn thực sự trên WebServer, từ đó có thể kết hợp với ../ (dot-dot-slash) để truy cập đến những file quan trong của Website như database, file cấu hình, …
Lưu ý rằng Path Traversal không chỉ xảy ra đối với các biến trong phương thức GET mà còn có thể xuất hiện trong các phương thức POST hoặc biến COOKIE.

Ví dụ: Một số website có thể sử dụng COOKIE để lưu template động cho Website như sau:
Cookie: ID= 2ddd73ef3620afc62cd6942c31bb6003:TEMPLATE=xpstyle
Cookie: USER=member1234: PSTYLE=Green
Như vậy kẻ tấn công có thể thay đổi COOKIE để thực hiện Path Traversal Attack như sau
Cookie: ID= 2ddd73ef3620afc62cd6942c31bb6003:TEMPLATE=xpstyle
Cookie: USER=member1234: PSTYLE=../../etc/passwd
 


Trong quá trình khai thác kẻ tấn công có thể encode hoặc double encode, sử dụng %00(null) để bypass filter mà Website đó áp dụng.
Ví dụ:

%2e%2e%2f mô tả cho ../
%2e%2e/ mô tả cho ../
..%2f mô tả cho ../
%2e%2e%5c mô tả cho ..\
%2e%2e\ mô tả cho ..\
..%5c mô tả cho ..\
%252e%252e%255c mô tả cho ..\
..%255c mô tả cho ..\


Đối với UTF-8
..%c0%af mô tả cho ../
..%c1%9c mô tả cho ..\
 


Khi tiếp cận với một ứng dụng Web, việc kiểm tra nó có khả năng bị lỗi Path Traversal có thể được thực hiện bằng hai loại:
+ Nếu kẻ tấn công không thể có source thì chúng sẽ dùng spider, crawler để thực hiện kiểm tra Website và từ những kết quả mà spider mang lại chúng sẽ lần lượt kiểm tra các biến đối với các phương thức GET, POST hoặc COOKIE mà có khả năng bị lỗi.
+ Nếu kẻ tấn công có source code thì có thể tìm kiếm những hàm của những ngôn ngữ lập trình Web mà có khả năng gây ra lỗi Path Traversal như sau:
Code:
PHP: include(), include_once(), require(), require_once(), fopen(), readfile(), ... 
	JSP/Servlet: java.io.File(), java.io.FileReader(), ...
	ASP: include file, include virtual, ...


Demo khai thác Path Traversal (X7 Chat). Trong đoạn demo sau đây giả sử kẻ tấn công không biết source code của ứng dụng Web X7 Chat và thực hiện spider để kiểm tra nội dung Website.
(Download file demo bên dưới, chỉ có login mới thấy file download)

III. PHÒNG CHỐNG

Việc phòng chống Path Traversal Attack phải thực hiện kiểm tra biến cẩn thận (có thể áp dụng filter) khi sử dụng các hàm đã giới thiệu ở trên mà có khả năng gây ra lỗi cho phép kẻ tấn công thực hiện Path Traversal. Tuy nhiên một số filter như
Code:
str_replace("../","",$_GET['help_file'])

thì vẫn bị lỗi bởi lẽ kẻ tấn công có thể sử dụng “….//” như thế sau khi qua code lọc ở trên nó sẽ trở thành “../”. Rõ ràng việc lọc như vậy vẫn không triệt để. Thay vào đó các bạn nên sử dụng các biểu thức chính để lọc tốt hơn.
Ví dụ
Code:
eregi("[\\/]","{$_GET['help_file']}")


Công cụ sử dụng Website Crawler: Acunetix
--vickigroup.com--
[Up] [Print Copy]
  [Question]   Re: Khai thác và phòng chống Path Traversal Attack 10/10/2008 03:51:12 (+0700) | #2 | 154642
[Avatar]
ThíchHắcKinh
Member

[Minus]    0    [Plus]
Joined: 05/11/2007 21:56:23
Messages: 85
Location: Thiếu Lâm Tự
Offline
[Profile] [PM]
This post is set hidden by a moderator because it may be violating forum's guideline or it needs modification before setting visible to members.
[Up] [Print Copy]
  [Question]   Re: Khai thác và phòng chống Path Traversal Attack 10/10/2008 05:21:31 (+0700) | #3 | 154658
[Avatar]
hacnho
HVA Friend

Joined: 28/01/2003 12:07:45
Messages: 199
Location: OEP
Offline
[Profile] [PM]
Nếu tôi đoán không lầm cậu từng có nick là l0ng gì đấy phải không? Lần sau mà còn post link kiểu đó là tạo nick mới nhá. Đây là thread để trình bày về kỹ thuật và cách phòng chống này. Không phải để cho các cậu vào đây show
Mọi câu hỏi vui lòng gửi lên diễn đàn!
[Up] [Print Copy]
  [Question]   Re: Khai thác và phòng chống Path Traversal Attack 11/10/2008 19:20:02 (+0700) | #4 | 154830
PXMMRF
Administrator

Joined: 26/09/2002 07:17:55
Messages: 946
Offline
[Profile] [PM]
Hoan nghênh bài viết của seamoun.

Trong phần thí dụ
http://seamoun.com/getUserProfile.jsp?page=main.html
http://seamoun.com/index.php?file=help
http://seamoun.com/main.cgi?home=index.htm 


thì seamoun nên thay bằng một domain đang active, hoặc chỉ viết là:

http://example.com hay http://yourname.com .....

Vì domaim "seamoun. com" tuy đã đựoc đăng ký, nhưng hiên ở status : deleted and available again. Do vây, tai thời điểm này, không tỉm thấy IP cùa domain-website "seamoun. com" và dĩ nhiên không có bất cứ một URL nào liên quan đến domain "seamoun. com".

Như vậy sẽ tránh những hiểu lầm và reaction đáng tiếc đã xảy ra
The absence of disagreement is not harmony, it's apathy.
(Socrates)
Honest disagreement is often a good sign of progress.
(Mahatma Gandhi)
[Up] [Print Copy]
  [Question]   Re: Khai thác và phòng chống Path Traversal Attack 12/10/2008 07:58:00 (+0700) | #5 | 154916
seamoun
Advisor

Joined: 04/01/2002 14:05:10
Messages: 357
Offline
[Profile] [PM]

PXMMRF wrote:
Hoan nghênh bài viết của seamoun.

Trong phần thí dụ
http://seamoun.com/getUserProfile.jsp?page=main.html
http://seamoun.com/index.php?file=help
http://seamoun.com/main.cgi?home=index.htm 


thì seamoun nên thay bằng một domain đang active, hoặc chỉ viết là:

http://example.com hay http://yourname.com .....

Vì domaim "seamoun. com" tuy đã đựoc đăng ký, nhưng hiên ở status : deleted and available again. Do vây, tai thời điểm này, không tỉm thấy IP cùa domain-website "seamoun. com" và dĩ nhiên không có bất cứ một URL nào liên quan đến domain "seamoun. com".

Như vậy sẽ tránh những hiểu lầm và reaction đáng tiếc đã xảy ra 

Thưa anh ! Chả là trên máy em, em có cái HTTPD, FTP, ... và em thay đổi cái file host trên máy em 127.0.0.1<-->seamoun.com để thuận tiện trong việc em làm mấy cái demo smilie smilie ấy mà
--vickigroup.com--
[Up] [Print Copy]
  [Question]   Re: Khai thác và phòng chống Path Traversal Attack 14/02/2009 06:25:23 (+0700) | #6 | 169349
[Avatar]
phstiger
Member

[Minus]    0    [Plus]
Joined: 23/01/2007 17:47:26
Messages: 261
Offline
[Profile] [PM]
Mấy bạn cho mình hỏi:
1/ Path Traversal có thuộc dạng LFI không vậy. Vì mình thấy bài viết trên cũng chỉ đề cập khai thác các file ở local nà thôi, không remote ra ngoài như RFI.
2/ Sẵn tiện Path Traversal cho mình hỏi thêm câu nữa. Với Apache 2.2.6 mình đã test với kỹ thuật Injecting PHP code into apache logs như thế này
http://localhost/site.php?u= <?php phpinfo(); ?>
Mình đã thử thay đổi nhiều cách nhưng trong file log lại encode sang %3C và %3E ký tự < và >
Có phải Apache version này đã khắc phục lỗi trên rồi không vậy.
Với phương thức POST hoặc GET của PHP tại sao mình submit form với nội dung <?php phpinfo(); ?> thì $_GET và $_POST của PHP lại không nhận được.
Thanks
[Up] [Print Copy]
  [Question]   Re: Khai thác và phòng chống Path Traversal Attack 27/03/2009 01:18:50 (+0700) | #7 | 174863
[Avatar]
micr0vnn
Member

[Minus]    0    [Plus]
Joined: 29/06/2006 15:52:34
Messages: 67
Offline
[Profile] [PM]
uh nó là local file include đấy bạn ạ
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|