首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL注入会导致远程代码执行吗?

SQL注入会导致远程代码执行吗?
EN

Security用户
提问于 2014-12-29 16:12:20
回答 5查看 15.8K关注 0票数 23

是否可以通过SQL注入在服务器上执行一些代码(例如基于PHP的web应用程序上的PHP代码)?如果是的话,具体情况如何?

我知道未转义字段会导致SQL注入,攻击者可以在服务器上直接执行他选择的SQL命令。但是我认为只运行SQL命令,而不是一些任意代码。我说错了吗?

EN

回答 5

Security用户

回答已采纳

发布于 2014-12-29 16:58:32

SQL数据库系统通常有一种导出机制,它可以在服务器上写入任意文件,例如SELECT ... INTO OUTFILE中的MySQL。如果攻击者能够组装这样的查询,并且没有被限制性权限所阻止,他们实际上可以创建PHP脚本。现在,他们仍然需要让服务器来执行脚本。在最简单的情况下,他们可以对web目录进行写入访问。如果他们请求脚本,will服务器将很高兴地执行它。

票数 34
EN

Security用户

发布于 2014-12-29 19:12:11

这取决于数据库的类型(MySQL、Postgres、Oracle等)以及数据库用户的权限。

如果应用程序使用管理员帐户连接到数据库,通常可以执行代码。它在Server上很简单,使用xp_cmdshell。其他数据库需要更多涉及的技术。SQLmap是最流行的SQL利用工具,它提到了以下内容:

代码语言:javascript
复制
Support to execute arbitrary commands and retrieve their standard output 
on the database server underlying operating system when the database software 
is MySQL, PostgreSQL or Microsoft SQL Server.

至少对于MySQL,我认为它使用了编写Fleche提到的PHP文件的技巧。

从防御的角度来看,这就是为什么不应该让应用程序作为管理员进行连接的原因。

票数 17
EN

Security用户

发布于 2014-12-30 21:08:29

许多重要的应用程序将对象存储在数据库中。具有db访问权限(例如通过SQL注入获得)的攻击者可以通过这样的方式修改它们,即当它们是非串行化时,它们运行预期的代码。

这取决于php应用程序是否有一个具有可被滥用的__唤醒()方法的类,但是webapp作者并不完全负责这一点,因为服务器上也可能安装有可能被滥用的第三方类。

( Fleche指出的SELECT INTO OUTFILE问题也值得注意,尽管*nix服务器通常是与自己的用户一起安装的,这种攻击是不可能的)

票数 4
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/77039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档