有人入侵了我的数据库-怎么办?

2021/01/30 08:21 · php ·  · 0评论

有人入侵了我的数据库并删除了表。

在我的PHP页面中,有一个查询正在使用mysql_real_escape_string:

$db_host="sql2.netsons.com";
$db_name="xxx";
$username="xxx";
$password="xxx";    

$db_con=mysql_connect($db_host,$username,$password);    

$connection_string=mysql_select_db($db_name);
mysql_connect($db_host,$username,$password);    
mysql_set_charset('utf8',$db_con); 

$email= mysql_real_escape_string($_POST['email']);
$name= mysql_real_escape_string($_POST['name']);
$sex= mysql_real_escape_string($_POST['sex']);    

if($_POST['M']!=""){  $sim = 1;  }else {  $sim = 0;   }

$query = "INSERT INTO `users` (`email`, `name`, `sex`, `M`) VALUES
( '".$email."', '".ucwords(strtolower($name))."', '".$sex."','".$sim."')";    

$res = mysql_query($query) or die("Query fail: " . mysql_error() );

mysql_close($db_con);

register_globals禁用

那么,我的数据库是如何被黑客入侵的?

mysql_real_escape_string

MySQL连接。如果未指定链接标识符,则假定使用mysql_connect()打开的最后一个链接。如果找不到这样的链接,它将尝试创建一个链接,就好像没有参数调用mysql_connect()一样。如果未找到或建立连接,则生成E_WARNING级错误。

如这里的解释:mysql_real_escape_string()是否完全可以防止SQL注入?

根据您的代码段,您已两次连接数据库。

$db_con=mysql_connect($db_host,$username,$password);    

$connection_string=mysql_select_db($db_name);
mysql_connect($db_host,$username,$password);    
mysql_set_charset('utf8',$db_con); 

并且您没有提供以下数据库链接标识符:

$email= mysql_real_escape_string($_POST['email']);
$name= mysql_real_escape_string($_POST['name']);
$sex= mysql_real_escape_string($_POST['sex']); 

因此,mysql_set_charset对提供$_POST给多字节字符的实际转义无效

建议

  • 删除第二个 mysql_connect($db_host,$username,$password);
  • $db_con在执行时明确添加mysql_real_escape_string

您所粘贴的代码似乎无法提供适当的攻击。我将对此进行调查的方式是扫描MySQL二进制日志中的相关DROP TABLE语句,以便给我一个时间戳。然后,您可以使用该时间戳查找可以与之关联的Apache请求。

这只是仔细审核每个候选请求中的代码,直到您钉住它的一种情况:(

也许您有一个密码弱的MySQL用户。我将更改所有密码,并检查谁有权连接到MySQL数据库。锁定防火墙,以便仅打开所需的端口(80,443?)

这是一些有关锁定您的php代码的文章
http://www.addedbytes.com/writing-secure-php/

最好的祝福。阿斯比昂·莫雷尔

您的数据库已遭到破坏的事实并不意味着存在sql注入。如果需要,您可以共享访问日志,该日志应提供攻击者进入的足够线索。我的猜测是本地文件包含,他包含配置文件的位置,或者某种代码执行漏洞。如果没有更多的信息,它只是在猜测,它可能也是一项不错的社会工程工作或网络钓鱼攻击。

从表面上看,您没有留下任何漏洞可以进行sql注入攻击。这段代码一定是入侵发生的代码吗?

我唯一能证明的是托管服务提供商关于ucword的模糊声明:http : //2by2host.com/articles/php-errors-faq/disabled_ucwords/

G

我认为这是通过php shell(后门)完成的。那是共享主机吗?如果是这样,请检查同一服务器上的其他网站是否也受到了攻击,这将帮助您查看攻击者是否正在从附近进入您的站点。要查看服务器上的网站,您需要反向IP扫描。

本文地址:http://php.askforanswer.com/yourenruqinlewodeshujuku-zenmeban.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!