记一次渗透某XX站
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站的更多相关文章
- HTTP攻击与防范-跨站攻击-01简介
实验目的 1.掌握WEB渗透测试跨站攻击原理 2.了解WEB站点的跨站攻击脆弱性 3.修复存在跨站攻击可能的漏洞 实验原理 XSS又叫CSS (Cross Site script) ,跨站脚本攻击.它 ...
- <<< 入侵网站思路
思路: 以下是入侵网站常用方法: 1.上传漏洞 如果看到:选择你要上传的文件 [重新上传]或者出现“请登陆后使用”,80%就有漏洞了! 有时上传不一定会成功,这是因为Cookies不一样.我们就要用W ...
- web安全测试排查
漏洞排查思路: 1.上传漏洞 如果看到:选择你要上传的文件 [重新上传]或者出现“请登陆后使用”,80%就有漏洞了! 有时上传不一定会成功,这是因为Cookies不一样.我们就要用WSockExper ...
- 利用闭包向post回调函数传参数
最近在闲逛XX站的时候,打算搞个破坏,试试有多少人还是用初始密码登陆.比较懒,所以直接打开控制台来写. 所以问题可以描述为: 向后端不断的post数据,id从1~5000自增,后端会根据情况来返回值r ...
- Java线程间通信-回调的实现方式
Java线程间通信-回调的实现方式 Java线程间通信是非常复杂的问题的.线程间通信问题本质上是如何将与线程相关的变量或者对象传递给别的线程,从而实现交互. 比如举一个简单例子,有一个多线程的 ...
- JS绘制拓扑图示例 (JTopo)
目前在做的项目是渔政的监控,需要用到的设备包括雷达,光电,站点信息等,想要更直观的展现设备之间的连接关系和状态信息,这时候需要画一张拓扑图 在做拓扑图之前,首先要学习一下,html里面另一个比较常用的 ...
- Java页面中EL的${}与<%= request.getParameter%>有什么区别? el 取不到值
${requestScope}操作的是request的作用域,相当于request.getAttribute();不过EL比这个更智能些,它不用强制类型转换就可以拿到了真实对象的值.request.g ...
- [js]利用闭包向post回调函数传参数
最近在闲逛校园XX站的时候,打算搞个破坏,试试有多少人还是用初始密码登陆.比较懒,所以直接打开控制台来写. 所以问题可以描述为: 向后端不断的post数据,id从1~5000自增,后端会根据情况来返回 ...
- 01(a)一元函数_多元函数_无约束极值问题的求解
1. 一元函数的极值问题 (函数光滑) 对于一个一元函数$f(x)$,怎么才能找出它的极值呢? 1.1根据定义:如果存在一点${{x}_{0}}$,在点${{x}_{0}}$的某个领域$U({{x} ...
随机推荐
- Python3基础 函数 参数 在设定缺省值的情况下指明参数类型
Python : 3.7.3 OS : Ubuntu 18.04.2 LTS IDE : pycharm-community-2019.1.3 ...
- windows nginx重启脚本.bat
在nginx.exe目录下新建txt文件写入 @echo offtaskkill /f /fi "IMAGENAME eq nginx.exe"start nginx.exe#pa ...
- PAT 甲级 1068 Find More Coins (30 分) (dp,01背包问题记录最佳选择方案)***
1068 Find More Coins (30 分) Eva loves to collect coins from all over the universe, including some ...
- LeetCode_205. Isomorphic Strings
205. Isomorphic Strings Easy Given two strings s and t, determine if they are isomorphic. Two string ...
- Python第一阶段04
1.文件操作: # 指明编码 f = open("sisi", encoding="utf-8") # 读 data = f.read() print(data ...
- [Google] 人和自行车匹配
2D平面上,有m个人(P),n辆自行车(B),还有空白(O)满足以下条件1.m < n. 2.不存在两个人,到同一辆自行车距离相等, 距离用abs(x1-x2) + abs(y1-y2)定义3. ...
- 通过iis启动服务,会产生C:/inetpub/logs/logsFile产生大量的日志,定期清理
[转]https://www.cnblogs.com/Martianhh/p/5312495.html bat文件内容如下,加入到计划任务执行 :: 清理IIS日志文件 :: 备份MySql数据库 @ ...
- 最新 农信互联java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.农信互联等10家互联网公司的校招Offer,因为某些自身原因最终选择了农信互联.6.7月主要是做系统复习.项目复盘.Leet ...
- [.Net] - 生成短 Guid 标识符的方法
产生字符串(例:49f949d735f5c79e) private string GenerateId() { ; foreach (byte b in Guid.NewGuid().ToByteAr ...
- 人工智能对人类有哪些影响 选择Python入门怎样
人工智能对人类有哪些影响?选择Python入门怎样?人工智能是科技时代进步的产物,也是目前人们非常关注的一个产业.那么,随着人工智能的发展,对人类生活的有哪些影响呢? 1.人工智能对文化产业影响 据了 ...