HVAonline
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

HVAonline

Security, Designing, Hacking, Programming
 
Trang ChínhLatest imagesTìm kiếmĐăng kýĐăng Nhập
Tìm kiếm
 
 

Display results as :
 
Rechercher Advanced Search
Latest topics
» Xác định định dạng dữ liệu
Khai thác và phòng chống file upload trong PHP Web Applications I_icon_minitimeFri Jul 10, 2015 7:02 pm by tran quang huy

» Compra Viagra. viagra generico catalogo
Khai thác và phòng chống file upload trong PHP Web Applications I_icon_minitimeThu Aug 04, 2011 1:25 pm by Khách viếng thăm

» Compra Viagra. viagra generico all estero
Khai thác và phòng chống file upload trong PHP Web Applications I_icon_minitimeThu Aug 04, 2011 11:55 am by Khách viếng thăm

» real time gaming online casinos
Khai thác và phòng chống file upload trong PHP Web Applications I_icon_minitimeWed Aug 03, 2011 8:11 pm by Khách viếng thăm

» Why wont my phone lt me use GIF images?
Khai thác và phòng chống file upload trong PHP Web Applications I_icon_minitimeWed Aug 03, 2011 7:34 pm by Khách viếng thăm

» fish oil dietary supplement
Khai thác và phòng chống file upload trong PHP Web Applications I_icon_minitimeWed Aug 03, 2011 9:44 am by Khách viếng thăm

» How do i turn on cookies on .my headset?
Khai thác và phòng chống file upload trong PHP Web Applications I_icon_minitimeTue Aug 02, 2011 10:25 pm by Khách viếng thăm

» гинекология грибы
Khai thác và phòng chống file upload trong PHP Web Applications I_icon_minitimeMon Aug 01, 2011 10:33 pm by Khách viếng thăm

» backlink popularity backlink services
Khai thác và phòng chống file upload trong PHP Web Applications I_icon_minitimeMon Aug 01, 2011 3:34 pm by Khách viếng thăm

Top posters
conmale
Khai thác và phòng chống file upload trong PHP Web Applications EmptyKhai thác và phòng chống file upload trong PHP Web Applications I_voting_barKhai thác và phòng chống file upload trong PHP Web Applications Empty 
quanta
Khai thác và phòng chống file upload trong PHP Web Applications EmptyKhai thác và phòng chống file upload trong PHP Web Applications I_voting_barKhai thác và phòng chống file upload trong PHP Web Applications Empty 
seamoun
Khai thác và phòng chống file upload trong PHP Web Applications EmptyKhai thác và phòng chống file upload trong PHP Web Applications I_voting_barKhai thác và phòng chống file upload trong PHP Web Applications Empty 
mrro
Khai thác và phòng chống file upload trong PHP Web Applications EmptyKhai thác và phòng chống file upload trong PHP Web Applications I_voting_barKhai thác và phòng chống file upload trong PHP Web Applications Empty 
quanlytruong
Khai thác và phòng chống file upload trong PHP Web Applications EmptyKhai thác và phòng chống file upload trong PHP Web Applications I_voting_barKhai thác và phòng chống file upload trong PHP Web Applications Empty 
mulan
Khai thác và phòng chống file upload trong PHP Web Applications EmptyKhai thác và phòng chống file upload trong PHP Web Applications I_voting_barKhai thác và phòng chống file upload trong PHP Web Applications Empty 
TranVanMinh
Khai thác và phòng chống file upload trong PHP Web Applications EmptyKhai thác và phòng chống file upload trong PHP Web Applications I_voting_barKhai thác và phòng chống file upload trong PHP Web Applications Empty 
Z0rr0
Khai thác và phòng chống file upload trong PHP Web Applications EmptyKhai thác và phòng chống file upload trong PHP Web Applications I_voting_barKhai thác và phòng chống file upload trong PHP Web Applications Empty 
zeno
Khai thác và phòng chống file upload trong PHP Web Applications EmptyKhai thác và phòng chống file upload trong PHP Web Applications I_voting_barKhai thác và phòng chống file upload trong PHP Web Applications Empty 
WinDak
Khai thác và phòng chống file upload trong PHP Web Applications EmptyKhai thác và phòng chống file upload trong PHP Web Applications I_voting_barKhai thác và phòng chống file upload trong PHP Web Applications Empty 
Thống Kê
Hiện có 4 người đang truy cập Diễn Đàn, gồm: 0 Thành viên, 0 Thành viên ẩn danh và 4 Khách viếng thăm

