前言

在某个攻防演练项目里发现外网的资产少得可怜,对已知的资产扫了又扫还是发现不了可以利用的点。
通过相同源码的网站发现突破点,但是很快又陷入死胡同,说不定坚持一下就可能柳暗花明了呢?

第一天

通过相同的网站发现存在弱口令(目录不存在),通过查看接口发现管理员页面存在未授权访问,可以利用未授权获取管理员的密码
1637154191796.png

尝试利用上传还原文件进行 getshell ,但是功能不可用。又找到了一个上传图片的点,发现随意修改图片后缀都是 jpg 格式。经过测试发现是 Content-Type 导致的,修改 Content-Type 为 php 提示错误,修改为 image/gif 发现可以成功。经过和大佬交流:可能后端的代码是直接判断如果是 Content-Type: image/gif 就返回 .gif,代码写死没办法绕过。经过删除图片名字,发现了目录泄露。
1637154981221.png

上传不可用就直接找下SQL注入,发现查询日志的位置好像存在注入,使用 SQLMAP 跑了一下证明是有注入,但是找不到可以匹配到的数据库。

第二天

通过右键查看源代码发现存在一个 xxxxxx.php ,打开发现可以上传和导出。但是上传做了限制只能上传特定的后缀名,通过导出功能发现存在任意文件下载。
1637155360682.png
通过任意文件下载进行读取相关源码,发现之前提到的上传点都是做了限制。读配置文件发现使用的数据库是 sqlite ,利用目录泄露开始读取一个个文件,发现存在SQL注入,但是使用 query 没办法进行堆叠注入进行getshell,放弃查看注入。

上传和注入都没机会了只能看看存不存在RCE了,发现一个很明显的命令执行,但是会先运行 .sh 文件
1637155753196.png
先查看 .sh 文件是怎么样的再尝试构造命令,发现只要符合 if 语句就会重启服务器。
1637155988448.png
最后大佬给出了 Payload ,成功 getshell

  1. |+echo+'<%3fphp+phpinfo()%3b%3f>'> /xxx/xxx/shell.php

因为 .sh 文件里面使用了 ` 反引号,所以会拼接成命令执行,同时不会满足 if 请求。

第三天

发现网站打不开了,想内网渗透,想得美。(大佬审计的RCE 我不会我不会…)