Можно ли взломать HTTP-серверы в локальной сети из Интернета?

348
Mister Mystère

Я установил веб-сервер на микроконтроллере ESP8266 внутри моей локальной сети. Запросы HTTP GET, отправленные на это устройство, могут включать и выключать сетевую розетку, и я планирую развернуть пару из них по дому.

Эта ЛВС подключена к Интернету с помощью стандартного интернет-бокса (маршрутизатор + модем). Я хочу запретить кому-либо извне локальной сети, в том числе кому-либо из Интернета, отправлять что-либо на микроконтроллер.

Давайте предположим, что люди не могут взломать мой WPA-PSK-защищенный Wi-Fi, мои настройки касаются нарушения безопасности? Насколько сложно кому-то взломать мои умные розетки DIY?

0

2 ответа на вопрос

1
acejavelin

Although anything is possible, if you don't have any ports mapped via port forwarding, sometimes called virtual server, especially 80, 443, and 8080, or whatever ports your webserver uses... The chances of an attack from outside the LAN getting through your router to that device are near zero.

But again, without a more thorough security review, don't take this as the final answer. If there is a will, there is a way no matter what precautions you take.

Благодарю. Гордон Дэвиссон, похоже, нашел лазейку. Что вы думаете об этом? Mister Mystère 8 лет назад 0
Впрочем, весьма вероятно, что для того, чтобы кто-то сделал это, ему потребуются очень конкретные знания о вашей внутренней сети, включая IP-адрес и точный используемый синтаксис ... Подделка прицела? Возможно, но в вашей жилищной ситуации, вероятно, так же вероятно, как быть укушенным акулой. Для этой работы человек должен знать высокий уровень детализации вашей внутренней сети и необходимых команд. Это может быть незначительной проблемой, если у вас есть достаточно хорошо осведомленный друг (и) со шутником, но я, вероятно, не буду беспокоиться. В худшем случае это работает ваши огни, а не ваш банковский счет acejavelin 8 лет назад 0
Правда, хотя я беспокоюсь о людях, которые активируют вентиляторы обогревателя в моей квартире, когда меня нет (также за счет за электричество ...). Таким образом, ни у кого за пределами моей сети нет способа перечислить все машины, прослушивающие порт 80, и перебирать запросы, пока они не получат ответ? Mister Mystère 8 лет назад 0
Опять же, говорить, что это не так, было бы ложью, но если порт 80 в брандмауэре закрыт, внешний пользователь не сможет получить к нему прямой доступ. Реальность такова, что всегда есть способ взломать что-нибудь, при наличии достаточного количества времени, ресурсов и какого-то желания сделать это ... Но реальность в вашей ситуации - вероятность того, что это произойдет, очень мало, приближаясь к нулю. acejavelin 8 лет назад 0
1
Gordon Davisson

While it shouldn't be possible for anyone on the outside to access the server directly (as long as you don't forward any ports on the router), you'll be vulnerable to something like Cross-site request forgery. For example, if someone sent you an email message in HTML format (or get you to load a web page, or...), with an inline image loaded from http://192.168.1.50/control?outlet=all&action=off (or whatever its IP address and syntax are), your mail client will try to load an image from that URL, and your outlets will turn off (or whatever).

So, if you have any sufficiently geeky friends who know your network setup, expect to get pranked. Actually, you should also expect random XSRF hits trying to exploit random other devices you may or may not actually have; if the controller's web server gets confused by any of these, they may break it accidentally.

[Update] Securing this better will depend a lot on what crypto capabilities the web server has -- I didn't see much info in a quick search, so I'm not sure what it can do. The simplest thing to do is add a password variable to the request. This isn't particularly secure, since it'll be visible on the wire, stored in history on the client and logged on the server, etc, but it's better than nothing (and better than using weird syntax, since it's easy to change). Do not use the same password you use for anything else.

Switching from GET to POST would also help a bit, especially since the HTTP standard says that GET requests aren't supposed to change the state of the server -- that is, it's supposed to be safe for clients to send/not sent GET requests depending on e.g. the state of their caches. Using HTTPS would help even more (if the server supports it). Using WebDAV digest authentication (instead of a password string) would also be good (again, if the server supports it), but you'd need to add some sort of protection against replay attacks for it to be really effective.

Очень интересно, большое спасибо! Есть ли способ защититься от этого, возможно, что-то добавить в прошивку веб-сервера? Например, если синтаксис не интуитивно понятен, они не смогут этого сделать, если не будут перехватывать запросы в моей сети изнутри? Mister Mystère 8 лет назад 0
@ MisterMystère Смотрите обновление. Gordon Davisson 8 лет назад 0
Отличный ответ, спасибо. Вопрос закрыт! Mister Mystère 8 лет назад 0

Похожие вопросы