Có lẽ nhiều người khi nghe đến cụm từ hacker sẽ nghĩ ngay đến những người mặc hoodie trong phòng tối với dòng lệnh nền đen chữ xanh cùng một số lớn công cụ phức tạp (sqlmap, Sitadel, hacktool,..). Nhưng sự thực nó khác xa với mong đợi nhiều, và trong bài hôm nay, tôi sẽ chứng tỏ điều đó bằng cách tấn công một website chỉ với Website Developer Tools của trình duyệt Firefox và không gì khác.

Trước tiên, ta cần hiểu Devtools gồm những gì và cách sử dụng của từng bộ phận ra sao.

Devtools của Firefox bao gồm:

  • Page Inspector (xem, chỉnh sửa nội dung và bố cục trang)
  • Web Console (xem các thông báo được ghi lại bởi trang web và tương tác với trang bằng JavaScript)
  • JavaScript Debugger (Stop, step through, kiểm tra và sửa đổi code JavaScript đang chạy trên trang)
  • Network Monitor (Xem các request được thực hiện khi một trang được tải)
  • Performance Tools (Phân tích hiệu suất, JavaScript và bố cục chung của trang web)
  • Responsive Design Mode (Xem giao diện, cách hoạt động của trang web trên các thiết bị khác nhau)
  • Accessibility inspector (Kiểm tra trợ năng của trang)
  • Application panel (Các công cụ để kiểm tra và gỡ lỗi các ứng dụng web hiện đại (PWA)).

Trong bài viết hôm nay thì chúng ta sẽ tập trung vào 2 công cụ: Page Inspector và Storage Inspector. Để minh họa cách sử dụng của 2 công cụ này, chúng ta cùng đến với ví dụ tại CTF của HackerOne.

Flag 0

Thử thách 'Postbook' trên Hacker101 CTF

Trang chính của thử thách

Gợi ý đầu tiên được cung cấp cho chúng ta là việc người dùng “user” có mật khẩu rất yếu nên ta hãy thử đăng nhập bằng người dùng “user” với một mật khẩu yếu lấy từ danh sách những mật khẩu yếu.

Và như vậy, chúng ta đã lấy được flag đầu tiên của thử thách Postbook này:

Flag 1

Chúng ta được cho gợi ý là “xem bài viết của bạn và thử thay đổi ID” nên hãy làm theo và mở một bài viết trong trình duyệt:

và rồi thử thay đổi con số đằng sau id=

Flag 2

Gợi ý tiếp theo là “bạn nên sử dụng Inspect Element trên form tạo post mới”.

Nhìn qua mã nguồn, ta nhận thấy có một trường input ẩn với tên “user_id” và giá trị là ‘2’. 2 ở đây có lẽ là id của người dùng và nó sẽ được sử dụng để quyết định tác giả của bài viết. Vậy việc gì sẽ xảy ra nếu ta thử thay đổi id thành ‘1’ và giả mạo admin đăng bài viết mới?

Flag 3

Gợi ý được đưa ra là “189 * 5” và nếu tính ra thì nó sẽ là số 945. Nhớ lại những gì ta đã tìm ra, nơi hợp lý nhất để đặt con số này có lẽ là param id giống ở trong flag 1.

Flag 4

Gọi ý của flag này là “nếu bạn có thể edit bài viết của chính mình còn những người khác thì sao?”. URL edit bài viết:

http://35.238.245.183/b74c63f307/index.php?page=edit.php&id=3

nếu ta chuyển id thành 1

http://35.238.245.183/b74c63f307/index.php?page=edit.php&id=1

Sẽ không có gì xảy ra khi ta mở trang mà chỉ sau khi edit post thì chúng ta mới nhận được flag

Flag 5

Gợi ý: “Cookie cho phép bạn giữ đăng nhập, thử đăng nhập vào user với ID 1 lợi dụng điều này”. Đã đến lúc chúng ta sử dụng công cụ thứ 2: Storage Inspector.

Giá trị cookie

Nếu bạn đã làm việc nhiều với hash thì có lẽ bạn đã nhận ra đây cơ hội cao sẽ là MD5. Sau khi crack hash trên thì chúng ta nhận được ‘2’ - ID của người dùng “user”. Vậy nếu giả thiết của chúng ta là đúng thì việc đăng nhập vào user với ID là 1 có thể thành công bằng cách lấy hash MD5 của ‘1’ và thay nó vào cookie của trang.

Flag 6

Gợi ý được cho là “xóa bài có vẻ sẽ cần một ID mà không phải số”. Chúng ta quay trở lại với Page Inspector, khi kiểm tra nút delete thì chúng ta có thể thấy đường dẫn sau: index.php?page=delete.php&id=a87ff679a2f3e71d9181a67b7542122c

Dựa trên những kiến thức vừa rồi thì chúng ta có thể chắc chắn rằng đây sẽ là ID của post được hash bằng MD5. Thay thế bằng hash của ‘1’ là c4ca4238a0b923820dcc509a6f75849b rồi thực hiện xóa thì chúng ta có flag 6 - flag cuối cùng.

Qua phần demo ngắn trên, ta có thể thấy rằng chỉ với Devtools, không sử dụng các phần mềm phức tạp như Sitadel, sqlmap,… là ta đã có thể hack za warudo.

Nguồn: https://cu64.github.io/posts/0x02-webdevpentesttools/?fbclid=IwAR1fG-wOexpoPRzFIMCVrn52ZXi6FNNS1W98uP6D9SP68i2mSFTYXiKbVCQ