一次adminer之旅

发现

某次项目中遇到扫目录中奖了adminer.php,所以对adminer的应用做个小总结。

应用

肯定admirer版本

adminer的大约界面普通如下图,能够经过界面获取版本信息。

admirer<=4.6.2时,能够应用mysql的”LOAD DATA LOCAL INFILE”特性读取mysql客户端代码,当应用adminer去访问我们搭建的歹意mysql效劳器,就能够读到adminer效劳器上的恣意源码。

搭建歹意mysql效劳器

MySQL_Fake_Server

https://github.com/fnmsd/MySQL_Fake_Server

python3写的,实战中跑起来后没有读到文件。

Rogue_mysql_server

https://github.com/rmb122/rogue_mysql_server

go写的,实战跑起来没读到文件

Rogue_Mysql_Server

https://github.com/Gifts/Rogue-MySql-Server

python2完成,能正常读文件,但是读到的文件长度有限制,无法读取大文件

MysqlHoneypot

https://github.com/qigpig/MysqlHoneypot

python2完成读微信ID的蜜罐,有个师傅在issues里提了读大文件的处理办法

https://github.com/qigpig/MysqlHoneypot/issues/5

参考缝缝改改能够正常在python2环境读大文件

应用操作系统数据库文件获取网站绝对途径

和大多数恣意文件读取破绽一样,我们要读到网站文件需求晓得网站文件的绝对途径或者相对途径。

判别操作系统

经过盲读下列文件,能够判别当前系统的操作系统,

windows系统:
c:\\windows\\win.ini
c:\\windows\\system32\\drivers\\etc\\hosts
linux系统:
/etc/passwd
/etc/hosts

判别系统后进阶应用

一种恣意文件读取的通用应用思绪就是读取系统源码,经过审计源码发掘破绽拿到效劳器权限。另一种是配合一些开放的其他效劳取得权限,比方adminer这种情形就能够读数据库配置,然后衔接数据库执行sql语句写shell。但无论是读源码还是读配置文件,都会需求晓得相应文件的途径,那我们怎样判别源码的途径呢?

windwos和linux系统都有一些特殊文件,我们尝试去读这些文件,就能获取到web效劳的绝对途径。

windows

https://www.howtogeek.com/232779/how-to-rebuild-a-broken-icon-cache-in-windows-10/

windows自带一个图标缓存的数据库,里面会各个文档文件的图标信息,即能够包含web效劳的一些途径,分离恣意文件读取或下载来获取web途径

win7和vista中icon cache途径
C:\\Users\\<your username>\\AppData\\Local\\IconCache.db
C:\\Users\\administrator\\AppData\\Local\\IconCache.db
win8和win10也有上面的文件,但是真正运用的是下面途径中的数据库
C:\\Users\\<your username>\\AppData\\Local\\Microsoft\\Windows\\Explorer
C:\\Users\\administrator\\AppData\\Local\\Microsoft\\Windows\\Explorer
•    iconcache_16.db
•    iconcache_32.db
•    iconcache_48.db
•    iconcache_96.db
•    iconcache_256.db
•    iconcache_768.db
•    iconcache_1280.db
•    iconcache_1920.db
•    iconcache_2560.db
•    iconcache_custom_stream.db
•    iconcache_exif.db
•    iconcache_idx.db
•    iconcache_sr.db
•    iconcache_wide.db
•    iconcache_wide_alternate.db

解密IconCache.db的文件运用下面的脚本

https://github.com/cereme/FirstSound

https://github.com/Bikossor/Windows-IconFixer

IconCacheViewer.exe

linux

实质就是linux系统locate命令应用到的数据库,数据库文件里包含了系统内的一切本地文件途径信息

/var/lib/mlocate/mlocate.db
/var/lib/locate.db

应用php框架获取网站相对途径

由于本文章讨论的是adminer.php,网站一定是php的,所以能够先判别网站有无运用一些知名框架,如thinkphp,Laravel,yii等框架。即目的网站的文件途径能够参考对应php框架目录,下面以一次thinkphp 5.0.20实战案例为例

Thinkphp

扫目录发现目的存在adminer.php,且访问LICENSE.txt文件和页面报错可判别框架为thinkphp框架

读文件判别操作系统,发现是windows系统,尝试读icon cache失败,即不能经过上面引见的办法取得web效劳的绝对途径

尝试用adminer读取index.php(不论什么框架,有无二开,index.php文件都是我们能够经过黑盒察看目录构造判别到其相关于adminer.php的相对途径的,即该文件是一定能读到的)

读index.php中写到的thinkphp/start.php,提示thinkphp的引导文件是base.php

读thinkphp/base.php,该文件能够查看到thinkphp各模块对应目录,以及thinkphp版本等信息

尝试读index.php中提到的build.php能够看到应用配置文件common.php,config.php,database.php

普通的thinkphp应用目录是application,而本次这个目的的index.php中写了应用目录是apps,所以正确的配置文件途径是

apps/common.php
apps/config.php
apps/database.php

胜利读到数据库账号密码,能够登录adminer后台

结论
遇到thinkphp5可关注的高价值文件
index.php
build.php
thinkphp/base.php       thinkphp引导文件
apps/common.php
apps/config.php
apps/database.php
application/common.php
application/config.php
application/database.php

adminer后台战法

应用思绪和拿到数据库权限怎样getshell的思绪分歧

获取网站绝对途径

不论什么数据库,要写shell必需得晓得网站的绝对途径,怎样搞绝对途径呢?

网页报错

局部网站配置不当,我们用adminer执行一些操作时会报错出adminer系统的web绝对途径

操作系统数据库文件

Windows的IconCache或者linux的located.db

手工猜想

能够先读取mysql的装置目录,再根据mysql的途径命名规则猜想网站途径。

select @@basedir
日志文件

尝试读取网站的日志文件,特别是报错日志,很可能有出错文件的绝对途径

例如上面的thinkphp案例,上述几种方式均没获取web途径,最终经过读日志找到途径。

runtime/log/202111/30.log
数据库信息

翻越数据库中的信息,有可能由于一些配置功用能看到web途径

写webshell

以mysql数据库为例

outfile

写shell需求判别当前有没有设置secure_file_priv,只要当secure_file_priv为空才有权限写文件,这个配置由my.ini定义,无法在执行sql的情形更改配置。

show global variables like '%secure%';
------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞13赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片