Çavdêrî û birêvebirina dûr a cîhazên Linux / OpenWrt / Lede bi riya porta 80, berdewam kir

Ev beşa dawî ya gotarê ye, li vir destpêk e habr.com/en/post/445568
Cara paşîn min nivîsî ku min çawa çavdêriya cîhazê bicîh kir, naha em ê li ser rêveberiyê biaxivin. Di danûstandinên bi "teknîsyenên" re li ser milê Xerîdar, ez bi gelemperî bi têgihîştinek tixûbdar a kapasîteyên cîhazên weha piçûk (bi çavkaniyên bîranîn û performansa kêm) re rû bi rû dimînim, pir kes bawer dikin ku "ya herî zêde ku em hewce ne ev e ku em ji nû ve bişînin, ji bo tiştek bêtir. cidî em ê tîmek bişînin.”
Lê pratîk nîşan dide ku ev bi tevahî ne rast e. Li vir navnîşek piçûk a karên gelemperî yên gelemperî ye:

  1. Teşhîs û çareserkirina torê. Li pişt porta ethernet a routerê we bi gelemperî perçeyek din a hardware heye ku navnîşana IP-ya xweya hundurîn heye. Carinan, hûn dikarin (divê) wê "ping" bikin. An jî rêveberiya tunelê - heke tunel ji nişka ve li ser routerek ku bi modemek 3G-ê dixebite ranebe, lê em dikarin routerê bixwe bibînin.
  2. Parastina pergalê. Nûvekirina firmware, nûvekirina skrîpta karûbarê.
  3. Çalakiya hevsengiyê. Dikare ji vê re were gotin "perversion", lê têgeha "hevseng" wekî, ez vedibêjim, "qabiliyeta lîstikvanek sîrkê ku di pozîsyonek laş de ne aram de hevsengiyê biparêze" - çêtir tê. Rewşên weha ji ber budceya sînorkirî ya xerîdar derdikevin. Li jêr min çend mînak dan, lê... Ew rasterast bi temaya çîrokê ve girêdayî ne, min di têbiniyan de daniye

çavdêriya Wi-FiMijarek modê ya van pênc salên dawîn, nemaze di nav zincîreyên firotanê yên federal de. Hûn bi bêhnfirehî li qatên bazirganiyê digerin, û têlefona weya desta ya bi Wi-Fi vekirî ye, di hewildanek ku li ser hin mijarên torê "bisekine", bi rêkûpêk pakêtên Daxwaza Probeyê dişîne, ku dikare were analîz kirin da ku were hesibandin. tu: tu çend caran tê vê dikanê, ji ber çi sedeman? tu li ser trajektoran dimeşî û hwd. Dûv re dane têne berhev kirin, analîz kirin, nexşeyên germahiyê têne xêz kirin, û rêveber ji bo wêneyên weha ji rêveberî an veberhêneran drav "distînin". Welê, heya niha… "pere tune, lê hûn ragirin...", û encam (rast) jixwe pêdivî ye ku were xuyang kirin, strana kevn a xweş dest pê dike: "Erê, erê, wê hingê bê guman em dê cis û her tiştê ku hûn dixwazin saz bikin, lê naha divê em encamê nîşanî Xerîdar bidin! Bi awayê, me ji bîr kir ku em bibêjin ku Xerîdar destûr da me ku em alavên xwe bi riya Wi-Fi ve girêbidin, lê bi gelemperî, mîna ku em xerîdarên mêvan bin. Ji ber vê yekê em neçar in ku rêwerên hevseng çêbikin - çend jêr-navberên WiFi têne hilanîn, yek ji wan bi xala germ ve girêdayî ye, û ya duyemîn çavdêriya hawîrdorê dike, bi dilşikestî encama tcpdump li ser xwe bar dike, dûv re naveroka pelê li arşîvekê pak dike û xetere dike. mirina ji "zêdexwarinê" hewl dide ku naveroka li ser servera FTP-ê birijîne. Ne ecêb e ku routerê hevsengiyê bi gelemperî "hilweşe" û bi rengekî pêdivî ye ku ji dûr ve were "vejandin".

