0x00 mfw

打开环境 发现一个页面

啥也没有 查看开发者工具 没有任何东西

使用dirsearch (轻量扫描工具 需python3环境)扫描一下

./dirsearch-u 目标网址 -e *

发现存在.git目录

怀疑是git源码泄露

利用另外一个工具GitHack(python2环境)尝试获取源码

python2 GitHack.py http://www.example.com/.git/

获取成功

得到一个flag.php

但是没用

审计index.php代码

通过get传递page参数

拼接为file(一个php文件)

strpos()函数查找".."在$file中第一次出现的位置。如果没有找到则返回false

file_exists()函数检查$file是否存在

assert()函数会将括号中的字符当成代码来执行,并返回true或false

?page=a') or system('cat templates/flag.php');//

这里 ') 用于闭合strops //将后面语句注释掉

运行时语句即为

$file ="templates/a') or system(‘cat templates/flag.php’);//.php";
assert("strpos('templates/a') or system(‘cat templates/flag.php’);//.php', '..') === false") or die("Detected hacking attempt!");

这样strops只传入了一个参数a 则必定为false

再利用or 执行命令

最后在开发者工具中可看到注释的flag

工具地址:dirsearch:https://www.freebuf.com/column/153277.html

0x01 ics-05

打开环境得到如下页面

左侧菜单栏 依次点击 发现只有设备维护中心可以进去

开始没思路 查看开发者工具 依旧没有任何可利用的东西

偶然再次点一下 左上角的 云平台设备维护中心

发现url多了一个page参数可通过get传参

修改参数发现 界面会显示相对应得值

此时想到 利用文件包含 php伪协议 获取源码

?page=php://filter/read=convert.base64-encode/resource=index.php

得到index.php源码的base64编码

解密工具解码

新建一个php文档 复制代码 以便分析

经过查看代码 找到突破点部分

发现首先需要XFF伪造ip为127.0.0.1

然后需通过 get传输三个参数 pat rep sub

如果三个参数都不为0 执行函数preg_replace

查阅资料 得到该函数释义

preg_replace($pattern, $replacement, $subject)

其中pattern为要搜索的模式,replacement为用于替换的字符串或字符串数组,subject为要搜索和替换的字符串或字符串数组

其中pattern参数可以使用一些PCRE修饰符,其中

即 /e 修饰符可以是preg_replace()函数中的replacement参数当做php代码执行

也就是说只要使pat和sub有相同部分,rep的代码就会执行

接下来抓包并构造payload

首先利用XFF伪造IP为127.0.0.1

构造payload

?pat=/a/e&sub=system(‘ls’)&rep=a

执行得到文件目录 构造命令 ls%20文件夹名称 (此处不能用空格可用%20或+代替) 分别打开文件夹 发现在s3chahahaDir中含有flag的文件夹

继续打开flag文件夹

得到flag.php文件

改为cat命令打开 得到flag

最后修改:2020 年 10 月 18 日
如果觉得我的文章对你有用,请随意赞赏