发现
某次项目中遇到扫目录中奖了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%';
感谢您的来访,获取更多精彩文章请收藏本站。
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。