thoát ký tự trong / etc / mạng / giao diện


8

Tôi muốn chắc chắn rằng bất cứ chuỗi tôi vượt qua vào dòng wpa-ssid "abc"trong /etc/network/interfacessẽ không được sử dụng để thoát ra khỏi cấu hình.

Tất cả những gì tôi có thể tìm thấy trong hướng dẫn là \có thể được sử dụng ở cuối dòng để tiếp tục trên dòng tiếp theo.

Nhưng những gì \"ở giữa một dòng?

Lo lắng của tôi là một SSID giống như

A"
up rm -rf /\

Có bất kỳ mã hóa chung nào có thể được sử dụng cho các ký tự tùy ý vào trường SSID không?

Câu trả lời:


5

Trong Debian /etc/network/interfaces(hoặc bất kỳ bản phân phối nào khác sử dụng tiện ích ifupdown của Debian), một chuỗi backslash-newline bị loại bỏ và dấu gạch chéo ngược không phải là đặc biệt ở bất kỳ nơi nào khác. Một nhân vật trích dẫn kép cũng không phải là đặc biệt. Ký tự #bắt đầu nhận xét nếu đó là ký tự không phải khoảng trắng đầu tiên trên dòng (không tiếp tục). Null byte được coi là ký tự dòng mới (tôi nghĩ - trình phân tích cú pháp sử dụng chuỗi C và không có xử lý đặc biệt cho byte null, vì vậy chúng có thể gây ra sự nghịch ngợm bổ sung).

Các dòng cấu hình có dạng một tên tùy chọn theo sau là một giá trị, được phân tách bằng khoảng trắng. Khoảng trắng hàng đầu và dấu được bỏ qua. Một số tùy chọn tích hợp phân tích thêm dòng thành từ; giá trị của các tùy chọn ifaceluôn luôn chạy đến cuối dòng.

Ví dụ: dòng

wpa-ssid  "a  b"  "cd"  

đặt tùy chọn wpa-ssidcho chuỗi 12 ký tự "a  b"  "cd"(khoảng trắng bên trong được giữ nguyên).

Tập lệnh ifupdown của WPA SUPicant loại bỏ các trích dẫn kép ở đầu và cuối wpa-ssidchuỗi cấu hình, dòng trên tương đương với wpa-ssid a  b"  "cd. Bằng cách này, bạn có thể có khoảng trắng hàng đầu và dấu trong SSID.

Tôi không thể tìm thấy một vấn đề trích dẫn trong các kịch bản ifupdown WPA Cung cấp, vì vậy có vẻ như bất cứ điều gì mà ifupdown sẽ tạo ra đều an toàn.

