(CVE-2018-19986)D-Link DIR-818LW&828命令注入漏洞.docx
(CVE-2018-19986) D-Link DIR-818LW&828 命令注入漏洞一、漏洞简介D-LinkDIR-822和D-LinkDlR-818LW都是中国台湾友讯(D-Link)公司的一款无 线路由器。D-Link DIR-818LW Rev.A 2.05.B03 和 DIR-822 Bl 202KRb06 中的 RemOtePOM参数存在命令注入漏洞。该漏洞源于外部输入数据构造可执行命令过 程中,网络系统或产品未正确过滤其中的特殊元素。攻击者可利用该漏洞执行非法 命令。二、漏洞影响D-Link DIR-818LW Rev.A 2.05.B03DIR-822 Bl 202KRb06三、复现过程漏洞分析原理D-Link DIR-818LW Rev.A 2.05.B03 和 DIR-822 Bl 202KRb06 中,通过 HNAPl 协 议访问SetROUterSettingS时,RemOtePOrt参数存在操作系统命令注入漏洞。在 SetROllterSettings.php源码中,RemOtPOrt参数没有经过任何检查,直接存放于 $path_inf_wanl."web",并且在 iptwan.php 中的 IPTWAN_build_command 函数 中使用$Path_inf_wanl.7web"变量作为iptables的参数,同样未做检查。构造 SetRouterSettings.Xml,使 RemotePort 中包含如 telnetd 的 shell 命令,利用该 漏洞执行非法操作系统命令。./etc/templates/hnap/SetRouterSettings.php:$path_inf_wanl = XNODE_getpathbytarget(', “inf",,'uid", $WAN1, 0);#$WAN1 = "WAN-1";$nodebase="/runtime/hnap/SetRouterSettings/"JremotePort = query($nodebase."RemotePort");set($path_inf_wanl."web, JremotePort);./etc/services/IPTABLES/iptwan.phpfunction IPTWAN_build_command($name)$path = XNODE2getpathbytarget(',"i "inf", ,uid, $name, 0);$web = query ($path."/web");#web 作为 iptables 的参数写入$_GLOBALS“START” if (query($path.'7inbfilter") !=',")$inbfn = cut (query ($path. ,inbf ilter), 1, $hostip = query($path."weballowhostv4ip");if ($hostip !=",') if (query ($path. ,inbfilter") !="") fwrite( "a"$_GLOBALS"STARfwrite(,<a,j$_GLOBALS"START", $iptcmd." -s ".$hostip." -p tcT", $iptcmd." -p tcp -dport ".$web." ,.,-j CK-INBOUND". $inbf n., n");p -dport , .$web." -j ACCEPTn"); )elseif (query($path. ,inbfilter" )!=",) fwrite("a,$_GLOBALS"START,j $iptcmd." -p tcp -dport ".$web." ',.,-j CK_INBOUND". $inbf n. ,");b." -j ACCEPTn");)fwrite( "a"i$_GLOBALS "START" , $iptcmd.', -p tcp -dport ". $wePS:服务器的Web目录为htdocsWeb/关于HNAPThe Home Network Administration Protocol (HNAP) is an HTTP-Simple Object Access Protocol (SOAP)-based protocol that can be implemented inside of network devices to allow advanced programmatic configuration and management by remote entities.HNAP是由PUreNetWorkS开发的协议,后续由CiSCo管理与开发。HNAP用于网 络设备之间的交互,该协议基于SOAP和HTTP,以PoSt的方式发包。使用HNAP:在HTTPheader中加入SOAPACtion,该字段中会指明请求的操作, 如Login,并向httpipHNAPl发送数据,数据形式为xml。举个栗子,下图是登录时的抓包:192.168.0.1向路由器192.168.0.2发送数据,在SOAPAction中指定了请求内容。路由器收到之后以LoginResponse回复发送方,返回了一些登录需要的关键数据. tr-> ¾: ,y" 布'(E M") . t< < i . ”,2*» (tfwt XIt Src:(Mie»:fa:la:91:W). Oil: M:9f:b3:M:M:4b (M:9f IWl »votcol Vrlon 4. Src: l2.1tt.l. 0(t: l2 IM ,2» TransBission Control Protocol. Src Port: M, Ost Port: 3S774r Sq: 48, Act W. Ln: S 口 ItMttwblM TO SMMt (2 byt> 27(M7). M<5H Rrot Tirawrer Rrocml HnX Kr Server SfYrMn Dt: frl, )1 0c ItM 2,3:“ 9rtf Tr<nsfr >Eoco0ing: CM-Z Cetnt-ty*: tatal; c*ar<utrWJ rMNTT* “on 1/1)Tiae sinc re*mt: M*3eN7 MCcMt)lMi: attp:/lW.1W. 1MU1).HTTP CaMlnE r*pon* FU CMa: 49 t>yt tmiM *Mrku* Languaye* <7aivc tln,2.*0MW9="utf-t*<Mp: EnVeIoPeZMto.tfS.<M2lVli<Ma lmCMaIaUS: x9FW/mmw. 9. org2W ITlMLScMm.ml*vM*M9*chMM. ml.0rfMMMX*9*<M9:tnwlope>发送方收到之后,login的action由request变成了 login,即发送用户名密码的过 程,密码是由用户私钥处理过的数据。1,"C*trl rtcL >rc ort: M7f. (M Agrt: N. tq: 1. Act. 1. I MtAcct*t-g tw. ru<ew AccF : M_w,n*f . 一/: 0-& X HI :0 . 一金 KNl石i6;0三6 二;;.wTJnTWr4* M<atl) I . VtAfl4tU eairf Content-Type: t*t*l; car>et4J-rAlawMltSS7.M (KNT¾. Hfe1卬 OtfBM.; H IvZJ W>» O br (l*4 Vll*)t MM4 Vyi C(5U (WlX IJTTTJ 4 J*t< 9EtMTIWt II. Brc:(M:tf »3.M:N:4t>). 0>t: :3:“,:1:3 (:Intern< >Moc w<" 4. Sr¢: :«i M .2. 0t IH IM .IM*A Alr; AOlAMMSOMMeaJKMSMTM22 1555MM7V C4l:7TM Content LMftMI 4NraraISU"MtP m 匕 1MW*11 HnFWimt 11 Rton 3 ftM 41j il Data: O bft9Htni RartMf UftfMfi CsaiWfUMMcI.*IgAfrFf路由器验证登录的用户名和密码,返回登录成功信息。 4 M *ytn wu (i blt> W by<e cap*vrd (4Y blt) m Iatefface (Mr<t II. Src "3 ;“:”:M ”:3 M:M « Mret rMl Wr>w> 4. $rc 1«; IM t. Dt: It? IM 2 Trani” Snteu PCcol, Src Hrt: M Dt RKt: X" X<: W5. Act: R LOT: * 0 ly3 TO ErH (W /”): K(H) MSrvr< MK/verf> o(: *r M toe m n m” m Trfr inneing* ciw*e<vrVtH fyR tMtU; ar*"t,'2 VrM (MTT>1/11ITlM tlM HMetj .N)TCM WCM*) fMlJM! WfrM J4l iMPtTWr"Mt. . Nm t> cfUie4 r*p0Mtll tata: Itl toytt .RtElMt RirtUp LjRQMtl ”3WfSMR4t.aOnCMlJv*. Sf 6 A <wep f vw1o9 im : uy /-.sw*/2Mi/njcMM iMtM<o 3f9f <MNM S or fe: / V¾ScMb *!.+:"一*".:i<M aalMtf.«rf/i(aprawlHe><Mt :理解HNAP为了再深入理解HNAP,查看htdocsCgibin二进制文件,简化流程如下:hnap_main()memset(acStackl708j0,0×100);getenv("HTTP_AUTHORIZATION");soapaction = getenv("HTTP_SOAPACTION")