Нашел уязвимость, Opencart 1.5.5.1
Получил хэш паролей из бд в админку, есть доступ в админку.
Залить шелл через восстановление из бэкапа не получилось, просто открывается после клика восстановить белый экран и все, может быть что-то со скриптом намутили или какие-то расширения на сайте мешают нормально сделать. Но ни в логах ни ответа никакого нет.
Пробую через скрипт admin/controller/common/filemanager.php
Могу изменять файлы, переносить, но вот проблема в том, что через админку загружается файл и дописывается свое расширение, допустим shell.php.uhd673h76576
Но когда через filemanager пробую копировать/переносить, то все ровно дописывается расширения файла.
.SpoilerTarget" type="button">Spoiler: function copy()
Код:
Code:
public function copy() {
$this->language->load('common/filemanager');
$json = array();
if (isset($this->request->post['path']) && isset($this->request->post['name'])) {
if ((utf8_strlen($this->request->post['name']) request->post['name']) > 255)) {
$json['error'] = $this->language->get('error_filename');
}
$old_name = rtrim(DIR_IMAGE . 'data/' . str_replace('../', '', html_entity_decode($this->request->post['path'], ENT_QUOTES, 'UTF-8')), '/');
if (!file_exists($old_name) || $old_name == DIR_IMAGE . 'data') {
$json['error'] = $this->language->get('error_copy');
}
if (is_file($old_name)) {
$ext = strrchr($old_name, '.');
} else {
$ext = '';
}
$new_name = dirname($old_name) . '/' . str_replace('../', '', html_entity_decode($this->request->post['name'], ENT_QUOTES, 'UTF-8') . $ext);
if (file_exists($new_name)) {
$json['error'] = $this->language->get('error_exists');
}
} else {
$json['error'] = $this->language->get('error_select');
}
if (!$this->user->hasPermission('modify', 'common/filemanager')) {
$json['error'] = $this->language->get('error_permission');
}
if (!isset($json['error'])) {
if (is_file($old_name)) {
copy($old_name, $new_name);
} else {
$this->recursiveCopy($old_name, $new_name);
}
$json['success'] = $this->language->get('text_copy');
}
$this->response->setOutput(json_encode($json));
}
Есть какой-то вариант залить свой шелл в opencart помимо вышеперечисленных, либо как-то можно обойти strrchr?
Если залить шелл через админку, открыть полный путь, то отрабатывается только html, причем я загружаю php файл, не меняю mime.
На картинке пример.