banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận bảo mật [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía server  XML
  [Question]   [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía server 19/02/2008 21:06:20 (+0700) | #1 | 115457
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]
Gần đây diễn đàn HVA bị một lỗi xss trong phần chữ ký của thành viên (được hiển thị trên mỗi bài viết nếu thành viên sử dụng chữ ký). Lỗi này do mod gamma95 tìm thấy và "khai thác" được cookie của những thành viên nào đã tò mò "xem con gián" (chữ ký cũ của gamma95).

Cơ chế "khai thác" khá đơn giản, nó dùng xss và gởi giá trị cookie đến một site nào đó. Chủ nhân khai thác (gamma95) có thể xem và sử dụng khi nhận được thông tin này. Tôi không đi sâu vào chi tiết sắp xếp cơ chế "khai thác" này vì nó không phải là trọng tâm của chủ đề. Vấn đề nằm ở chỗ, sau khi lấy được trọn bộ cookie và dùng một công cụ nào đó để "dán" cookie vào để truy cập diễn đàn, người khai thác sẽ có thể đóng vai người bị khai thác (account bị đánh cắp cookie). Đối với các account bình thường thì không có mấy chuyện vui nhưng đối với các account có nhiều chức năng hơn (như của vmods, mods và admins) thì có thể tạo ra dung hại nếu có ý đồ không tốt.

Vậy, ngăn chặn xss để ngăn chặn việc đánh cắp cookie là điều hiển nhiên. Tuy nhiên, nếu xss vẫn còn sót ở đâu đó chưa phát hiện được thì tình trạng "dùng cookie" như trên vẫn là mối đe dọa. Bởi thế, cách khắc phục khả thi và hữu hiệu nhất có thể được là gì?

Mời các bạn thảo luận.
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía server 19/02/2008 21:36:03 (+0700) | #2 | 115459
StarGhost
Elite Member

[Minus]    0    [Plus]
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
[Profile] [PM]
Ừm, nói về mặt lý thuyết thì có thể dùng thêm địa chỉ IP để nhận dạng. Còn về tính khả thi của phương pháp này thì không dám lạm bàn vì không rõ overhead cả về memory lẫn cpu sẽ là bao nhiêu. Hơn nữa ở VN hay bị dùng qua proxy của ISP nên nhiều user có chung IP.

Tuy nhiên, nếu không có trở ngại về mặt tài nguyên thì chắc là cũng giảm thiểu được kha khá xss.

Để xem còn cách nào khác.

Thân.
Mind your thought.
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía serv 19/02/2008 22:12:07 (+0700) | #3 | 115461
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]

StarGhost wrote:
Ừm, nói về mặt lý thuyết thì có thể dùng thêm địa chỉ IP để nhận dạng. Còn về tính khả thi của phương pháp này thì không dám lạm bàn vì không rõ overhead cả về memory lẫn cpu sẽ là bao nhiêu. Hơn nữa ở VN hay bị dùng qua proxy của ISP nên nhiều user có chung IP.

Tuy nhiên, nếu không có trở ngại về mặt tài nguyên thì chắc là cũng giảm thiểu được kha khá xss.

Để xem còn cách nào khác.

Thân. 


IP thường là yếu tố đầu tiên mà ai cũng nghĩ đến smilie . Cái khó như bồ đã đưa ra là VN hay bị dùng qua proxy của ISP nên tình hình có vẻ thiếu khả thi rồi. Thêm một trường hợp khá phổ biến nữa đó ISP (hay chính từng công ty) dùng load balancer có 2 IP khác nhau, thay phiên xoay vòng. Cũng là 1 người đăng nhập hợp lệ từ IP thứ nhất, tự dưng load balancer đổi sang IP thứ nhì và dẫn tới tình trang người dùng hợp lệ đó bị "nghi" là hijack session?.

Khai triển tiếp đi smilie.
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía serv 20/02/2008 00:36:40 (+0700) | #4 | 115491
boom_jt
Member

[Minus]    0    [Plus]
Joined: 02/08/2007 23:51:10
Messages: 125
Offline
[Profile] [PM]
có 1 biện pháp hơi ...bất khả thi và cũng hơi phức tạp 1 chút thế này, cứ nêu ra anh em tham khảo nhé :

dùng thêm 1 biến cookie động, tương tự như cơ chế sinh số sequence ngẫu nhiên. Sequence và step sẽ được browser sử dụng để tính sequence tiếp theo. Mỗi lần người dùng click vào 1 link hay submit .... thì phải gọi đến hàm javascript thay đổi biến cookie kia đã --> điều này quá phức tạp (tuy nhiên nếu dùng body onload() thì không có tác dụng, vì khi đó cookie bị lấy sẽ trở thành hợp lệ).
Vậy server có thêm nhiệm vụ là kiểm tra tính hợp lệ của biến cookie này.