ÇapEw hêsantir e ku meriv rewşê li vir bi tiştek wekî vê daxuyaniya xerîdar vebêje: "Em torgilokek nenavendî ya xalên germ dixwazin ku dê li ser alavên ku modela wan ji berê de nayê zanîn, bi kanalan bixebite, lê yên ku em hîna nizanin. Oh, me ji bîr kir ku em bibêjin, em ne tenê dixwazin reklamê ji xerîdaran re nîşan bidin, lê di heman demê de her tiştî li dora cîhê ku lê tê saz kirin analîz bikin. Na, em hîn nizanin çima, lê em ê vê yekê fêhm bikin, guman nekin, me karîbû bi vê ramanê re were."

Û divê em ji bîr nekin ku ji ber gelek rewşên berê nenas, kontrol divê di şert û mercên ne-standard de were kirin, dema ku em nekarin rasterast bi riya IP-ê ve bi routerê ve girêdayî bin: port û neçar in ku bi tenê li benda çalakiyê bin. Heke em ji xwe razber bikin, diyaloga di navbera server û router de dikare bi vî rengî were xuyang kirin:

  • Router: Slav. Ez routerek wusa û wusa me, gelo ji min re peywir hene?
  • Server: router filan û bêvan, min tu qeyd kir, ku tu sax î. Li vir dijwariyek heye: encama fermana ifconfig nîşanî min bide?
  • Router: Slav. Ez routerek wusa û wusa me, cara paşîn we xwest ku hûn encama ifconfig nîşan bidin, li vir e. Ma ji min re peywir hene?
  • Server: router filan û bêvan, min tu qeyd kir, ku tu sax î. Ji bo we kar tune.

Pirsa herî balkêş: routerek dûr çawa dikare hejmarek agahdarî bişîne? Di beşa paşîn de, min diyar kir ku ji ber çavkaniyên tixûbdar, router tenê wgetek "hilweşînkirî" heye, ku tenê bi GET-ê re dixebite û ne tiştek din; xerîdar an qulikê FTP-ê tune. Bi rastî, em hewceyê rêbazek gerdûnî ne, bêyî ku taybetmendiyên kombûna wêneyê. Min li ser karanîna wget rûnişt. Bi rastî, ez çawa "rawestiyam" - min tenê bijarek tune :)

Just a disclaimerÇareseriya rêveberiya min dixebite, ne pir tixûbdar e, û ez pê bawer im ku ew xelet e, hetta ku ew li piraniya xerîdarên min be. Hûn çawa dikarin wiya bi aqilmendî bikin - amûrek piçûk binivîsin ku daneyên binary POST bi porta 80-ê re dişîne. Wê (bikarhêner) têxin nav firmware router û bi karanîna bash bigihîjin wê. Lê rastî ev e ku: a) pêdivî ye ku em zû zû b) belkî hewce ne ku em her tiştî li ser "zozanên router" ên heyî bikin c) "Zirarê nekin!" - heke router dixebite û karên din dike, hewl bidin ku guhartinên ku dê bandorê li fonksiyona heyî neke.

Werin em derbasî pêkanînê bibin. Ka em bibêjin xerîdarê we dixwaze bi "klîkek mişkê" routerê ji zabbix bi hêsanî û xwezayî ji nû ve saz bike. Îro em ê dest bi danasîna pêkanîna bi Zabbix bikin.
Di pêşeka "Rêveberî" -> "Skrîptan" de, skrîptek nû lê zêde bikin. Em jê re dibêjin "Reboot", wekî fermanek "php /usr/share/zabbix/reboot.php {HOST.HOST}" têkevin.

Çavdêrî û birêvebirina dûr a cîhazên Linux / OpenWrt / Lede bi riya porta 80, berdewam kir

Paşê: Menu "Şopandin" -> "Daneyên herî dawî" -> "Li ser girêka torê ya xwestinê rast bikirtînin." Ev e ya ku menu dê piştî lê zêdekirina senaryoyê xuya bike.

