Oh, je hebt gelijk. Kon het niet vinden in de code, maar het blijkt elders te staan.
Met behulp van het cookie zetten kan ik inderdaad SSH aanzetten (dank je!), maar de code in die link geeft bij mij alleen "Uncaught TypeError: $.ajax is not a function at <anonymous>:1:3" errors, in diverse browsers op Mac en Win10.
Dat werkt natuurlijk alleen als je op een pagina zit waar
$.ajax gedefiniëerd is. De front page lijkt me een redelijke kanshebber. Anders even met iets anders een POST request doen, mogelijkheden te over.
Als ik na het zetten van de cookie naar /admin/ ga, kan ik e.e.a. aan configuratie opvragen:
Daar staat ook het admin password in, als het goed is.
code:
1
| $config['system']['webgui']['nas_passwd'] |
Dan gaat er iets verkeerd.
Ik was even vergeten hoe het ding werkt: je moet een password voor root zetten als je SSH wilt gebruiken, want het originele wachtwoord is niet bekend (en atonnas/backdoor is voor de /admin webinterface; maar die cookie zetten werkt daar ook voor).
Ondertussen wel uitgevonden dat de firmware file die je stuurde openssl encrypted is; encrypted/decrypten staat hier beschreven:
Klopt. Als je 'm decrypt en het rootfs uitpakt (
ubi_reader) heb je ook de PHP-code van de webgui.
Ik heb geprobeerd om de encrypted file op een usb-stick te zetten en daarmee de KD20 te booten, maar geen enkel resultaat. Idem voor met de decrypted file en de losse bestanden uit die file.
Ja, dat gaat niet zo simpel. Volgens mij kun je hem alleen upgraden via de webinterface. Booten van USB doet hij niet. EDIT: maar firmware upgraden wel, zie hieronder. Hij kan wel
booten van een special geformatteerde harddisk, alleen dat heb ik zelf nooit geprobeerd.
Als je na het inloggen (of: poging daartoe) in de webinterface even naar de URL kijkt dan staat daar een
error-parameter in die mogelijk vertelt wat er precies misgaat. Kun je zelf ook opzoeken in de code.
In plaats van
/action/folder_action.php kun je ook wat scripts uit de
/admin directory gebruiken om bestanden te downloaden of commando's uit te voeren. Config file staat in: /etc//nas_conf_db.xml.
/admin/download.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| <? include "./chk_pw.php";?>
<?php
$file = $_GET['path'];
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
} |
/admin/dir_action.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| <? include "./chk_pw.php";?>
<?
if(empty($_GET['type'])){
$errorNo = 1;
$msg = "NO Input var: type ";
NAS_APIError($errorNo, $msg);
}
switch ($_GET['type']) {
<<< SNIP >>>
case "rename":
exec('sudo mv '.$_GET['old_name'].' '.$_GET['new_name']);
$successNO = 3;
$msg = "Change name success!!";
NAS_APIsuccess($successNO, $msg);
break;
} |