【发布时间】:2013-05-19 11:05:19
【问题描述】:
我公司的网站刚刚遭到黑客入侵,我现在要格外小心地恢复网站。该公司希望该网站尽快启动,因此我没有足够的时间重新编码软件的漏洞,因此我在执行以下操作后将其恢复:
- 禁用网站上的所有输入表单。 (基本上,对于所有写有
action = someform.php的表单,我只是将服务器上的someform.php重命名为someform1.php,这样实际上什么都不会进入数据库。稍后我将处理PDO 和防止SQL 注入的保护)。 - 由于没有剩余的表单,没有
$_POST输入需要处理,但仍然有$_GET。对于每个接受查询字符串的页面,我都检查了每个$_GET['']变量,并确保只在它应该是数字时处理它。例如。if(isset($_GET['page_id']) && is_numeric($_GET['page_id'])) { /* do something */ }。黑客似乎已经通过 SQL 注入突破了。 - 在网站的另一个部分(目前只有公司员工可以访问),我将其设置为受密码保护的文件夹。我知道黑客仍然可以使用匿名 FTP 或使用其他方式进入,但我希望至少最初能避免 SQL 注入,所以我认为受密码保护的文件夹会有所帮助。这是现有安全登录的基础。
- 我现在担心 URL。我不确定它是否安全,它是一个双语网站,这就是它的发展方式(这部分代码是以前的开发者写的,我不太明白):
if($_SERVER['SERVER_NAME'] == 'localhost' || $_SERVER['SERVER_NAME'] == 'salman'){
$url =zeej_dir.curPageName().'?'.$_SERVER["QUERY_STRING"];
} else {
$url ='/'.curPageName().'?'.$_SERVER["QUERY_STRING"];
}
$change_url = "http://".$_SERVER['SERVER_NAME'].$url;
if($_SESSION['ln'] == 'en'){
echo '<img src="'.getSiteUrl().'images/arabicicon.jpg" alt="Arabic" width="15" height="15" />';
echo '<a href="'.getSiteUrl().'change_session.php?page_url='.base64_encode( $change_url ).'" class="top_frametext">Arabic</a>';
} else {
echo '<img src="'.getSiteUrl().'images/engicon.jpg" alt="English" width="15" height="15" />';
echo '<a href="'.getSiteUrl().'change_session.php?page_url='.base64_encode( $change_url ).'" class="top_frametext">English</a>';
}
这是change_session.php的代码:
@session_start();
$page_url = isset($_REQUEST['page_url'])?$_REQUEST['page_url']:'';
if($_SESSION['ln'] == 'en'){
$_SESSION['ln'] ='ar';
} else {
$_SESSION['ln'] ='en';
}
header("location: ".base64_decode($page_url));exit;
这里有一些通过 URL 的漏洞吗?或者到目前为止我是否得到了合理的保障?
【问题讨论】:
-
你怎么知道是你的 PHP 脚本中的一个漏洞被利用了?
-
老实说,最初我认为黑客通过我们的图像上传器上传了一个恶意文件(因为它没有检查 MIME 类型),但之后我确定 PHP 代码中存在漏洞,因为然后数据库中有行,其中产品的 ID 像
cd /etc/pwd,以及数据库中的各种其他疯狂的东西。 -
我认为这里没有什么可以被黑的,你应该做的是检查以下内容:1) 修复所有查询以防止 SQLinjections 2) 如果您有上传表单,请使其更严格,检查文件大小,file type,如果是图像,您甚至可以“重新转换”它。 3) 确保你有强密码 4) 我希望你只能通过本地主机访问 mysql DB 5) 确保 你没有感染键盘记录器之类的东西
-
6) 确保管理面板不容易被暴力破解7) 如果您在共享服务器上,则有可能另一个网站被黑了,如果没有足够的安全性,黑客从另一个虚拟服务器到你的,这里你有一个大问题:向你的托管服务提供商报告或更改托管服务提供商。 8) 如果您使用的是 VPS/专用服务器,请确保将其更新并尽可能在服务器上安装安全软件。
-
9) 最终尝试从黑客的角度来看待它,你会如何破解它?您甚至可以尝试一些黑客/测试工具,例如burp suite 和sqlmap。 注意:确保您有权执行此操作。
标签: php security url session query-string