Çavdêrî û birêvebirina dûr a cîhazên Linux / OpenWrt / Lede bi riya porta 80, berdewam kir
Li gorî vê yekê, me skrîpta reboot.php datîne pelrêça /usr/share/zabbix (dibe ku ya we cûda be, ez pelrêça root ya zabbixa bikar tînim).

Safety DisclaimerJi bo ku ravekirin di skrîptê de zelaltir bibe, ez tenê nasnameya routerê bikar tînim, lê şîfreyê bikar naynim. Di guhertoya hilberînê de kirina vê yekê nayê pêşniyar kirin! Çima min ev kir: ji ber ku pirsa mezin ev e ku meriv şîfreyên ji bo routeran li ku hilîne? Di zabbixe xwe de di "daneyên envanterê" de? Pratîka nakokî. Alternatîf: gihandina derve ya pelê reboot.php bixwe bisînor bike

Pelê reboot.php

<?php
	// присваиваем параметры с консоли переменным
	$user = $argv[1];
	// ВНИМАНИЕ. Вот здесь в целях безопасности все-таки прописывать пароль устройства! Но для демонстрации мы будем обращаться к базе данных без использования пароля. 
	//$password = $argv[2];
		
	$conn=new mysqli("localhost","db_user","db_password","db_name");
	if (mysqli_connect_errno()) {
		exit();
	}
	$conn->set_charset("utf8");
			
	// "Отправляем" команду reboot за счет изменения поля task таблицы users. В поле task можно отправлять любую команду.
	$sql_users=$conn->prepare("UPDATE users SET task='reboot' WHERE id=? AND status='active';");
	$sql_users->bind_param('s', $user);
	$sql_users->execute();
	$sql_users->close();
?>

Navê pêger. Pirs vekirî dimîne: "meriv çawa encama pêkanîna fermanek ji cîhazê bi dest dixe." Ka em li peywirê binêrin ku emrê ifconfig wekî mînak bikar tînin. Ev ferman dikare ji cîhazê re were şandin:

message=`ifconfig`; wget "http://xn--80abgfbdwanb2akugdrd3a2e5gsbj.xn--p1ai/a.php?u=user&p=password!&m=$message" -O /tmp/out.txt

, ku li:
message=`ifconfig` - em encama derketina fermana ifconfig li guhêrbara mesajê $ vediqetînin
wget"xn--80abgfbdwanb2akugdrd3a2e5gsbj.xn--p1ai/a.php - skrîpta me ya a.php ya ku routeran tomar dike û ji wan peyaman distîne
u=bikarhêner&p=şîfre!&m=$peyam - pêbawer û nirxa guherbara daxwazê ​​m - naveroka guhêrbara $message destnîşan dike
-O /tmp/out.txt - Di vê rewşê de em ne hewce ne ku pelê /tmp/out.txt derxe, lê heke ev pîvan neyê diyar kirin, wget nexebite

Çima ev kar nake?Ji ber ku ew qulikek ewlehiyê ya potansiyel e. Çewtiya herî bêzerar a ku dikare çêbibe ev e ku, mînakî, di derana fermana we de karakterek "&" hebe. Ji ber vê yekê, pêdivî ye ku hem her tiştê ku ji router têne şandin û hem jî her tiştê ku tê serverê were fîlter kirin. Erê, ez şerm dikim, bi rastî. Di berevaniya xwe de, ez tenê dikarim binivîsim ku tevahiya gotarê ji bo birêvebirina rêgezên bi firmware û kanalên ragihandinê yên ku ji berê ve ne diyarkirî têne rêve kirin ve girêdayî ye.

Welê, destpêkek ji bo pêşerojê: Min hîna fêhm nekiriye ku meriv çawa amûrên zabbix standard bikar tîne da ku encamên (mînak, encama pêkanîna fermanek) ku têne serverê nîşan bide.

Ez ji we re bi bîr tînim ku hemî çavkanî dikarin ji depoya Git-ê li vir werin wergirtin: github.com/BazDen/iotnet.online.git

Source: www.habr.com

Add a comment