nhược điểm của phuơng pháp này khá nhiều:
- hacker cũng có thể thực thi hàm javascript trước khi lấy cookie. (chỉ có thể làm phức tạp hơn chút việc khai thác thôi)
- cookie lưu trong browser không dùng lại được khi người dùng tắt đi và sau 1 thời gian lại kết nối vào diễn đàn.
...

Cứ nêu cho mọi người tham khảo xem sao ^^
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía serv 20/02/2008 00:52:37 (+0700) | #5 | 115492
[Avatar]
gamma95
Researcher

Joined: 20/05/2003 07:15:41
Messages: 1377
Location: aaa">
Offline
[Profile] [PM] [ICQ]
@anh conmale: hình như biến comboHash là anh tính toán hash gì đó dựa vào User-Agent. Nhưng mà User-Agent của victim thì Hacker dễ dàng chôm được mà anh ?
Ps: Em nghĩ khó có giải pháp toàn diện để chống XSS phía server-side, vì khi XSS xảy ra thì hacker ko chỉ chôm được Cookie mà còn thể chôm được trọn bộ HTTP Header của victim.
smilie
Cánh chym không mỏi
lol
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía serv 20/02/2008 01:00:47 (+0700) | #6 | 115494
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]

boom_jt wrote:
có 1 biện pháp hơi ...bất khả thi và cũng hơi phức tạp 1 chút thế này, cứ nêu ra anh em tham khảo nhé :

dùng thêm 1 biến cookie động, tương tự như cơ chế sinh số sequence ngẫu nhiên. Sequence và step sẽ được browser sử dụng để tính sequence tiếp theo. Mỗi lần người dùng click vào 1 link hay submit .... thì phải gọi đến hàm javascript thay đổi biến cookie kia đã --> điều này quá phức tạp (tuy nhiên nếu dùng body onload() thì không có tác dụng, vì khi đó cookie bị lấy sẽ trở thành hợp lệ).
Vậy server có thêm nhiệm vụ là kiểm tra tính hợp lệ của biến cookie này.

nhược điểm của phuơng pháp này khá nhiều:
- hacker cũng có thể thực thi hàm javascript trước khi lấy cookie. (chỉ có thể làm phức tạp hơn chút việc khai thác thôi)
- cookie lưu trong browser không dùng lại được khi người dùng tắt đi và sau 1 thời gian lại kết nối vào diễn đàn.
...

Cứ nêu cho mọi người tham khảo xem sao ^^ 


Xác định thêm là HVA hoàn toàn không dùng persistent cookie (cookie được lưu trên máy của client) mà chỉ dùng transient cookie (cookie chỉ lưu trên memory của browser). Bởi thế, sau khi tắt bỏ browser, sẽ hoàn toàn không có coookie nằm ở đâu để "dùng lại" cả smilie.

Việc gamma95 lấy được cookie chỉ có thể dùng được nếu người bị lấy cookie lúc ấy vẫn còn truy cập và diễn đàn và cookie này vẫn còn đang giá trị đối với forum.

Thân mến.
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía serv 20/02/2008 01:08:36 (+0700) | #7 | 115496
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]

gamma95 wrote:
@anh conmale: hình như biến comboHash là anh tính toán hash gì đó dựa vào User-Agent. Nhưng mà User-Agent của victim thì Hacker dễ dàng chôm được mà anh ?
Ps: Em nghĩ khó có giải pháp toàn diện để chống XSS phía server-side, vì khi XSS xảy ra thì hacker ko chỉ chôm được Cookie mà còn thể chôm được trọn bộ HTTP Header của victim.
smilie  


Hì hì, nếu chỉ dựa vào một dữ liệu là User-Agent thì hỏng bét rồi em smilie . Hash được tạo ra từ càng nhiều combination càng tốt và phải có những điểm đặc thù nào đó. boom_jt đã đưa ra một từ khóa cực kỳ quan trọng: ngẫu nhiên. Tuy nhiên, boom_jt hơi bị "lạc đề" khi dùng đến giải pháp javascript bởi vì mình đang bàn ở "phía server" mà lị smilie
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía serv 20/02/2008 01:24:37 (+0700) | #8 | 115504
[Avatar]
canh_nguyen
Elite Member

[Minus]    0    [Plus]
Joined: 23/08/2004 18:55:09
Messages: 775
Location: Broken dream
Offline
[Profile] [PM] [WWW] [Yahoo!] [MSN] [ICQ]
Ta có thể dùng giá trị session được tạo ngẫu nhiên cho mỗi user dạng:Code:
$sessionid = d5(rand().microtime());


Như vậy mỗi người dùng sẽ có một giá trị unique.
Sử dụng cùng với lifetime cho mỗi session.
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía serv 20/02/2008 02:12:44 (+0700) | #9 | 115515
boom_jt
Member

[Minus]    0    [Plus]
Joined: 02/08/2007 23:51:10
Messages: 125
Offline
[Profile] [PM]

canh_nguyen wrote:
Ta có thể dùng giá trị session được tạo ngẫu nhiên cho mỗi user dạng:Code:
$sessionid = d5(rand().microtime());


