从任意文件读取到Getshell

本文为打靶练习,靶场地址:https://github.com/crow821/vulntarget vulntargetI为本次实验环境

在本次渗透测试过程中,我认为Web打点部分比较有意思,内网渗透部分较为简单,不再叙述。

信息收集

端口扫描

直接全端口扫描,看看有啥东西

image-20221015164513536

结果出来并不乐观,只有两个比较有用的:80 IIS7默认页面 8000 Metinfo 7.5

image-20221015164612246

目录扫描

对两个端口分别进行目录扫描,在8000端口发现存在adminer

image-20221015164641882

在查询Adminer的利用姿势后,发现在低版本存在任意文件读取,此时进入漏洞利用的正轨。

image-20221015164739516

任意文件读取

确定PHPstudy的路径

随便打个路径,看看404页面能不能告诉我们他是什么搭建的

image-20221015164847609

新版本的PHPStudy

默认路径phpstudy_pro,尝试读取my.ini来试探是否存在该路径

image-20221015164943923

并不存在,可能是对方更改了目录名。

之后我使用了dict的方式,去探测到底这个目录被更改成了什么

我会在后文介绍一种方式,能够准确的读取到PHPStudy路径的方式,而不是像现在这样全凭运气

最终,通过爆破字典,我发现了目录被更改成了php,于是尝试读取网站的index.php

image-20221015165307378

仍然错误,可能网站的目录也被改了,很无语。

确定网站路径

于是需要读取到网站的绝对路径,第一个想到的就是Apache的配置文件,里面会暴露网站的绝对路径,立马看看PHPStudy的Apache的配置文件在哪,并尝试读取。

image-20221015165557233

就在我以为成功的时候,现实给我泼了盆冷水,这个程序有问题,导致读取的内容不完全。

作为第二个问题点,将在后文得到解决。

没事,作为一名合格的安服仔,突出的就是一个坚持不懈。

于是我决定继续翻找,终于找到了另外一个东西,vhosts文件夹,里面存在着这么一个文件0localhost_YOUR WEB PORT.conf

那对方是8000端口,在不考虑奇奇怪怪的场景下,对方的文件应该就是:0localhost_8000.conf,说干咱就干!

image-20221015170155783

终于读取到了,打开看看

image-20221015170216893

小黑子,漏出鸡脚了吧!

下载Metinfo源码,看看数据库配置文件的路径在哪,组合并读取

读取网站配置文件

image-20221015170322878

image-20221015170332845

OK,完美。

后续证明,它开启了MySQL的外链,于是直接Navicat连上去

其实在这里也可以直接读取MYSQL\data下的user.MYD,里面存储着MYSQL的用户名密码

image-20221015170504428

image-20221015170513661

可惜,这个确实解不开...

写入Webshell

确定IIS默认网站的绝对路径

直接into outfile写PHP马呗

但是发现对方网站目录设置了不可写,于是转战发现的80口的IIS。

按照惯性,肯定IIS的默认目录被改了,所以我直接选择读取一下IIS默认网站的绝对路径

image-20221015170951455

右键保存数据为,全局搜索Path

image-20221015171020104

中文目录写Webshell

似乎中文目录一直都是个大问题,这回也不例外。

先尝试写个123到目录里面: image-20221015171148687

但是访问失败了,后续发现,他会把/俱乐部/1.txt看成一个东西,结果就写到了:c:/vulnIIS/乱七八糟1.txt。写不进去网站的绝对路径。

于是经过我漫长的搜索,包括看了很多的什么MSSQL写中文目录问题等等...也没有解决。最终,我从Navicat本身入手,发现了问题。其实只需要修改一下连接编码即可:

image-20221015171359923

再次写入就没问题了。

image-20221015171427689

反思

做项目中包括打靶也是,为了顺畅可能有些凑巧凑出来的东西,不会在项目中完善。等到结束后在慢慢研究,找到一种更为通用的方法。

在本次打点中,暴露了两个问题:

针对这两个问题,展开了一定的研究,并最终得以解决。

获取PHPStudy的绝对路径

这里用了一个邪门的技巧:Windows的图标缓存。

可以尝试读取这个文件(该文件默认是隐藏的)

之后记事本打开就行(粗糙,但是很好用)

image-20221015171744473

一秒就看见了。

MYSQL读取不完全问题

利用BeichenDream的MYSQLT

在我本机需要管理员权限才可以运行,不知道是我的问题还是本身就需要管理员权限。

image-20221015172013258

进入后输入:

最后让Adminer向你发起连接:

image-20221015172057858

读取到的就是一个完整的文件了。