在Hostgator上使用PHP创建SYMLINK jailed shell - 获取Perm Denied错误

时间:2015-06-13 16:17:31

标签: php linux shell

所以我带着这个问题来找你:

GIVENS:

  1. 我有Hostgator作为ISP。
  2. 我使用的是PHP 5.5
  3. LINUX框是CENTOS
  4. 共享主机环境
  5. 我是一名专业编码员,多年来一直有LAMP经验
  6. 问题:

    1. 我不熟悉Jailed Shell但有一个想法
    2. 我已尝试过该剧本并一直在寻找答案
    3. 仍然坚持......
    4. 这是我目前的代码:

      function getMyFakeDir($myfile) {
      
          $target = "";
          $link = 'content/purchased-items/link';
          symlink($target, $link);
      
          echo "READ LINK: ". readlink($link);
      
          return readlink($link);
      
      }
      

      这里是对函数的调用:

      $linkText = getMyFakeDir('SomePDFThatTheUserCanDownload.pdf');
      

      然后我传递了#34; $ linkText" var到PHPMailer和wala !!!用户点击通过符号链接下载,我已经编写了一个代码,使其在24小时后过期。是的,我是从PHP.net那里得到的。

      所以,基本上这就是我的问题......

      这是错误:

      Warning: symlink(): Permission denied in /homeSomewhere/someMasterDir/public_html/webServices/somePHPFile.php on line 654
      

      这是上面的链接654:
          符号链接($ target,$ link);

      谢谢...

1 个答案:

答案 0 :(得分:0)

想出来......简单的LOGIC!

首先,我认为PATHS都错了。这是修正后的代码:

//Generate Symbolic Link that blows away a fake directory each time
//A symbolic Link is created to "THIS" file below
$filename = $myfile;
//This is ANY directory on the server...
//A randomly named directory is created here...STEP 1
$downloaddir = "/home/someHostDir/public_html/sldktrulwiu2555ivd0fjvdfgdfgdfgdf/";
//Any directory NOT accessible by a browser - This is one level up
$safedir = "/home/someHostDir/content/purchased-items/";
//This is the equivalent of the $downloaddir and the browser is REDIRECTED here and the download begins
$downloadURL = "http://www.theSomeDomain.com/sldktrulwiu2555ivd0fjvdfgdfgdfgdf/"; //THIS IS THE FAKE DIRECTORY (Which I simply type gobbligook and created that mess above)
$letters = 'abcdefghijklmnopqrstuvwxyz';
srand((double) microtime() * 1000000);
$string = '';
for ($i = 1; $i <= rand(4, 12); $i++) {
    $q = rand(1, 24);
    $string = $string . $letters[$q];
}

$handle = opendir($downloaddir);
while ($dir = readdir($handle)) {
    if (is_dir($downloaddir . $dir)) {
        if ($dir != "." && $dir != "..") {
            @unlink($downloaddir . $dir . "/" . $filename);
            @rmdir($downloaddir . $dir);
        }
    }
}
closedir($handle);
mkdir($downloaddir . $string, 0777);
symlink($safedir . $filename, $downloaddir . $string . "/" . $filename);
//Header("Location: " . $downloadURL . $string . "/" . $filename);

这就是它。

结果是&#34; / sldktrulwiu2555ivd0fjvdfgdfgdfgdf /&#34;中的动态目录;像这样的目录:&#34; dfsgss /&#34;和#34;快捷方式&#34;到文件所在的真实位置。然后,当文件被下载,并且页面返回到INDEX.HTML时,代码BLOWS OUT FAKE目录再也看不到了。因此,如果用户想要返回,他们会收到文件/已被移动或删除的可怕的404 PAGE错误。长号。

那是伙计们。感谢您的帮助,是您帮助我解决了我的错误。团队合作!