《(CVE-2018-19986)D-Link DIR-818LW&828命令注入漏洞.docx》由会员分享,可在线阅读,更多相关《(CVE-2018-19986)D-Link DIR-818LW&828命令注入漏洞.docx(11页珍藏版)》请在第一文库网上搜索。
1、(CVE-2018-19986)D-1inkDIR-8181W&828命令注入漏洞一、漏洞简介D-1inkDIR-822和D-1inkD1R-8181W都是中国台湾友讯(D-1ink)公司的一款无线路由器。D-1inkDIR-8181WRev.A2.05.B03和DIR-822B1202KRb06中的RemOtePOM参数存在命令注入漏洞。该漏洞源于外部输入数据构造可执行命令过程中,网络系统或产品未正确过滤其中的特殊元素。攻击者可利用该漏洞执行非法命令。二、漏洞影响D-1inkDIR-8181WRev.A2.05.B03DIR-822B1202KRb06三、复现过程漏洞分析原理D-1inkDI
2、R-8181WRev.A2.05.B03和DIR-822B1202KRb06中,通过HNAP1协议访问SetROUterSettingS时,RemOtePOrt参数存在操作系统命令注入漏洞。在SetRO11terSettings.php源码中,RemOtPOrt参数没有经过任何检查,直接存放于$path_inf_wan1.web,并且在iptwan.php中的IPTWAN_bui1d_command函数中使用$Path_inf_wan1.7web变量作为iptab1es的参数,同样未做检查。构造SetRouterSettings.Xm1,使RemotePort中包含如te1netd的she11
3、命令,利用该漏洞执行非法操作系统命令。./etc/temp1ates/hnap/SetRouterSettings.php:$path_inf_wan1=XNODE_getpathbytarget(,“inf,,uid,$WAN1,0);#$WAN1=WAN-1;$nodebase=/runtime/hnap/SetRouterSettings/;JremotePort=query($nodebase.RemotePort);set($path_inf_wan1.web,JremotePort);./etc/services/IPTAB1ES/iptwan.phpfunctionIPTWAN_
4、bui1d_command($name)$path=XNODE2getpathbytarget(,iinf,uid,$name,0);$web=query($path./web);#web作为iptab1es的参数写入$_G1OBA1S“START”if(query($path.7inbfi1ter)!=,)$inbfn=cut(query($path.,inbfi1ter),1,$hostip=query($path.weba11owhostv4ip);if($hostip!=,)if(query($path.,inbfi1ter)!=)fwrite(a$_G1OBA1SSTARfwrite
5、(,:,y布(EM).t27(M7).M5H RrotTirawrerRrocm1 HnXKrServerSfYrMnDt:fr1,)10cItM2,3:“9rtfTrEoco0ing:CM-ZCetnt-ty*:tata1;c*aryttmiM*Mrku*1anguaye*7aivct1n,2.*0MW9=utf-t*Mp:EnVeIoPeZMto.tfS.M21V1iMa1mCMaIaUS:x9FW/mmw.9.org2WIT1M1ScMm.m1*vM*M9*chMM.m1.0rfMMMX*9*发送方收到之后,1ogin的action由request变成了1ogin,即发送用户名密码的过程
6、,密码是由用户私钥处理过的数据。1,C*tr1rtc1rcort:M7f.(MAgrt:N.tq:1.Act.1.IMtAcct*t-gtw.ruewAccF:M_w,n*f.一/:0-&XHI:0.一金KN1石i6;0三6二;;.wTJnTWr4*Met4J-rA1awM1tSS7.M(KNT.Hfe1卬OtfBM.;HIvZJWObr(1*4V11*)tMM4VyiC(5U(W1XIJTTTJ4J*t).0t::3:“,:1:3(:InternMocwWbyecap*vrd(4Yb1t)mIatefface (Mrw4.$rc1;IMt.Dt:It?IM2 Trani”SnteuPCco1
7、,SrcHrt:MDtRKt:XX:W5.Act:R1OT:* 01y3TOErH(W/”):K(H)MSrvro(:*rMtoemnm”mTrfrinneing*ciw*e1/11IT1Mt1MHMetj.N)TCMWCM*)fM1JM!WfrMJ41iMPtTWrMt.NmtcfUie4r*p0Mt11tata:It1toytt.RtE1MtRirtUp1jRQMt1”3WfSMR4t.aOnCM1Jv*.Sf6Awepfvw1o9im:uy/-.sw*/2Mi/njcMMiMtMo3f9fMNMSorfe:/VScMb*!.+:一*.:iMt:理解HNAP为了再深入理解HNAP,查看ht
8、docsCgibin二进制文件,简化流程如下:hnap_main()memset(acStack1708j0,0100);getenv(HTTP_AUTHORIZATION);soapaction=getenv(HTTP_SOAPACTION);request_method=getenv(REQUEST_METHOD);hnap_auth=getenv(,HTTP_HNAP_AUTH,);cookie=getenv(,HTTP_COOKIEJ;referer=getenv(HTTP-REFERER);memset(php_path,0,0x100);当未指定soapaction时,默认请求为GetDeviceSettingsif(soapaction=(char*)00)soapaction=e1se_si=strstr(soapactionjparse-param-va1ue(Var2jAction,action);parse-param-va1ue(uar2jUsernam