Featured image of post 危险的 PHP 图片上传漏洞

危险的 PHP 图片上传漏洞

任何来自客户端的数据都是不可靠的。示范地址:http://jblog.zsyl.info 这也是我自己编的一个 PHP 应用,带有上传文件功能...

任何来自客户端的数据都是不可靠的。

示范地址: http://jblog.zsyl.info 这也是我自己编的一个 PHP 应用,带有上传文件功能

uploadimg.png 如果你上传了 JPG 格式以外的文件,比如 hello.php,那么系统则不会让你上载。

有什么办法突破这个限制上传我们的 webshell 呢?

先看看我编的这个 PHP upload 源代码:

  1. <?php
  2. echo “<center>============欢迎来到文件<del>管理</del>上传系统=============</center>”;
  3. if($_FILES[“file”][“size”]<200000){
  4. if(file_exists("./upload/" . $_FILES[“file”][“name”])&&$_FILES[“file”][“name”]!=null){
  5. echo “文件名已经存在”;
  6. exit;
  7. }
  8. if($_FILES[“file”][“type”]==“image/jpeg”||$_FILES[“file”][“type”]==“image/pjpeg”){
  9. if($_FILES[“file”][“error”]>0){
  10. echo “error。。Error:” . $_FILES[“file”][“error”];
  11. }else{
  12. echo “上传文件名: " . $_FILES[“file”][“name”] . “<br />”;
  13. echo “后缀:” . $_FILES[“file”][“type”] . “<br />”;
  14. echo “大小:” . ($_FILES[“file”][“size”] / 1024) . " Kb<br />”;
  15. //echo “临时保存在: " . $_FILES[“file”][“tmp_name”] . “<br/>”;
  16. move_uploaded_file($_FILES[“file”][“tmp_name”],”./upload/" . $_FILES[“file”][“name”]);
  17. echo “保存在此目录下的 upload/” . $_FILES[“file”][“name”];
  18. }
  19. }else{
  20. echo “只能上传 JPG 文件”;
  21. }
  22. }else{
  23. echo “文件太大,必小于 200KB”;
  24. }
  25. ?>
  26. <html>
  27. <body>
  28. 请上传文件:
  29. <form action="" method=“post” enctype=“multipart/form-data”>
  30. <input type=“file” name=“file”>
  31. <input type=“submit” value=“上传这个文件”>
  32. </form>
  33. </body>
  34. </html>

差不多,大多数的都是这样。

我们试试用 brup suite 抓包——

我们先上传文件,在浏览文件里面把 webshell.php 改成 webshell.jpg,就是改一下后缀。

——————>>

然后上传,使用 burp suite 截取数据。

将这里 webshell.jpg 改回来 webshell.php

然后 forward 继续,搜狗截图 20150128143759.png 这样就上传成功了~这就对了

成功了将 PHP 文件上载

访问 jblog.zsyl.info/upload/webshell.php 测试一下

搜狗截图 20150128144017.png访问是成功了,只不过编码有错误,没事,改一下就行了。

这样我们就可以上传 shell 以至于控制整个网站。

看看谁先黑掉它:jblog.zsyl.info 只是一个小小的实战演练哦

关于 burp suite: http://www.2cto.com/Article/201307/229039.html

Licensed under CC BY-NC-SA 4.0