TryHackMe: Thử thách OWASP Top 10 Phần 1

Trong bài viết này, chúng ta sẽ khám phá thử thách OWASP Top 10 trên TryHackMe. Qua thử thách này, bạn còn có thể tìm hiểu và khai thác từng lỗ hổng trong số 10 lỗ hổng hàng đầu của OWASP. Đó là 10 rủi ro bảo mật web quan trọng nhất, đọc bài viết này để hiểu thêm.

TryHackMe: Thử thách OWASP Top 10 Phần 1

Do thử thách này hơi nhiều nên mình sẽ chia làm 3 phần để bạn tiện theo dõi và cũng đọc cho đỡ chán hơn nhé.

Mình sẽ đi thẳng vào phần thực hành và bỏ qua các kiến thức kỹ thuật. Nếu bạn muốn tìm hiểu kiến thức hay cách hoạt động của lỗ hổng đó thì có thể vào phòng để đọc nha. Và lưu ý, những trang web mình truy cập trong bài viết này là máy chủ ảo của Tryhackme.

TryHackMe: Thử thách OWASP Top 10 Phần 1

Nhiệm vụ 5: [Mức độ nghiêm trọng 1]  Command Injection

 Active Command Injection là gì?

Tiêm lệnh mù (Blind command injection) xảy ra khi lệnh hệ thống được thực hiện cho máy chủ không trả lại phản hồi cho người dùng trong tài liệu HTML. Còn ACI (Active command injection) sẽ trả lại phản hồi cho người dùng. Nó có thể được hiển thị thông qua một số phần tử HTML.

Xem script sau: EvilCorp bắt đầu phát triển trên nền tảng web nhưng đã vô tình tiếp xúc với Internet. Nó chưa hoàn thành nhưng vẫn chứa lỗ hổng chèn lệnh. Nhưng lần này, phản hồi từ lệnh gọi hệ thống có thể được nhìn thấy trên trang web.

Đọc code mẫu từ evilhell.php và xem nó đang làm gì và lý do tại sao nó lại bị ACI. Mình sẽ để code mẫu ở dưới.

EvilShell (evilshell.php)

TryHackMe: Thử thách OWASP Top 10 Phần 1 70

Phân tích chương trình:

  1. Kiểm tra xem tham số “commandString” đã được khai báo chưa.
  2. Nếu đúng như vậy, thì biến $command_string lấy những gì đã được chuyển vào trường đầu vào.
  3. Sau đó, chương trình đi vào một khối lệnh try để thực thi hàm passthru($command_string). Bạn có thể đọc tài liệu về hàm passthru() trên trang web của PHP, nhưng nói chung, nó sẽ thực thi những gì được nhập vào trường đầu vào, sau đó chuyển đầu ra trực tiếp trở lại trình duyệt.
  4. Nếu không thành công, nó sẽ báo lỗi. Nói chung, thì nó cũng không xuất ra cái gì đâu vì bạn không thể xuất ra stderr.

Các cách phát hiện Active Command Injection

ACI xảy ra khi bạn có thể thấy phản hồi từ lệnh gọi của hệ thống (system call). Trong đoạn code trên, hàm passthru() chuyển phản hồi trực tiếp đến tài liệu để bạn có thể thấy. Lệnh này sẽ giúp bạn dễ dàng xem và phân tích các lỗi của hệ thống.

Các lệnh có thể thử

Linux

  • whoami

Windows

  • whoami

Để trả lời những câu hỏi bên dưới thì bạn cần điều hướng đến http://10.10.147.50/evilshell.php.

# 1 Tập tin văn bản lạ nào nằm trong thư mục root của trang web?

Chúng ta có thể truy cập evilhell.php và thử lệnh whoami.

TryHackMe: Thử thách OWASP Top 10 Phần 1 71

Thử tiếp lệnh uname -a.

TryHackMe: Thử thách OWASP Top 10 Phần 1 72

Tiếp tục thử lệnh ls.

TryHackMe: Thử thách OWASP Top 10 Phần 1 73

Các bạn thấy gì không? Mình tìm được file drpepper.txt.

#2 Có bao nhiêu người dùng không phải root/non-service/non-daemon?

Bạn có thể thử lệnh cat /etc/passwd

TryHackMe: Thử thách OWASP Top 10 Phần 1 74

Không tìm được gì cả.

#3 Ứng dụng này đang chạy với tư cách người dùng nào?

Chúng tôi đã tìm thấy nó ở tầng trên, nhưng chúng ta hãy viết lại lệnh whoami.

TryHackMe: Thử thách OWASP Top 10 Phần 1 71

Đáp án: www-data

#4 Shell của người dùng?

Chúng ta có thể tìm thấy nó bằng lệnh cat /etc/passwd.