Như vậy mỗi người dùng sẽ có một giá trị unique.
Sử dụng cùng với lifetime cho mỗi session. 


giá trị unique đó có đảm bảo tránh được việc người lấy cookie có thể dùng nó ko bạn? smilie
@conmale: giải pháp server thì cũng phải kết hợp với client chứ smilie
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía serv 20/02/2008 07:10:21 (+0700) | #10 | 115580
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]

boom_jt wrote:
.....
@conmale: giải pháp server thì cũng phải kết hợp với client chứ smilie  


Ngăn ngừa session hijacking mà dùng giải pháp nào ở phía client (javascript) thì gần như là vô dụng bởi vì nó không hề được server validate mà chỉ xảy ra hoàn toàn ở phía client.
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía serv 20/02/2008 09:28:46 (+0700) | #11 | 115593
[Avatar]
ThíchHắcKinh
Member

[Minus]    0    [Plus]
Joined: 05/11/2007 21:56:23
Messages: 85
Location: Thiếu Lâm Tự
Offline
[Profile] [PM]
Theo tôi thì để ngăn chặn hình thức tấn công này thì phía server tạo một bộ lọc trong phần chữ ký. Tôi nghĩ vấn đề này khá đơn giản. Trước khi hiển thị chữ ký ra ngoài thì tạo một bộ lọc từ database hoặc đơn giản nhất là lúc user nhập dữ liệu vào phần chữ ký ta sẽ có một bộ lọc kiểm tra tại bước này xem chữ ký đó có hợp lệ hay không rồi mới cho phép lưu vào database tôi nghĩ phương pháp này khả thi hơn.
Thân.

edit: sorry vì chưa đọc kỹ ý của bác commale, bác í nói là ngăn chặn XSS từ phía server tổng quát tôi lại phan ngay cái phần chữ ký smilie.

Các cách ngăn chặn các bạn trước đã thảo luận rồi, tôi thấy vấn đề tạo tính ngẫu nhiên cho mỗi phiên truy cập là một giải pháp tốt. Nhưng nếu kết hợp với các thông số từ phía người dùng (chẳng hạn như Web browse người đang truy cập là gì, IP ... hay các thông số khác) để kết hợp tạo ra một phiên truy cập sẽ càng tăng tính an toàn hơn.

Một lần nữa xin lỗi vì cái tật hồ đồ smilie
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía serv 20/02/2008 18:46:51 (+0700) | #12 | 115656
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]

ThíchHắcKinh wrote:
Theo tôi thì để ngăn chặn hình thức tấn công này thì phía server tạo một bộ lọc trong phần chữ ký. Tôi nghĩ vấn đề này khá đơn giản. Trước khi hiển thị chữ ký ra ngoài thì tạo một bộ lọc từ database hoặc đơn giản nhất là lúc user nhập dữ liệu vào phần chữ ký ta sẽ có một bộ lọc kiểm tra tại bước này xem chữ ký đó có hợp lệ hay không rồi mới cho phép lưu vào database tôi nghĩ phương pháp này khả thi hơn.
Thân.

edit: sorry vì chưa đọc kỹ ý của bác commale, bác í nói là ngăn chặn XSS từ phía server tổng quát tôi lại phan ngay cái phần chữ ký smilie.

Các cách ngăn chặn các bạn trước đã thảo luận rồi, tôi thấy vấn đề tạo tính ngẫu nhiên cho mỗi phiên truy cập là một giải pháp tốt. Nhưng nếu kết hợp với các thông số từ phía người dùng (chẳng hạn như Web browse người đang truy cập là gì, IP ... hay các thông số khác) để kết hợp tạo ra một phiên truy cập sẽ càng tăng tính an toàn hơn.

Một lần nữa xin lỗi vì cái tật hồ đồ smilie
 


Hì hì. Phần ngăn xss thì ok rồi, lọc cả 2 lần: 1) lọc ngay lúc chữ ký được cập nhật (hoặc chỉnh định) 2) lọc ngay lúc hiển thị.

gamma95 đưa ra nhận định là nếu bị xss thì trọn bộ HTTP headers của client có thể bị chôm hết. Đây là nhận định rất giá trị để đánh giá tổng thể mức dung hại trong hoàn cảnh bị xss và bị chôm cookies + HTTP headers. Tuy nhiên, điểm quan trọng để phòng thủ và exploit ở đây là, sau khi chôm được cookies + HTTP headers, làm sao kẻ tấn công biết được phải dùng những gì trong HTTP headers để có thể tạo ra một hash có giá trị nhằm giả mạo (hijack) session (nếu một hash nào đó trong cookie dùng để validate xem session đó là đồ thật hay đồ giả)?

Thân.
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía serv 20/02/2008 23:19:31 (+0700) | #13 | 115680
boom_jt
Member