Do đó, bạn có thể cho phép bất kỳ chuỗi nào dưới dạng SSID được đưa vào /etc/network/interfaces, miễn là nó không chứa bất kỳ byte mới hoặc null nào. Thêm dấu ngoặc kép xung quanh chuỗi (nếu bạn không, SSID có khoảng trắng ở đầu hoặc cuối hoặc cuối đó \, hoặc bắt đầu hoặc kết thúc bằng ", sẽ được đọc sai).


Thật ra tôi đã thử thành công wpa-ssid my ssid.
hultqvist

@phq - để rõ ràng, bạn đã có thể sử dụng dòng wpa-ssid=my ssid?
slm

@slm không, /etc/network/interfaceskhông sử dụng =cú pháp của nó, tôi đã thử ngay bây giờ và nó không hoạt động =.
hultqvist

@phq - nhưng theo quan điểm của bạn, bạn đã có thể cung cấp cho nó một SSID có khoảng trắng rồi chứ? my ssid?
slm

@slm có SSID với không gian luôn hoạt động
hultqvist

0

Câu hỏi và trả lời SO này có tiêu đề: Có một tiêu chuẩn xác định SSID và mật khẩu hợp lệ là gì không? trả lời một số câu hỏi của bạn

đoạn trích

Mục 7.3.2.1 của 802,11-2007 đặc điểm kỹ thuật ( http://standards.ieee.org/getieee802/download/802.11-2007.pdf ) định nghĩa SSID.

SSID hợp lệ là 0-32 octet với nội dung tùy ý. SSID có độ dài 0 biểu thị SSID ký tự đại diện (ví dụ trong khung yêu cầu thăm dò).

Không có bộ ký tự nào được liên kết với SSID - chuỗi NUL-byte 32 byte là SSID hợp lệ.

Điều này nghĩa là:

  • bạn không bao giờ nên sử dụng các hàm chuỗi bình thường khi thao tác SSID chung (strcpy () và bạn bè).
  • bạn không nên cho rằng SSID có thể in được, ví dụ, khi đăng nhập nó vào đĩa

Cũng có nhận xét này về câu trả lời cho câu hỏi SO:

Đã có phiên bản cập nhật của tiêu chuẩn ( http: // st Chuẩns.ieee.org / getieee802 / doad / 802.11-2012.pdf ), trong đó xác định SSIDEncodingtrường. Nó có thể là UNSPECIFIED(đối với dữ liệu tùy ý) hoặc UTF8.

Vì vậy, tôi sẽ tìm đến tiêu chuẩn mới nhất để được hướng dẫn và đảm bảo bạn có thể giải quyết những gì hợp pháp dựa trên điều đó.

Còn gì nữa không

Ngoài ra, tôi có thể có xu hướng tự bảo vệ mình bằng cách bình thường hóa đầu vào của người dùng bằng cách sử dụng một số dạng chức năng mã hóa URL (một cái gì đó sẽ hoạt động với SSID rõ ràng) hoặc đơn giản là loại bỏ các ký tự bất hợp pháp và đơn giản là không cho phép họ trước khi viết các chuỗi này vào tệp này .

Nhân vật kỳ lạ?

Vấn đề duy nhất tôi có thể tìm thấy với các ký tự lạ / đặc biệt liên quan đến interfacestệp là các loại lỗi được gửi chống lại trình cài đặt debian.

debian-Installer yêu cầu thông tin mạng không dây của tôi và sử dụng thành công để kết nối không dây với mạng. Nó cũng đã viết thông tin mạng không dây của tôi vào / etc / mạng / giao diện. Tuy nhiên, khóa WPA mà tôi đã nhập chứa ít nhất một ký tự đặc biệt và trình cài đặt debian không thoát hoặc trích dẫn (các) ký tự đặc biệt trong / etc / network / giao diện. Kết quả là, khi khởi động lại, hệ thống đã treo trong một thời gian rất dài trong quá trình khởi động khi nó cố gắng (không thành công) để kết nối lại với mạng không dây. Tôi đã khắc phục sự cố bằng cách trích dẫn khóa WPA được liệt kê trong / etc / network / giao diện. Điều này sẽ tự động xảy ra nếu khóa chứa các ký tự đặc biệt.

Ngoài ra còn có các lỗi này, một lỗi liên quan đến khoảng trắng trong SSID, các lỗi khác liên quan đến cụm mật khẩu:

Trong cả hai trường hợp, dường như việc bọc các chuỗi bằng dấu ngoặc kép là đủ để bảo vệ các giá trị cho cả hai.

Ví dụ bổ sung

Tài liệu chính thức

Đi sâu vào tài liệu chính thức tôi tìm thấy bit này ở đây:

Các tài liệu chính thức cho thấy ví dụ này:

ap_scan=2
network={
        ssid="test adhoc"
        mode=1
        frequency=2412
        proto=WPA
        key_mgmt=WPA-NONE
        pairwise=NONE
        group=TKIP
        psk="passphrase"
}

Vì vậy, dường như các khoảng trắng được cho phép, miễn là chúng được trích dẫn chính xác. Ngoài ra còn có ví dụ này giải thích cách cung cấp SSID có khoảng trắng cho iwconfigcông cụ:

Thêm tên (ssid) cho mạng bạn muốn tạo / tham gia. Sử dụng dấu ngoặc đơn nếu có một khoảng trắng trong tên.

   $ sudo iwconfig eth1 essid 'name'

Trình duyệt web

Tôi đã tìm thấy ví dụ này có vẻ là Debian dưới vỏ bọc, vì vậy ví dụ này có thể phù hợp với tình huống của bạn, nhưng thật khó để nói chắc chắn. Tôi chỉ đưa nó lên vì nó cho thấy một ví dụ về cách tôi mong muốn một phương thức mã hóa URI được phơi bày để bảo vệ chống lại các ký tự bất hợp pháp.

đoạn trích

Ví dụ 4 "Không gian trong ESSID", tiểu luận phát sóng 'Hopstock Gjestenett', với khóa WPA uiopzxcv

Vui lòng tránh các khoảng trắng trong ESSID. Trong trường hợp này, chúng tôi giải quyết với một encodeURI ('Hopstock Gjestenett'), để có được công thức khởi động sau:

   wpa-ssid=Hopstock%20Gjestenett wpa-psk=uiopzxcv

Vì vậy, bạn có thể mã hóa các khoảng trắng hiển thị trong SSID bằng cách sử dụng %20.

SSID

Tìm hiểu sâu hơn nữa tôi thấy nhận xét này từ trang Wikipedia trên Bộ dịch vụ (mạng 802.11) .

Mỗi BSS hoặc ESS được xác định bởi một mã định danh bộ dịch vụ (SSID) - chuỗi 1 đến 32 byte. Đây thường là một chuỗi có thể đọc được và do đó thường được gọi là "tên mạng". 6 Trong IBSS, SSID được chọn bởi thiết bị khách khởi động mạng và việc phát SSID được thực hiện theo thứ tự giả ngẫu nhiên bởi tất cả các thiết bị là thành viên của mạng.

Nhận xét này được hỗ trợ bởi bài trình bày này từ Blackhat EU 2013, có tiêu đề: Khai thác thực tế bằng cách sử dụng Mã định danh bộ dịch vụ độc hại (SSID) .

đoạn trích

  • Không có giới hạn nào được xác định đối với những ký tự nào có thể được sử dụng trong SSID (IEEE Std 802.11 ™ -2012)
  • Một số hạn chế dựa trên sản phẩm
    • Một số giới hạn ký tự (chỉ ascii)
    • Unicode

Vì vậy, về mặt kỹ thuật, bất kỳ ký tự nào cũng được phép trong SSID, các cách triển khai khác nhau như Windows XP, Windows 7, so với các phiên bản Linux khác nhau cho phép / không cho phép các tập hợp con của các ký tự trong SSID.

Người giới thiệu


1
Câu trả lời của bạn không đi đến điểm chính: lối thoát nào có sẵn trong /etc/network/interfaces?
Gilles 'SO- ngừng trở nên xấu xa'

@Gilles - cảm ơn, đó là một sự khởi đầu sớm hơn hôm nay tại nơi làm việc, tôi đã thêm một số thông tin bổ sung mà tôi đã tìm thấy nhưng sau đó đã không thêm vào A. Chủ yếu là các lỗi liên quan đến việc thoát các ký tự cho "wpa-ssid" & "wpa-psk".
slm

Tôi không thể nói nếu urlencoding essid hoạt động như một tham số khởi động nhưng nó không hoạt động trong tệp giao diện.
hultqvist

@phq - Tôi không ngạc nhiên, đây chỉ là một ý tưởng và mã hóa nói chung là cách bạn xử lý vệ sinh dữ liệu như thế này trong các ứng dụng khác, trích dẫn nó dường như là lựa chọn duy nhất khác, ngoài việc loại bỏ nó.
slm
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.