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