Upload File Attack Vector - Một vài kỹ thuật bypass filter

DDos

VIP Members
22/10/2013
524
2.189 bài viết
Upload File Attack Vector - Một vài kỹ thuật bypass filter
Hiện nay, trên Internet rất nhiều website cho phép chúng ta upload các tập tin dạng media như video, ảnh, code.... Lợi dụng việc này, hacker có thể tải lên server các tập tin độc hại và chiếm quyền truy cập và kiểm soát server. Trong bài viết này mình sẽ mô phỏng một vài kỹ thuật tải file độc hại lên server.

Nguyên nhân của lỗi này là do quá trình kiểm tra đầu vào của các bộ lọc không chặt chẽ dẫn tới.

+ Bypass whitelist: Một vài bộ lọc sẽ cho phép các file tải lên với tập tin mở rộng như jpg, png... Các file tải lên nằm ngoài whitelist sẽ không thể tải lên server. Video dưới đây mình sẽ demo kỹ thuật này

[video=youtube;zL_8NouuAJ0]https://www.youtube.com/watch?v=zL_8NouuAJ0&index=1&list=PLgmq2kEqEXo-Ux65O2ArOBGCsInzn7dN4[/video]

+ Double Extension: Trong apache server version 2, cho phép tập tin có nhiều thành phần mở rộng (chi tiết các bạn xem tại http://httpd.apache.org/docs/2.2/mod/mod_mime.html). Video dưới đây mình sẽ demo kỹ thuật này

[video=youtube;zL_8NouuAJ0]https://www.youtube.com/watch?v=zL_8NouuAJ0&index=2&list=PLgmq2kEqEXo-Ux65O2ArOBGCsInzn7dN4[/video]

+ Null-Byte: bằng cách thêm %00 vào phần mở rộng, ví dụ a.php%00.jpg sau khi upload lên server nó sẽ thành a.php. Video dưới đây mình sẽ demo kỹ thuật này.

[video=youtube;3X1DB306TWM]https://www.youtube.com/watch?v=3X1DB306TWM&index=3&list=PLgmq2kEqEXo-Ux65O2ArOBGCsInzn7dN4[/video]

Còn một vài kỹ thuật nữa như bypass limit size, bypass blacklist... nhưng mình chưa có thời gian để làm demo. Mình sẽ cố gắng hoàn thành sớm topic này.
 
Chỉnh sửa lần cuối bởi người điều hành:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
chỉ cần substring thấy có đuôi, jpg, png, gif nó + thêm cái time rồi mã hóa md5 cái tên nhét thêm cái đuôi vô là an toàn nhất, còn nếu không thấy mấy cái đuôi đó, thì hủy upload
Mình tính làm 1 bài chia sẻ cách bảo mật cho shared web nhưng đang thi chưa có thời gian :3
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
luongtankhang123;n54019 đã viết:
chỉ cần substring thấy có đuôi, jpg, png, gif nó + thêm cái time rồi mã hóa md5 cái tên nhét thêm cái đuôi vô là an toàn nhất, còn nếu không thấy mấy cái đuôi đó, thì hủy upload
Mình tính làm 1 bài chia sẻ cách bảo mật cho shared web nhưng đang thi chưa có thời gian :3
Thi xong rồi làm bạn nhé. (y)
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Đấy là vì lưu file upload dưới dạng ... file để người ta download. Khiến Apache coi nó như 1 file chương trình có thể chạy được.

Có 2 cách chống triệt để cái trò này (miễn là tuân thủ đúng):
1. Coi file upload là binary data, nhét vào 1 cơ sở dữ liệu nào đó (SQL hoặc NoSQL), dùng kiểu object storage như mongodb gridfs chẳng hạn thì còn rất hiệu quả nữa. key để truy cập tới object này là tên file hoặc 1 key tự sinh. Và việc lấy file ra (ví dụ GET /images/xx.jpg) thực chất là chuyển tới gọi 1 app nhỏ chỉ lấy xx.jpg trong DB ra put về. Do hoạt động nó nằm ở ứng dụng, không phải là file bình thường nên không bao giờ có thể execute cái này trên server cả. Nếu không muốn lập trình server rắc rối thì dùng 1 object storage chuyên lưu file kiểu đó như kiểu Amazon S3, viết upload script, app chính không cần quan tâm đến nữa, là xong.
2. Coi nó là static content và phục vụ request bằng 1 light http server riêng (thttpd chẳng hạn), với kiểu server đó không có chức năng execute bất kỳ cái gì. Apache php chẳng hạn sẽ chỉ phục vụ các file .php được chỉ định.

Cái này cũng sẽ làm vô hiệu hóa việc cài đặt module bằng cách upload của nhiều php app (word press..). Xét về bảo mật mình cực ghét cái trò các ứng dụng có thể tự up thêm module cho chính nó.
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
myquartz;n54046 đã viết:
Đấy là vì lưu file upload dưới dạng ... file để người ta download. Khiến Apache coi nó như 1 file chương trình có thể chạy được.

Có 2 cách chống triệt để cái trò này (miễn là tuân thủ đúng):
1. Coi file upload là binary data, nhét vào 1 cơ sở dữ liệu nào đó (SQL hoặc NoSQL), dùng kiểu object storage như mongodb gridfs chẳng hạn thì còn rất hiệu quả nữa. key để truy cập tới object này là tên file hoặc 1 key tự sinh. Và việc lấy file ra (ví dụ GET /images/xx.jpg) thực chất là [Hide] chuyển tới gọi 1 app nhỏ chỉ lấy xx.jpg trong DB ra put về. Do hoạt động nó nằm ở ứng dụng, không phải là file bình thường nên không bao giờ có thể execute cái này trên server cả. Nếu không muốn lập trình server rắc rối thì dùng 1 object storage chuyên lưu file kiểu đó như kiểu Amazon S3, viết upload script, app chính không cần quan tâm đến nữa, là xong.
2. Coi nó là static content và phục vụ request bằng 1 light http server riêng (thttpd chẳng hạn), với kiểu server đó không có chức năng execute bất kỳ cái gì. Apache php chẳng hạn sẽ chỉ phục vụ các file .php được chỉ định.

Cái này cũng sẽ làm vô hiệu hóa việc cài đặt module bằng cách upload của nhiều php app (word press..). Xét về bảo mật mình cực ghét cái trò các ứng dụng có thể tự up thêm module cho chính nó.[/Hide]
xài shared host thì như thế nào bác? Em thấy mấy ông nội bán host kiểu gì mà up được con shell là tụi nó local được ầm ầm
với lại shared host cũng không cho phép làm được các việc mà bác kể thì phải
Em trước giờ chỉ mã hóa cái tên file rồi nhét đuôi vô, còn là trang down tài liệu thì lưu lại cái tên file gốc, lúc link down được trỏ thì quăng cái tên gốc ra thôi.
Kỹ nữa thì chmod + đặt htaccess cho chắc cái thư mục mà dành cho người dùng upload file lên
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
luongtankhang123;n54047 đã viết:
xài shared host thì như thế nào bác? Em thấy mấy ông nội bán host kiểu gì mà up được con shell là tụi nó local được ầm ầm
với lại shared host cũng không cho phép làm được các việc mà bác kể thì phải
Em trước giờ chỉ mã hóa cái tên file rồi nhét đuôi vô, còn là trang down tài liệu thì lưu lại cái tên file gốc, lúc link down được trỏ thì quăng cái tên gốc ra thôi.
Kỹ nữa thì chmod + đặt htaccess cho chắc cái thư mục mà dành cho người dùng upload file [Hide] lên[/Hide]

Share host thì cũng có thể lập trình cho nội dung file upload vào MySQL chẳng hạn, tất nhiên là kém hiệu quả. Nhưng với share shell nó up không phải vào home dir của mình mà vào thằng khác thì cũng có thể chết mà không cách nào chống, chấp nhận thôi.
Nên dùng lưu trữ ngoài, nó cũng rẻ như amazon S3 chẳng hạn.
Cách của bạn, giải quyết được vấn đề là kiểm soát nội dung upload bằng hạn chế đuôi và giải quyết phần file name bằng hash, cốt để apache không chạy nó. Nhưng nếu là làm site lập trình hay thảo luận bảo mật như whitehat.vn, cho phép up file đuôi .php (source mẫu) lên thì bạn tính sao? có tên lằng nhằng {md5}.php gì thì apache cũng chạy nó mà?
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
video co chay dc nua dau huynh
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
A
  • Admin
hoangtuc1212 cảm ơn bạn đã report, BQT sẽ kiểm tra và báo lại bạn nhé.
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
hoangtuc1212 cảm ơn bạn đã report, BQT sẽ kiểm tra và báo lại bạn nhé.
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Đã cập nhật lại video....
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Với kiểu
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Bên trên