网站已通过 SQL 注入被黑客入侵

     2023-02-19     36

关键词:

【中文标题】网站已通过 SQL 注入被黑客入侵【英文标题】:Site has been hacked via SQL Injection 【发布时间】:2011-06-03 19:27:53 【问题描述】:

最近我的网站被 SQL 注入攻击了。黑客使用了以下查询 获取我的数据库名称。我无法理解他们写的这个查询。

查询:

=-999.9%20UNION%20ALL%20SELECT%20concat(0x7e,0x27,Hex(cast(database()%20as%20char)),0x27,0x7e),0x31303235343830303536,0x31303235343830303536,0x31303235343830303536--

查询运行后,它显示一个整数结果,类似于“74545883”。

您能解释一下查询的工作原理吗?

【问题讨论】:

请不要在您的查询上签名,我们知道您是谁 这是您日志中唯一的条目吗? 请不要签署您的查询 - 有一会儿,我想知道签署 mysql 查询是什么意思:) 有问题的查询...因为它模棱两可,所以我编辑它 【参考方案1】:

首先,查询看起来像是 HTML 编码的。将%20s 替换为空格,它将变得更具可读性。他们还将部分查询转换为某事物的十六进制表示。尝试对语句的那部分进行十六进制解码。

当您尝试将 SQL 作为字符串动态创建,然后将其发送到 DBMS 时,就会产生 SQL 注入风险。想象一下这样的字符串存储在您的系统中,用于搜索栏等:

SELECT * FROM SOME_TABLE WHERE SOME_COLUMN=

要完成查询并让攻击进入,他们需要这样输入:

'x' or 1=1

在这种情况下,查询将变为:

SELECT * FROM SOME_TABLE WHERE SOME_COLUMN='x' or 1=1

SOME_COLUMN 可以是任何变量,它在哪里失败并不重要,重要的是1=1 始终为真,从而可能让攻击者访问该表中的每一行。

既然您已经了解它,请检查您的代码并将每个动态创建的查询替换为准备好的语句。 OWASP 网站也有很多用于防御性编码的资源:

www.owasp.org

【讨论】:

【参考方案2】:

查询使用DATABASE() 返回数据库名称,然后使用HEx() 函数将其转换为十六进制值。

一旦他们有了这个,他们就可以使用UNHEX函数

查看UNHEX 示例

mysql> SELECT UNHEX('4D7953514C');
        -> 'MySQL'
mysql> SELECT 0x4D7953514C;
        -> 'MySQL'
mysql> SELECT UNHEX(HEX('string'));
        -> 'string'
mysql> SELECT HEX(UNHEX('1267'));
        -> '1267'

很高兴知道它们是如何进入的,但总而言之,您需要修复代码以避免 SQL 注入。

【讨论】:

@astander - 他询问查询是如何工作的。我将其解释为“他们是如何绕过我的(缺乏)预防的”,而不是“这里的每个功能都做了什么”。我觉得一个人应该能够执行“mysql HEX”的google查询,但是新手可能不适应转义查询和常见的mysql注入尝试,是吗? 谷歌搜索“mysql HEX”会告诉他该函数的作用(就像你链接的那样),但谷歌搜索“mysql注入”不会告诉他为什么他的特定查询被黑客入侵...... 【参考方案3】:

它看起来像overflow attack。他们UNION-ed 与您现有的查询。用 (space) 替换所有 %20,因为它的 url 编码产生:

=-999.9 UNION ALL SELECT CONCAT(0x7e,0x27,Hex(cast(database() as char)),0x27,0x7e),0x31303235343830303536,0x31303235343830303536,0x31303235343830303536-