[Minus]    0    [Plus]
Joined: 02/08/2007 23:51:10
Messages: 125
Offline
[Profile] [PM]
Kẻ tấn công không cần biết thuật toán hash là gì, mà chỉ cần sử dụng nguyên xi http header chôm được. Có lẽ đây là vấn đề khá nan giải. Yahoo! Mail hay nhiều trang web khác cũng không có được cơ chế nào chống lại điều này.
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía serv 20/02/2008 23:36:55 (+0700) | #14 | 115685
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]

boom_jt wrote:
Kẻ tấn công không cần biết thuật toán hash là gì, mà chỉ cần sử dụng nguyên xi http header chôm được. Có lẽ đây là vấn đề khá nan giải. Yahoo! Mail hay nhiều trang web khác cũng không có được cơ chế nào chống lại điều này. 


Hì hì, bởi thế mới có chuyện để bàn smilie

Tuy vậy, vẫn có những phương pháp ngăn cản hoặc giảm thiểu hoặc làm chậm việc exploit.
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía server 21/02/2008 17:08:50 (+0700) | #15 | 115824
CK
Member

[Minus]    0    [Plus]
Joined: 17/02/2008 03:14:35
Messages: 22
Location: vn
Offline
[Profile] [PM]
Em nghĩ là không có cách nào giải quyết được trọn vẹn, vì việc tấn công xảy ra từ phía client. Kẻ tấn công nếu biết nguyên tắc server kiểm tra thì có thể qua được. Chắc chỉ có thể giảm thiểu, hạn chế mà thôi.
Theo em có thể làm như sau: kiểm tra thời gian đăng nhập, thoát. (hiện nay HVA để thời gian time-out khá ítsmilie nick em bị out rồi mà vẫn thấy CK đang theo dõi chủ đề này.
Thêm một tham số nữa đó là đang view ở trang thứ mấy! (Ví dụ em vào lần đấu: 1. Login: 2. Xem profile:3, Xem bài 19371: 4, xem bài 19375: 5, cũng giống như post 2 bài liên tiếp trùng nhau hoặc refresh 1 page đang load ...
...smilie
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía server 21/02/2008 22:09:16 (+0700) | #16 | 115836
[Avatar]
vivashadow
Member

[Minus]    0    [Plus]
Joined: 08/01/2008 12:36:49
Messages: 95
Offline
[Profile] [PM]
Mấu chốt là ngoài thông tin session ra server phải nhận dạng được clien bằng những thông tin khác, hoặc là cố gắng nhận ra sự truy cập đồng thời từ nhiều máy tính khác nhau qua thái độ duyệt của người dùng.
Theo hướng thứ nhất, server có thể ktra thêm một số thông tin có sẵn của client như rhost, IP,...browser, OS, múi h,...;
Theo hướng thứ 2:
- Cookie but not cookie: Yêu cầu client lưu trữ và trả lời server thông tin về last request (url, timestamp).
- Xây dựng cây url (sitemap) để nhận ra những truy cập bất thường gây ra do tình trạng 2 người cùng truy cập. Cách này hơi phức tạp và sẽ gây tác dụng phụ với người dùng.

Ngoài ra để hạn chế tác hại, thì những thao tác quan trọng của mod/admin nên bắt confirm bằng pass.

À không biết cơ chế xác thực SSL 2 chiều của có tác dụng gì không nhỉ.
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía serv 21/02/2008 23:05:24 (+0700) | #17 | 115846
boom_jt
Member

[Minus]    0    [Plus]
Joined: 02/08/2007 23:51:10
Messages: 125
Offline
[Profile] [PM]

vivashadow wrote:
Mấu chốt là ngoài thông tin session ra server phải nhận dạng được clien bằng những thông tin khác, hoặc là cố gắng nhận ra sự truy cập đồng thời từ nhiều máy tính khác nhau qua thái độ duyệt của người dùng.
Theo hướng thứ nhất, server có thể ktra thêm một số thông tin có sẵn của client như rhost, IP,...browser, OS, múi h,...;
Theo hướng thứ 2:
- Cookie but not cookie: Yêu cầu client lưu trữ và trả lời server thông tin về last request (url, timestamp).
- Xây dựng cây url (sitemap) để nhận ra những truy cập bất thường gây ra do tình trạng 2 người cùng truy cập. Cách này hơi phức tạp và sẽ gây tác dụng phụ với người dùng.

Ngoài ra để hạn chế tác hại, thì những thao tác quan trọng của mod/admin nên bắt confirm bằng pass.

À không biết cơ chế xác thực SSL 2 chiều của có tác dụng gì không nhỉ. 


Hướng thứ nhất của vivashadow thì đã có bàn ở trên, còn hướng thứ 2, bạn có thể nói rõ thêm về việc "Yêu cầu client lưu trữ và trả lời server thông tin về last request (url, timestamp)" Vì thực chất có lẽ nó cũng không giúp đc gì, vì cái gì thực hiện ở client thì cũng đều có thể bypass được, ngoài ra cơ chế cho việc client làm như vậy là gì?
Vấn đề về url ko có ý kiến vì bồ đã nêu lên đc tác dụng phụ, và mình thì nghĩ là tác dụng phụ này quá lớn smilie

Việc confirm thì có lẽ diễn đàn thực hiện khá ok rồi, theo mình biết thì với cookie của mod/admin thì kẻ tấn công có thể sửa, xoá bài, vào đuợc các khu vực chỉ dành cho mod/admin trên diễn đàn, và không thể vào đc cp để thực hiện các chức năng cao hơn (đúng ko nhỉ smilie)
[Up] [Print Copy]
  [Question]   [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía server 22/02/2008 20:54:45 (+0700) | #18 | 116047
PXMMRF
Administrator

Joined: 26/09/2002 07:17:55
Messages: 946
Offline
[Profile] [PM]

conmale wrote:
Gần đây diễn đàn HVA bị một lỗi xss trong phần chữ ký của thành viên (được hiển thị trên mỗi bài viết nếu thành viên sử dụng chữ ký). Lỗi này do mod gamma95 tìm thấy và "khai thác" được cookie của những thành viên nào đã tò mò "xem con gián" (chữ ký cũ của gamma95).

Cơ chế "khai thác" khá đơn giản, nó dùng xss và gởi giá trị cookie đến một site nào đó. Chủ nhân khai thác (gamma95) có thể xem và sử dụng khi nhận được thông tin này. Tôi không đi sâu vào chi tiết sắp xếp cơ chế "khai thác" này vì nó không phải là trọng tâm của chủ đề. Vấn đề nằm ở chỗ, sau khi lấy được trọn bộ cookie và dùng một công cụ nào đó để "dán" cookie vào để truy cập diễn đàn, người khai thác sẽ có thể đóng vai người bị khai thác (account bị đánh cắp cookie). Đối với các account bình thường thì không có mấy chuyện vui nhưng đối với các account có nhiều chức năng hơn (như của vmods, mods và admins) thì có thể tạo ra dung hại nếu có ý đồ không tốt.

Vậy, ngăn chặn xss để ngăn chặn việc đánh cắp cookie là điều hiển nhiên. Tuy nhiên, nếu xss vẫn còn sót ở đâu đó chưa phát hiện được thì tình trạng "dùng cookie" như trên vẫn là mối đe dọa. Bởi thế, cách khắc phục khả thi và hữu hiệu nhất có thể được là gì?

Mời các bạn thảo luận. 

Vấn đề mà bác conmale đưa ra thảo luận trên đây là một vấn đề phức tạp và khó.

Trước hết XSS vulnerability là một lỗi khó phát hiện, phức tạp và khi nghi ngờ một site có lỗi này thì rất khó kiểm định lại để xác định đó là đúng như vậy hay không. Việc tạo lại một "hiện trường mô phỏng" để xác định chính xác là site (do người khác quản lý) có lỗi XSS thì khá phức tạp và mất công sức, thời gian. Ngoài ra hiện nay lỗi XSS cũng có nhiều loại khác nhau.

Khi một server hay một webserver có lỗi XSS thì không thể yêu cầu các user "điều chỉnh" lại máy họ (browser chẳng hạn), như vậy là vô lý, vì họ có "lỗi" gì đâu. Ngoài ra thì không phải user nào cũng biết 'điều chỉnh" máy. Và lại điều quan trọng là, về cơ bản, việc config. các browser không giúp gì cho các user tránh được tác hại do lỗi XSS (hiện diện trên server) gây ra cho họ.

Tuy khá phức tạp về thể loại và quá trình diễn biến, nhưng theo tôi, có những nguyên lý chung của các lỗi XSS là:

- Nó là lỗi của server và chỉ của server mà thôi.

- Lỗi chỉ gây tác hại (ở đây không nên dủng cụm từ "khai thác" lỗi) khi có 3 thảnh phần tham gia vào cùng một lúc: webserver có lỗi XSS (1), người đang truy cập vào trang webserver (vào nơi có lỗi XSS) (2)-đây chính là nạn nhân, một malicious webserver hay trang web khác (3) mà webserver hay trang web này có một đường dẫn đến nó từ webserver có lỗi XSS.
Đừong dẫn này có thễ là loại "bị động", thí dụ là một đia chỉ URL trên webserver có lỗi XSS, mà muốn tạo liên kết thì nạn nhân (thành phần thứ 2) phải nhấp chuột vào, hoặc là loại "chủ động", thí dụ một image tại một URL của webserver có lỗi XSS, image sẽ được download từ một webserver độc hại (thành phần thứ 3) khi ta truy cập đến URL này. Khi nạn nhân (thành phần thứ 2) truy cập đến URL nói trên thì mối liên kết đến webserver độc hại sẽ "tự động" được thiết lập.
Xin ghi nhớ là: người truy cập (thành phần thứ 2) vào webserver có lỗi XSS mới là nạn nhân trực tiếp, nạn nhân đầu tiên trong đa số trường hợp. Còn webserver (nếu là một forum, thí dụ như vậy) thì chỉ là nạn nhân thứ hai, gián tiếp. Đó là trường hợp anh conmale đã nói ở trên.
..........
(Phải đến cơ quan, sẽ xin viết tiếp ngay)

The absence of disagreement is not harmony, it's apathy.
(Socrates)
Honest disagreement is often a good sign of progress.
(Mahatma Gandhi)
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía server 22/02/2008 22:52:46 (+0700) | #19 | 116068
[Avatar]
Look2Me
Member

[Minus]    0    [Plus]
Joined: 26/07/2006 23:30:57
Messages: 235
Location: Tủ quần nào
Offline
[Profile] [PM]
Webserver không mắc lỗi XSS và là website mắc lỗi.
Để ngăn XSS từ phía server thì 1 cách hay nhất là dựa trên địa chỉ IP. Tuy nhiên nó lại gặp hạn chế với hệ thống mạng sử dụng load balancing.
=> Chịu! Control code website cho tốt thôi, có thể sử dụng 1 trang filter để lọc tất cả các tham số đầu vào cho hệ thống.
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía serv 23/02/2008 00:15:19 (+0700) | #20 | 116074
[Avatar]
gamma95
Researcher

Joined: 20/05/2003 07:15:41
Messages: 1377
Location: aaa">
Offline
[Profile] [PM] [ICQ]

Look2Me wrote:
Webserver không mắc lỗi XSS và là website mắc lỗi.
 

Bản thân ứng dụng Web Application bị XSS thì bình thường, ko có gì để nói. Cá biệt có trường hợp bị XSS ở Webserver (Chính xác là bị ở ứng dụng Server Manager). Chi tiết xem tại đây
http://zhodiac.net-dreamer.net/my-stuff/security/Iplanet-NG-XSS-analysis.pdf
Trong tài liệu này gần như là một trong những tài liệu đầu tiên mở ra hướng khai thác CSRF, XSS kết hợp với CSRF để get root cả server.
Để ngăn XSS từ phía server thì 1 cách hay nhất là dựa trên địa chỉ IP. Tuy nhiên nó lại gặp hạn chế với hệ thống mạng sử dụng load balancing.
=> Chịu! Control code website cho tốt thôi, có thể sử dụng 1 trang filter để lọc tất cả các tham số đầu vào cho hệ thống 

Đối với XSS thì lọc đầu vào quan trọng hay lọc đầu ra quan trọng nhỉ ?
smilie
Cánh chym không mỏi
lol
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía serv 23/02/2008 00:57:18 (+0700) | #21 | 116094
boom_jt
Member

[Minus]    0    [Plus]
Joined: 02/08/2007 23:51:10
Messages: 125
Offline
[Profile] [PM]
Lọc đầu vào (từ người dùng) quan trọng hơn chứ smilie (trường hợp tổng quát nói chung với các website nhé ^_^)
lọc đầu ra có vẻ ít khả thi do khó nhận biết đoạn code nào đã bị inject trong cả 1 trang html. (cũng có thể đc, ví dụ: lọc các thẻ html "có vấn đề" nằm trong <div>[bài viết]</div> của 1 bài viết trên forum chẳng hạn, nhưng đây là trường hợp không tổng quát ...)
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía serv 23/02/2008 01:01:52 (+0700) | #22 | 116097
[Avatar]
vivashadow
Member

[Minus]    0    [Plus]
Joined: 08/01/2008 12:36:49
Messages: 95
Offline
[Profile] [PM]

boom_jt wrote:

Hướng thứ nhất của vivashadow thì đã có bàn ở trên, còn hướng thứ 2, bạn có thể nói rõ thêm về việc "Yêu cầu client lưu trữ và trả lời server thông tin về last request (url, timestamp)" Vì thực chất có lẽ nó cũng không giúp đc gì, vì cái gì thực hiện ở client thì cũng đều có thể bypass được, ngoài ra cơ chế cho việc client làm như vậy là gì?
 

Cơ chế là Server sinh ra một thứ tương tự như session id của cookie rồi dùng (kèm thêm) một trong các pp được gọi chung là Cookies Alternation:URL (query string), Hidden form fields, Client-side persistence,..
để lưu trữ sau đó dùng để xác nhận kèm theo coockie.

boom_jt wrote:

Việc confirm thì có lẽ diễn đàn thực hiện khá ok rồi, theo mình biết thì với cookie của mod/admin thì kẻ tấn công có thể sửa, xoá bài, vào đuợc các khu vực chỉ dành cho mod/admin trên diễn đàn, và không thể vào đc cp để thực hiện các chức năng cao hơn (đúng ko nhỉ smilie)
 

Đúng hay không chỉ có mod và admin biết, dân thường sao biết dc. Mình chỉ nêu ra để nhắc thôi. Mà hình như bạn hiểu chưa rõ việc confirm mình nêu. Ý mình là mỗi thao tác quan trọng như del move chủ đề đều bắt buộc nhập lại pass, nếu attacker có lấy dc cookie thì cũng chỉ để quậy lặc vặc thôi nên dễ dàng khôi phục.

Ngoài ra để chống lấy cookie bằng javascript có thể dùng cờ httpOnly (hạn chế vì chưa tương thích toàn bộ các trình duyệt)
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía serv 23/02/2008 01:18:59 (+0700) | #23 | 116105
boom_jt
Member

[Minus]    0    [Plus]
Joined: 02/08/2007 23:51:10
Messages: 125
Offline
[Profile] [PM]
hì, mình hiểu việc confirm nhập pass chứ ^_^

để lưu trữ sau đó dùng để xác nhận kèm theo coockie.  

cái gì đã lưu trữ ở client và sau đó xác nhận kèm theo cookie cũng đều có thể lấy được bằng XSS smilie

Mình sẽ tìm hiểu về httpOnly xem sao, cảm ơn bạn nha smilie

p/s: cảm ơn gamma vì cái tài liệu nha, quả thật việc dùng xss và csrf để getroot làm mình khá bất ngờ, nhất định sẽ đọc! smilie
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía serv 23/02/2008 01:29:09 (+0700) | #24 | 116111
[Avatar]
gamma95
Researcher

Joined: 20/05/2003 07:15:41
Messages: 1377
Location: aaa&quot;&gt;
Offline
[Profile] [PM] [ICQ]

boom_jt wrote:
Lọc đầu vào (từ người dùng) quan trọng hơn chứ smilie (trường hợp tổng quát nói chung với các website nhé ^_^)
lọc đầu ra có vẻ ít khả thi do khó nhận biết đoạn code nào đã bị inject trong cả 1 trang html. (cũng có thể đc, ví dụ: lọc các thẻ html "có vấn đề" nằm trong <div>[bài viết]</div> của 1 bài viết trên forum chẳng hạn, nhưng đây là trường hợp không tổng quát ...) 

sao lại khó nhỉ? cái nào nhận từ $_GET, $_POST từ người dùng thì trước khi cho nó là "đầu ra" mới lọc thôi, chứ lọc tất cả đầu vào thì hơi thừa rồi nhá smilie (tất nhiên là đang nói XSS, chứ SQL ij hay command injection mà làm kiểu này thì tiêu )
Cánh chym không mỏi
lol
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía serv 23/02/2008 01:38:14 (+0700) | #25 | 116114
boom_jt
Member

[Minus]    0    [Plus]
Joined: 02/08/2007 23:51:10
Messages: 125
Offline
[Profile] [PM]

gamma95 wrote:

boom_jt wrote:
Lọc đầu vào (từ người dùng) quan trọng hơn chứ smilie (trường hợp tổng quát nói chung với các website nhé ^_^)
lọc đầu ra có vẻ ít khả thi do khó nhận biết đoạn code nào đã bị inject trong cả 1 trang html. (cũng có thể đc, ví dụ: lọc các thẻ html "có vấn đề" nằm trong <div>[bài viết]</div> của 1 bài viết trên forum chẳng hạn, nhưng đây là trường hợp không tổng quát ...) 

sao lại khó nhỉ? cái nào nhận từ $_GET, $_POST từ người dùng thì trước khi cho nó là "đầu ra" mới lọc thôi, chứ lọc tất cả đầu vào thì hơi thừa rồi nhá smilie (tất nhiên là đang nói XSS, chứ SQL ij hay command injection mà làm kiểu này thì tiêu ) 


Thì ý mình nào có khác, vấn đề gamma nói vẫn là lọc đầu vào từ người dùng đó thôi smilie
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía serv 23/02/2008 01:46:51 (+0700) | #26 | 116116
[Avatar]
gamma95
Researcher

Joined: 20/05/2003 07:15:41
Messages: 1377
Location: aaa&quot;&gt;
Offline
[Profile] [PM] [ICQ]
@boom_it: hehe, vấn đề lọc đầu vào ko phải lúc nào cũng đơn giản đâu, đồng chí có tin là tui demo một đoạn mã bị sql injection rõ ràng mà ko coder lúng túng ko biết lọc đầu vào làm sao ko ?
smilie
XSS cũng vậy thôi, có nhiều trường hợp source code phía website nó echo $_input ngay trong thẻ <script> sẵn rồi, attacker ko cần chèn thêm thẻ <script> mới khai thác đc, lúc chỉ chỉ cần input= foo; window.location, window.open gì đó là done thôi smilie ... Lúc đó thì lọc thể nào ?? chả nhẽ lọc hết javascript function ??? smilie
Cánh chym không mỏi
lol
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía server 23/02/2008 01:53:29 (+0700) | #27 | 116117
mR.Bi
Member

[Minus]    0    [Plus]
Joined: 22/03/2006 13:17:49
Messages: 812
Offline
[Profile] [PM] [WWW]
thế lọc hết Javasript funtion thì có bị làm sao ko?
ko biết thật, chứ ko phải spam!
All of my life I have lived by a code and the code is simple: "honour your parent, love your woman and defend your children"
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía serv 23/02/2008 01:57:33 (+0700) | #28 | 116119
boom_jt
Member

[Minus]    0    [Plus]
Joined: 02/08/2007 23:51:10
Messages: 125
Offline
[Profile] [PM]
hì hì, bồ cứ đưa đoạn mã bị sql inj, mình đảm bảo fix đc á smilie

xss như đoạn bồ vừa nói là 1 trường hợp rất hay, (cũng filter đc chớ smilie giả dụ ko cho thực hiện câu javascript tiếp theo bằng dấu ; - js mà ko có ; thì có thực hiện tiếp đc ko nhỉ smilie)
@mR.Bi: lọc hết js thì mất hết hay của web rùi còn gì smilie
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía server 23/02/2008 02:03:44 (+0700) | #29 | 116122
PXMMRF
Administrator

Joined: 26/09/2002 07:17:55
Messages: 946
Offline
[Profile] [PM]

Look2Me wrote:
Webserver không mắc lỗi XSS và là website mắc lỗi.
Để ngăn XSS từ phía server thì 1 cách hay nhất là dựa trên địa chỉ IP. Tuy nhiên nó lại gặp hạn chế với hệ thống mạng sử dụng load balancing.
=> Chịu! Control code website cho tốt thôi, có thể sử dụng 1 trang filter để lọc tất cả các tham số đầu vào cho hệ thống. 


Website hosting trong một webserver, vì vậy nói webserver có lỗi là nói tổng quát, khi đề cập đến 3 thành phần tham gia để lỗi XSS phát huy tác dụng. Một webserver có thể có nhiều website và nhiều website có thể cùng mắc lỗi XSS. Ngoài ra còn có trường hợp như gamma95 thông báo.

Không thể dùng source IP của user làm thông số để detect và ngăn một user (dùng HTTP header trong đó có cookie chiếm đoạt từ lỗi XSS trên webserver) kết nối vào chính webserver này, vì có rất nhiều nguyên nhân, thí dụ.
- ISP sử dụng Gateway-Proxy

- Các user luôn đựoc ISP cấp một Dynamic WAN IP
- Hai user cùng trong một mạng LAN lớn, dùng chung một ADSL modem. Trong đó có một người là hacker
...vân vân.

Lọc thông số đầu vào cụ thể là lọc cái gì? Ý bạn nói là Content Filter? Nhưng những thông số trong gói HTTP header (bị chiếm đọat và đựoc hacker tái sử dụng) là hợp lệ cơ mà? Vậy thì lọc cái gì?
Tôi sẽ viết tiếp bài viết tôi đang viết dở dang ở post trên
The absence of disagreement is not harmony, it's apathy.
(Socrates)
Honest disagreement is often a good sign of progress.
(Mahatma Gandhi)
[Up] [Print Copy]
  [Question]   Re: [Thảo luận] Ngăn ngừa session hijacking xuyên qua XSS từ phía serv 23/02/2008 02:05:19 (+0700) | #30 | 116125
[Avatar]
gamma95
Researcher

Joined: 20/05/2003 07:15:41
Messages: 1377
Location: aaa&quot;&gt;
Offline
[Profile] [PM] [ICQ]

boom_jt wrote:
hì hì, bồ cứ đưa đoạn mã bị sql inj, mình đảm bảo fix đc á smilie

xss như đoạn bồ vừa nói là 1 trường hợp rất hay, (cũng filter đc chớ smilie giả dụ ko cho thực hiện câu javascript tiếp theo bằng dấu ; - js mà ko có ; thì có thực hiện tiếp đc ko nhỉ smilie)
@mR.Bi: lọc hết js thì mất hết hay của web rùi còn gì smilie 

hehe, XSS mà bồ đi lọc dấu chấm phẩy àh? Hay là thấy trường hợp của tui rồi mới nảy ra ý lọc dấu chấm phẩy (j/k).
Còn đoạn code bị SQL injection là thế này đây
Tui có một website về 1 giải bóng đá (WC 2010) chẳng hạn:
giải đấu được chia ra làm 10000 bảng: smilie
muốn xem thông tin các đội trong 1 bảng, ví dụ bảng A đi: thì truy cập URL:
http://football.com/info.php?table=A
trong source-code
$sql="select * from $_GET[table]";
.......
hehe, lúc đó hacker tấn công SQL injection ở mức cơ bản
http://football.com/info.php?table=Admin
hoặc
http://football.com/info.php?table=Infomation_schema.tables
.....
thì bồ xây dựng bộ lọc SQL injection trong trường hợp này thế nào ?? smilie
@vivashadow: Bồ làm một bài về httpOnly đi, tui có nhiều thắc mắc về nó smilie
Cánh chym không mỏi
lol
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|