TryHackMe: Thử thách OWASP Top 10 Phần 1 76

Đáp án: usr/sbin/nologin

#5 Phiên bản Ubuntu đang chạy?

TryHackMe: Thử thách OWASP Top 10 Phần 1 77

Như ảnh trên, các bạn chỉ cần nhập lệnh lsb_release -a để biết phiên bản Ubuntu ứng dụng đang chạy.

Đáp án: 18.04.4

#6 Xem MOTD

Chỉ cần tìm kiếm một chút trên internet là bạn sẽ biết lệnh hiển thị MOTD. MOTD (Message Of The Day) là đoạn tin nhắn khi bạn khởi động một ứng dụng trong terminal.

TryHackMe: Thử thách OWASP Top 10 Phần 1 78

Đường dẫn của file MOTD là  /etc/update-motd.d. Mình đã làm thử, nhưng không có gì cả. Bí quá nên quyết định quay lại xem gợi ý :v.

TryHackMe: Thử thách OWASP Top 10 Phần 1 79

cat /etc/update-motd.d/00-header

TryHackMe: Thử thách OWASP Top 10 Phần 1 80

Thành công!

Đáp án: DR PEPPER

Nhiệm vụ 7: [Mức độ nghiêm trọng 2] Broken Authentication

Đối với lỗ hổng này, chúng ta sẽ nghiên cứu một lỗ hổng logic trong cơ chế xác thực.

Các nhà phát triển thường quên lọc đầu vào (tên người dùng và mật khẩu) do người dùng cung cấp trong ứng dụng của họ, điều này có thể khiến ứng dụng dễ bị tấn công SQL injection. Và chúng ta sẽ tập trung vào một lỗ hổng bảo mật xảy ra do lỗi của nhà phát triển nhưng rất dễ bị khai thác – đăng ký lại người dùng hiện có.

Ví dụ, giả sử có một người dùng hiện có với tên admin và bây giờ chúng ta muốn có quyền truy cập vào tài khoản đó, vì vậy những gì chúng ta có thể làm là cố gắng đăng ký lại tên người dùng đó nhưng có sửa đổi lại một chút. Chúng ta sẽ nhập “ admin” (lưu ý khoảng trống ở đầu). Bây giờ khi bạn nhập thông tin đó vào trường username và nhập các thông tin cần thiết khác như email hoặc mật khẩu và gửi dữ liệu đó. Nó sẽ đăng ký một người dùng mới nhưng người dùng đó sẽ có quyền giống như quản trị viên bình thường. Người dùng mới đó cũng sẽ có thể xem tất cả nội dung được trình bày dưới quyền quản trị viên người dùng.

Để xem demo, hãy truy cập trang web https://ift.tt/2YpCFAg và thử đăng ký username, bạn sẽ thấy người dùng đó đã tồn tại, vì vậy hãy thử đăng ký một người dùng “ darren” và bạn sẽ thấy rằng mình hiện đã đăng nhập và sẽ có thể xem nội dung chỉ có trong tài khoản của Darren, và đây là lúc chúng ta khai thác lỗ hổng này.

TryHackMe: Thử thách OWASP Top 10 Phần 1 82

Mình để một khoảng trắng ở trước từ darren.

Mình đang đăng nhập với tư cách là thành viên. Thành công rồi nè!

Chúng ta đã tìm ra được flag.

TryHackMe: Thử thách OWASP Top 10 Phần 1 85

Đáp án: fe86079416a21a3c99937fea8874b667

#2 Bây giờ hãy thử thực hiện thủ thuật tương tự và xem liệu bạn có thể đăng nhập bằng tài khoản arthur hay không.

TryHackMe: Thử thách OWASP Top 10 Phần 1 86

TryHackMe: Thử thách OWASP Top 10 Phần 1 83

TryHackMe: Thử thách OWASP Top 10 Phần 1 88

TryHackMe: Thử thách OWASP Top 10 Phần 1 81

# 3 Flag mà bạn tìm thấy trong tài khoản của arthur là gì?

TryHackMe: Thử thách OWASP Top 10 Phần 1 90

Đáp án: d9ac0f7db4fda460ac3edeb75d75e16e

Hoàn thành 2 lỗi phổ biến trong OWASP 10 là Broken Authentication và Command Injection.

Phần tiếp theo vẫn sẽ là khai thác các lỗi khác trong OWASP 10 nữa nhé.

Adblock test (Why?)


Xem Them Chi Tiet

Nhung Mon Do Cong Nghe Duoc Yeu Thich

Do Cong Nghe Phu Kien
Xem Them Chi Tiet

Phu nu phai dep dan ong moi yeu! Sam ngay bo vay dam sieu dep

Thanh xuan nhu mot tach trá Khong mua do hot phi hoai thanh xuan

0 nhận xét:

Đăng nhận xét