分解:

    =-999.9 刚刚结束您当前的查询 0x31303235343830303536NULL - 它们只是匹配现有查询中的列数。如果您有 SELECT * FROM users 并且 users 有 4 列,那么 UNION 也必须有 4 列。因此,他们只是使用 `NULL 值来填充这些列。 真正的困惑在于CONCAT()。它们组合了 126、39、数据库名称为十六进制值、39 和 126 -- 是一个 mysql 注释 - 之后它会忽略您的其余查询

从这次攻击来看,我怀疑您没有将输入包装在mysql_real_escape_string() 中,这使得被攻击者可以跳出您的查询并执行自己的查询。

更多信息请参见owasp.org。

【讨论】:

unhex(0x31303235343830303536) 给出了“%H V”。可能是电话卡?这是一个非常大的数字——介于 2^78 和 2^79 之间。 可能是 mysqls max_int - 试图溢出? 附带说明,31303235343830303536 的 ASCII 表示是“1025480056”——在 ASCII 中,0x3n 是数字 n。 有点像死灵,但我想我不妨告诉你,0x31303235343830303536 是自动 SQL 注入工具 Havij 的名片。【参考方案4】:

这不是完整的查询,实际上是这个人在你的网络应用中输入了这个字符串。

现在,首先将联合部分中的 %20 替换为空格,你会得到:

SELECT concat(0x7e,0x27,Hex(cast(database() as char)),0x27,0x7e),0x31303235343830303536,0x31303235343830303536,0x31303235343830303536--

似乎用户将字符串放在您期望数字的某个地方。因此,您看到首先有一个数字(999.9)来完成查询的原始条件。然后,添加一个 UNION 部分。 最后,在 UNION 部分之后,添加注释字符 (-- ),以便绕过查询的其余部分(可能正在由您的系统添加)。

我们可以格式化代码以便更好地理解:

SELECT 
    concat
    (
        0x7e,
        0x27,
        Hex(cast(database() as char)),
        0x27,
        0x7e
    ),
    0x31303235343830303536,
    0x31303235343830303536,
    0x31303235343830303536

现在,结果第一列的子字符串将包含您的数据库名称的十六进制编码形式。其实应该用单引号(0x27)括起来,然后再用~(0x7e)括起来

【讨论】:

【参考方案5】:
-999.9 UNION ALL SELECT 
CONCAT('Hex(cast(database() as char))'),
0x31303235343830303536,
0x31303235343830303536,
0x31303235343830303536

我认为你的日志中肯定还有其他条目,如果不是他事先知道你有 3 列。

【讨论】:

【参考方案6】:

这是使用 Havij 进行注入的示例 0x7e 和 0x27 对​​应于 ~ 和 ' ,它们将用于构建 HTML 显示 如 id=999999.9+union+all+select+0x31303235343830303536,(select+concat(0x7e,0x27,unhex(Hex(cast(sample_tbl.name+as+char))),0x27,0x7e)+from+test.sample_tbl+订单+by+id+limit+0,1)+-- 这个查询会从test表中的sample_tbl表中渲染~'Alfred'~是列名的字段值

~'r3dm0v3_hvj_injection'~是根据http://www.string-functions.com/hex-string.aspx的Havij签名码unhex 0x7233646D3076335F68766A5F696E6A656374696F6E

【讨论】:

他们在我的网站上尝试了相同的 MySQL 注入,但他们在页面上尝试了没有任何数据库查询,一切都基于文件:-)【参考方案7】:

是的,他得到了您所说的数据库名称的十六进制形式,即“74545883”。 通过 Unhexing,他将获得真正的数据库名称。

【讨论】:

网站被黑客入侵,js挂马无法清除。

我的网站被黑客挂马了,一个js文件。文件名是tongji.js。在服务器上这个js我看了,并没有问题,但是用网页另存为保存到本地一查看tongji.js就变成了add.js了,并且在第一行挂了马。这是怎么回事呀?如何清除呢?如果我把sql数... 查看详情

黑客专业名词“提权”,“webshell”“肉鸡”“暴库”“挂马”这几个词语是啥意思啊?

百度百科提供提高自己在服务器中的权限,主要针对网站入侵过程中,当入侵某一网站时,通过各种漏洞提升WEBSHELL权限以夺得该服务器权限。webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将... 查看详情

Wordpress 网站不断被黑客入侵

】Wordpress网站不断被黑客入侵【英文标题】:WordpressSiteKeepsGettingHacked【发布时间】:2015-12-0600:45:45【问题描述】:我有一个不断被黑客入侵的Wordpress网站。据我所知,正在进行以下更改:此文件顶部有一些额外的PHP代码:wp-conte... 查看详情

服务器被攻击后怎么处理?

1、发现服务器被入侵,应立即关闭所有网站服务,暂停至少3小时。这时候很多站长朋友可能会想,不行呀,网站关闭几个小时,那该损失多大啊,可是你想想,是一个可能被黑客修改的钓鱼网站对客户的损失大,还是一个关闭... 查看详情

如何扫描网站的静态副本以寻找被黑客入侵的证据

】如何扫描网站的静态副本以寻找被黑客入侵的证据【英文标题】:Howtoscanstaticcopyofwebsiteforevidenceofbeinghacked【发布时间】:2015-06-1218:37:17【问题描述】:我需要查看Drupal站点以确定它是否可能由于SA-CORE-2014-005(Drupageddon)漏洞而受... 查看详情

黑客入侵 Wordpress 网站后删除缓存

】黑客入侵Wordpress网站后删除缓存【英文标题】:RemovecacheafterhackedWordpresssite【发布时间】:2018-09-2600:51:42【问题描述】:我的Wordpress网站被黑了。它将用户重定向到一些垃圾邮件网站。由于我已经清理了网站,并且不再出现问... 查看详情

只需单击恶意/病毒链接,我的 PC 会被黑客入侵吗? (2020 更新)

...我点击恶意/病毒链接,然后我不再点击任何内容或从该网站下载任何内容,我的电脑会被黑客入侵吗?我通过所有工具和编程语言从Web开发人员 查看详情

黑客是如何攻击互联网企业的?

...联网企业的?1、服务器系统漏洞利用服务器系统漏洞是网站遭受攻击的常见方式。网站基于计算机网络,而计算机运行少不了操作系统。操作系统漏洞会直接影响网站安全,一个小小的系统漏洞可致系统瘫痪,比如缓冲区溢出... 查看详情

sql注入教程sql注入是什么?我们如何去玩转它

...数据库最常见手段之一。简单讲,SQL注入攻击是黑客利用网站程序漏洞,通过提交精心构造的SQL语句,以达到窃取数据库信息、修改破坏数据库为目的的攻击行为。SQL注入攻击方式非常隐蔽,不容易被察 觉,攻击成功所导致... 查看详情

google-黑客语法

我们知道要入侵一个有漏洞的网站肯定要去寻找这个网站怎么找这样的网站呢一般都是到谷歌和百度去的谷歌个人喜欢点为什么这么说谷歌比较轻松百度限制太多了入侵一个网站肯定要找他的后台吧找后台如何找呢可用工具比如... 查看详情

sql注入漏洞简介原理及防护

...欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击。当应用程序使用输入内容来构造动态sql语句以访问数据库时,... 查看详情

如何防范sql注入漏洞及检测

...SQL注入漏洞攻击呢?它是指黑客利用一些Web应用程序(如:网站、论坛、留言本、文章发布系统等)中某些存在不安全代码或SQL语句不缜密的页面,精心构造SQL语句,把非法的SQL语句指令转译到系统实际SQL语句中并执行它,以获取用... 查看详情

安全测试面试常见问题有哪些?

...活动3.审核系统数据4.不同采集数据的分析等。4.什么是SQL注入(SQLinjection)SQL注入是黑客获取关键数据的常用攻击技术之一。黑客检查系统中的任何循环漏洞,通过这些漏洞,他们可以通过SQL查询传递安全检查并... 查看详情

电脑被黑客入侵

...,都会被他盯上,我赶紧把网线拔了,不知道该怎么办?黑客经验谈:跳板攻击入侵技术实例解析网络入侵,安全第一。一个狡猾、高明的入侵者,不会冒然实行动。他们在入侵时前会做足功课,入侵时会通过各种技术手段保护... 查看详情

测试登陆页面时,如何测试sql注入漏洞呢

参考技术A 许多网站程序在编写时,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码(一般是在浏览器地址栏进行,通过正常的www端口访问),根据程序返回的结果,获得某些... 查看详情

下列哪些选项属于sql注入的危害?

...泄露。网页篡改:通过操作数据库对特定网页进行篡改。网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。服务... 查看详情

和黑客斗争的6天

...的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找Sql注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都是各个黑客检测工具来扫描,当然更高级一点的入侵需要很多人工协助。一般情... 查看详情

网站被注入乱码

...ever2003数据库系统:SQLServer2005WEB服务器:IIS6.0问题:二级网站的底部注入乱码,类似一些链接。分析和解决问题:1.找到相对应的程序页面查看源码,源码当中并没有这些乱码,说明乱码是注入到数据库中去了,是一些随机的数... 查看详情