Không

Số người truy cập cùng lúc nhiều nhất là 64 người, vào ngày Sun Oct 13, 2024 2:44 am

 

 Khai thác và phòng chống file upload trong PHP Web Applications

Go down 
Tác giảThông điệp
seamoun




Tổng số bài gửi : 17
Join date : 27/09/2010

Khai thác và phòng chống file upload trong PHP Web Applications Empty
Bài gửiTiêu đề: Khai thác và phòng chống file upload trong PHP Web Applications   Khai thác và phòng chống file upload trong PHP Web Applications I_icon_minitimeTue Sep 28, 2010 12:53 pm

I. GIỚI THIỆU
Ứng dụng Web hỗ trợ cho phép người sử dụng thực hiện upload file lên server hiện tại có rất nhiều. Ví dụ như upload image(*.gif, *.jpg), *.pdf, *.doc, ...
Trong bài này seamoun sẽ trình bày một số lỗi khi lập trình file upload mà kẻ xấu có thể lợi dụng để upload những mã độc lên server. Những phương thức khai thác mà seamoun trình bày chỉ mang tính tham khảo không ủng hộ các bạn khai thác đối với những server bị mắc lỗi.

II. KHAI THÁC LỖI UPLOAD FILE
1) Trường hợp sử dụng JavaScript để kiểm tra file upload
Giả sử ta có kịch bản gồm 2 file như sau:
Code:

<html>
<title>Secure file upload PHP Web Applications</title>
<head>
<script language=javascript>
function chkFileExtension()
{
var str=document.upload.userfile.value;
var ext=str.substring(str.length,str.length-3);
if ( ext != "gif")
{
alert("File is invalid");
return false;
}
else
{
return true;
};
}
</script>
</head>
<body>
<form name="upload" action="upload1.php" method="POST" ENCTYPE="multipart/form-data" onSubmit="return chkFileExtension()">
Select the file to upload: <input type="file" name="userfile">
<input type="submit" name="upload" value="upload">
</form>
</body>
</html>




Code:

<?php

$uploaddir = 'uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File was successfully uploaded.\n";
} else {
echo "File uploading failed.\n";
}
?>

Ví dụ trên cho thấy người lập trình kiểm tra phần mở rộng file cho phép file upload bằng cách sử dụng một đoạn mã Javascript trong file upload1.html. Chỉ chấp nhận những file có phần mở rộng là *.gif thì mới được phép upload, cách này một kẻ tấn công dễ dàng vượt qua bằng cách sử dụng một intercepting proxy hoặc có thể viết một đoạn mã bằng Perl, Python,... mà đệ trình trực tiếp đến file upload1.php với những tham số cần thiết.

Trong demo sau seamoun sử dụng Burp Suite là một tool rất mạnh khi thực hiện Web Application. Có thể download tại : http://portswigger.net/
Về Đầu Trang Go down
seamoun




Tổng số bài gửi : 17
Join date : 27/09/2010

Khai thác và phòng chống file upload trong PHP Web Applications Empty
Bài gửiTiêu đề: Khai thác và phòng chống file upload trong PHP Web Applications - 2   Khai thác và phòng chống file upload trong PHP Web Applications I_icon_minitimeTue Sep 28, 2010 12:55 pm

2) Trường hợp không sử dụng JavaScript để kiểm tra mà thực hiện kiểm tra trên server với đoạn mã sau:
Code:
<?php
 
 if($_FILES['userfile']['type'] != "image/gif") {
    echo "Sorry, we only allow uploading GIF images";
    exit;
 }
 
 $uploaddir = 'uploads/';
 $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
 
 if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    echo "File is valid, and was successfully uploaded.\n";
 } else {
    echo "File uploading failed.\n";
 }
 
 ?>

Với đoạn mã trên người lập trình hy vọng ngăn chặn được kẻ tấn công upload file độc hại lên server bằng cách sử dụng kiểm tra type=image/gif. Tức là kiểu file cho phép upload ở đây chỉ có thể là file gif. Điều này cũng không an toàn bởi vì kẻ tấn công có thể thay đổi kiểu type=image/gif cho phù hợp với sự kiểm tra của đoạn mã trên nhưng nội dung vẫn chứa mã độc.
Sau đây là demo thứ 2 khai thác lỗi file upload trong PHP WebApp
Về Đầu Trang Go down
seamoun




