0X00 前言

团队A师傅发来个站,问我有没有得搞

正好在搞其他的站,卡住了,开干换个思路。

0x01 信息收集

开burp抓了下包,目标设置了url重写,开了报错,我们随意输入一个控制器就直接报错。

获取到web绝对路径。

抓包发现这样的请求

随手试了一下burpsuite的dnslog,发现请求过去并回显了,猜测后端使用file_get_contens来获取。

一个可回显ssrf,有什么用呢?

打内网?

尝试file协议,尝试读取文件,发现可以读。

但发现返回的内容不完整,猜测有截断,用php://filter协议base64编码一下绕过读取。

解码

有一个任意文件读取有什么用呢?

在这之前,其实是有用nmap扫了一下其他端口

开了挺多端口的,一个个测了一下发现999端口开着phpmyadmin。

结合任意文件读取,那么只要我们读取出mysql的账号密码即可进入phpmyadmin,之后的getshell方法就很多了。

thinkphp的目录结构根据官方文档一般都长这样。

而数据库文件一般是放在common/conf下面的。

简单猜了会,尝试读取index控制器。

之前的报错其实已经放出了index控制器在那个模块下面了,就是默认的home模块。

读取

没有返回,猜测是application目录改名了,结合之前的审计经验,一般会改为app。

再读取,成功。

接下来就是猜数据库文件存放的位置

一般会存放在common模块下面的config.php或者db.php,尝试了一下config.php,命中。

Base64解码得出源文件。

拿到账号密码,直奔phpmyadmin。

输入账号密码,回车,登陆成功。

后面拿shell就给A师傅去弄了。

0x02  URL Rewrite的一些疑惑

题外话:因为之前帮朋友搞了一些站也是这样的,有文件上传直接拿shell,但是没有办法访问,访问提示:

有拿到源码,.htaccess里面有对url重写,比如长这样的。

之前上传没法访问一直以为是重写的问题。

但其实也可能不是,有可能是马儿被杀了缘故,当文件不存在的时候才会提示这样。

在本地测试,拉了个thinkphp 3.2.3的项目,htaccess一样配置。

在根目录下写入个test.php,内容为phpinfo。可以直接访问。

删掉test.php,报错

换到二级目录下继续测试:

不存在文件的时候同样提示:

后面深入研究了一下那份源码发现也不是马儿被杀了的原因,应该由于它的分割符问题。

不是传统的/,而是点号,传统的文件路径访问与路由冲突了,最终也就没办法访问到uploads目录下的shell。

没想出对于这种路由有啥办法可以解决的,如果有知道的师傅欢迎评论交流。

更新:那个有问题的站也拿下了,原因确实是没有文件导致的,至于为什么没有写入成功又是另外一回事了。

更新2:感谢love17师傅的评论,关于htaccess的理解之前确实不对,删掉了,不误人子弟。

0x03 拿shell

由于上面的疑惑,生成了我错误的认知,导致我以为拿shell会比较麻烦,我的思路是phpmyadmin 日志方式导出一个符合thinkphp路由的shell到相应的控制器下,以绕过路由的检测。

但A师傅说直接into outfile 到images目录就可以了,那就是mysql版本不高也没有secure_file_priv的问题,直接导出shell了。

我:emmmmm

0x04 总结

对于rewrite语法,路由不熟悉导致了后续一系列问题,错误的认知还把自己带坑里面去了。

多开脑子容易秀逗。。