Tổng số bài gửi : 17
Join date : 27/09/2010

Khai thác và phòng chống file upload trong PHP Web Applications Empty
Bài gửiTiêu đề: Khai thác và phòng chống file upload trong PHP Web Applications - 3   Khai thác và phòng chống file upload trong PHP Web Applications I_icon_minitimeTue Sep 28, 2010 12:56 pm

3) Trường hợp kiểm tra mime - kiểm tra phần nội dung của file upload với đoạn mã sau:
Code:
<?php
 
 $imageinfo = getimagesize($_FILES['userfile']['tmp_name']);
 
 if($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg') {
    echo "Sorry, we only accept GIF and JPEG images\n";
    exit;
 }
 
 $uploaddir = 'uploads/';
 $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
 
 if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    echo "File is valid, and was successfully uploaded.\n";
 } else {
    echo "File uploading failed.\n";
 }
 
 ?>
Như vậy liệu có cải thiện hơn ? An toàn hơn ? Trả lời: có cái thiện hơn nhưng vẫn chưa an toàn. Mặc dù với đoạn mã trên kẻ tấn công không thực hiện thành công như ở Lab2, khi thay đổi type=image/gif vì lúc này người lập trình đã kiểm tra nội dung file upload có đúng là gif hay không ?. Nhưng nếu kẻ tấn công sử dụng một file gif và chèn mã độc vào thì thế nào ? Khai thác sẽ thành công !!!!

Sau đây là demo thứ 3 khai thác lỗi file upload trong PHP WebApp
Về Đầu Trang Go down
seamoun




Tổng số bài gửi : 17
Join date : 27/09/2010

Khai thác và phòng chống file upload trong PHP Web Applications Empty
Bài gửiTiêu đề: Re: Khai thác và phòng chống file upload trong PHP Web Applications   Khai thác và phòng chống file upload trong PHP Web Applications I_icon_minitimeTue Sep 28, 2010 12:57 pm

4) Trường hợp kiểm tra phần mở rộng của file trên server với đoạn mã sau:
Code:
<?php
 
 $blacklist = array(".php", ".phtml");
 
 foreach ($blacklist as $item) {
    if(preg_match("/$item\$/i", $_FILES['userfile']['name'])) {
        echo "We do not allow uploading PHP files\n";
        exit;
    }
 }
 
 $uploaddir = 'uploads/';
 $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
 
 if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    echo "File is valid, and was successfully uploaded.\n";
 } else {
    echo "File uploading failed.\n";
 }
 ?>
Như vậy với đoạn mã người lập trình đã ngăn chặn kẻ tấn công không thể upload file *.php lên server. Tuy nhiên trường hợp này cũng chưa an toàn với những server mà có cấu hình file *.gif, *.jpg cho phép xử lý PHP. Do vậy kẻ tấn công vẫn upload file gif, jpg lên server nhưng có chèn thêm mã độc vào.

III. CÁCH PHÒNG CHỐNG
Mấu chốt giải quyết vấn để làm thế nào an toàn trong file upload đó là lưu giữ file upload lên một nơi mà không thể truy cập bởi user thông qua URL. Điều này có thể thực hiện được bằng cách lưu file upload bên ngoài thưc mục webroot hoặc trên web server nhưng từ chối truy cập đến thư mục đó.

Tài liệu tham khảo: Secure File Upload In PHP Web Applications - ScanIt
Công cụ sử dụng: Burp Suite http://portswigger.net/)
Về Đầu Trang Go down
Sponsored content





Khai thác và phòng chống file upload trong PHP Web Applications Empty
Bài gửiTiêu đề: Re: Khai thác và phòng chống file upload trong PHP Web Applications   Khai thác và phòng chống file upload trong PHP Web Applications I_icon_minitime

Về Đầu Trang Go down
 
Khai thác và phòng chống file upload trong PHP Web Applications
Về Đầu Trang 
Trang 1 trong tổng số 1 trang
 Similar topics
-
» Hướng dẫn khai thác SQL Injection đối với MySQL
» Các bước tấn công và phòng thủ hệ thống
» Mỗi tuần một tiện ích
» Giám sát an ninh mạng - Bàn về giải pháp chống DDoS
» II: Các thắc mắc thường gặp về việc gởi bài:

Permissions in this forum:Bạn không có quyền trả lời bài viết
HVAonline :: Bảo mật và thâm nhập :: Thảo luận thâm nhập-
Chuyển đến