记一次渗透某XX站的更多相关文章

  1. HTTP攻击与防范-跨站攻击-01简介

    实验目的 1.掌握WEB渗透测试跨站攻击原理 2.了解WEB站点的跨站攻击脆弱性 3.修复存在跨站攻击可能的漏洞 实验原理 XSS又叫CSS (Cross Site script) ,跨站脚本攻击.它 ...

  2. <<< 入侵网站思路

    思路: 以下是入侵网站常用方法: 1.上传漏洞 如果看到:选择你要上传的文件 [重新上传]或者出现“请登陆后使用”,80%就有漏洞了! 有时上传不一定会成功,这是因为Cookies不一样.我们就要用W ...

  3. web安全测试排查

    漏洞排查思路: 1.上传漏洞 如果看到:选择你要上传的文件 [重新上传]或者出现“请登陆后使用”,80%就有漏洞了! 有时上传不一定会成功,这是因为Cookies不一样.我们就要用WSockExper ...

  4. 利用闭包向post回调函数传参数

    最近在闲逛XX站的时候,打算搞个破坏,试试有多少人还是用初始密码登陆.比较懒,所以直接打开控制台来写. 所以问题可以描述为: 向后端不断的post数据,id从1~5000自增,后端会根据情况来返回值r ...

  5. Java线程间通信-回调的实现方式

    Java线程间通信-回调的实现方式   Java线程间通信是非常复杂的问题的.线程间通信问题本质上是如何将与线程相关的变量或者对象传递给别的线程,从而实现交互.   比如举一个简单例子,有一个多线程的 ...

  6. JS绘制拓扑图示例 (JTopo)

    目前在做的项目是渔政的监控,需要用到的设备包括雷达,光电,站点信息等,想要更直观的展现设备之间的连接关系和状态信息,这时候需要画一张拓扑图 在做拓扑图之前,首先要学习一下,html里面另一个比较常用的 ...

  7. Java页面中EL的${}与<%= request.getParameter%>有什么区别? el 取不到值

    ${requestScope}操作的是request的作用域,相当于request.getAttribute();不过EL比这个更智能些,它不用强制类型转换就可以拿到了真实对象的值.request.g ...

  8. [js]利用闭包向post回调函数传参数

    最近在闲逛校园XX站的时候,打算搞个破坏,试试有多少人还是用初始密码登陆.比较懒,所以直接打开控制台来写. 所以问题可以描述为: 向后端不断的post数据,id从1~5000自增,后端会根据情况来返回 ...

  9. 01(a)一元函数_多元函数_无约束极值问题的求解

    1. 一元函数的极值问题  (函数光滑) 对于一个一元函数$f(x)$,怎么才能找出它的极值呢? 1.1根据定义:如果存在一点${{x}_{0}}$,在点${{x}_{0}}$的某个领域$U({{x} ...

随机推荐

  1. 如何发布H5界面可以让公网访问

    本文链接:https://blog.csdn.net/u013310119/article/details/81233560问题背景:手机APP里的H5界面要发布到公网,提供给第三方APP调用. 解决 ...

  2. Android平台云端打包证书使用说明

    原贴:https://ask.dcloud.net.cn/article/35985 Android平台云端打包证书使用说明 分类:HBuilderX 证书 Android 签名证书是一个应用的所有者 ...

  3. 安装好oracle后如何使用PLSQL连接【我】

    简单的说: 一.如果你本地安装的是32位的Oracle,可以直接在PLSQl中配置oracle安装路径下的相关目录文件,直接启动PLSQL 二.如果你本地安装的是64位的Oracle或者oracle服 ...

  4. 5.7.27版本mysql新增用户

    因为我们目前只有root,所以只能先用root登陆mysql,再新增用户: $ bin/mysql -u root -p Enter password: Welcome to the MySQL mo ...

  5. 查看所使用的Linux系统是32位还是64 位的方法

    方法一:getconf LONG_BIT # getconf LONG_BIT 1 1 我的Linux是32位!!! 方法二:arch # arch 1 1 显示 i686 就是32位,显示 x86_ ...

  6. phpexcel 导出excel无法打开,提示文件格式或文件名无效,文件损毁,解决办法

    使用过很多次phpexcel了,有时需要保存文件到磁盘,有时需要浏览器弹出下载.保存到磁盘一半不会出现问题,关键是浏览器弹出保存,经常会发生导出的excel文件无法打开,提示文件格式或文件名无效,文件 ...

  7. 【git基础】Permission denied (publickey). fatal: Could not read from remote repository

    运行以下git命令的时候出现错误 git push -u origin master error The authenticity of host 'github.com (13.250.177.22 ...

  8. 一次性清除页面上的所有setInterval

    参考链接:https://www.cnblogs.com/liujinyu/p/3668575.html

  9. sem_wait sem_post信号量操作进本函数

    sem_wait   sem_post 信号量的数据类型为结构sem_t,它本质上是一个长整型的数.函数sem_init()用来初始化一个信号量.它的原型为: extern int sem_init ...

  10. <automate the boring stuff with python> 正则强口令实例

    书中7.18的强口令实践题 写一个函数,它使用正则表达式,确保传入的口令字符串是强口令.强口令的定义是: 长度不少于8 个字符,同时包含大写和小写字符,至少有一位数字. 你可能需要用多个正则表达式来测 ...