Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >网站被利用,怀疑SQL注入+ PHP检查被绕过,但无法解释后者是如何执行的

网站被利用,怀疑SQL注入+ PHP检查被绕过,但无法解释后者是如何执行的
EN

Stack Overflow用户
提问于 2015-06-22 21:09:53
回答 2查看 1.7K关注 0票数 1

背景

我几年前创建的一个网站最近遭到攻击;剥削者成功地访问了我为客户端创建的PHP前端,该前端用于上传文件,他们还上传了一些PHP文件,其中包括基于PHP的文件管理器等。如果感兴趣的话,我可以发布每个上传的PHP文件的内容,但是问题当然是他们设法访问了客户端的前端。

这个站点从第一次创建以来就没有被更新过(它使用了旧的和不推荐的MySQL函数,也没有mysql_real_escape_string()来检查登录面板中的输入(我知道)),但是我不能完全确定他们是否通过SQL注入获得了访问。

vhost运行在Windows / Parallels Plesk上,我既没有SSH访问权限,也没有访问日志的权限:我已经打开了一张票,主机提供商要求提供日志,但是我不确定它们是否能够提供日志,需要多少时间才能提供日志,因此在此期间,为了不冒任何风险,我正在试图利用自己的可疑漏洞。

我能够在用于检索用户数据的SQL语句中执行插入操作,以绕过用户检查,但是在使用PHP之后,我无法立即中断密码检查。

TL;博士

下面是用于检索用户数据和检查密码的相关代码段:我能够在SQL语句中执行注入(例如,使用" OR ""="作为用户名),但是无法在之后立即中断密码检查:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?PHP
// ...
else {
    $query='SELECT * FROM users WHERE username="' . $username . '";';
    $query_result=mysql_query($query);
    if(!$query_result) {
        die (mysql_error());
    }
    else {
        $user_data=mysql_fetch_array($query_result);
        if($user_data && $user_data['password']==$password) {
            session_start();
            $_SESSION['user_id']=$user_data['id'];
            $_SESSION['user_username']=$user_data['username'];
            $_SESSION['user_password']=$user_data['password'];
            $_SESSION['user_privileges']=$user_data['privileges'];
            session_write_close();
            $next_page='control_panel.php';
        }
        else {
            $next_page='login.php?notify=username_password_wrong';
        }
    }
}
mysql_close($mysql_connect);
// ...
?>

打破这种检查是可行的吗?还是我的怀疑完全错了,我应该找其他地方找弱点吗?

EN

回答 2

Stack Overflow用户

发布于 2015-06-22 23:43:16

简短回答:

通过if语句进行密码检查是不够的。通过SQL注入和对身份验证脚本源代码的访问,它们拥有了完全访问所需的一切。

长答案:

我们已经确定您的auth脚本容易受到SQL注入的影响。您还将代码描述为非常老的、不变的代码。因此,我们可以合理地假设运行此应用程序的web服务器也是过时的。

如果在此服务器上启用了register_globals,那么直接设置$_SESSION值将非常容易--绕过if语句密码检查。它只需使用以下URI提交GET请求即可:site.php?_SESSION[user_id]=12345

如果黑客能够上传他们自己的PHP文件,那么他们肯定能够获得您的身份验证脚本的完整代码,并确定是否启用了register_globals

Further reading关于register_globals的安全含义。

这只是他们完全破坏您的应用程序的一种可能的方式。但是老实说,如果他们使用SQL来获取所有用户的凭据----他们已经将可执行文件上传到您的帐户,那么就有十亿种方法可以完全破坏您的应用程序。

票数 4
EN

Stack Overflow用户

发布于 2015-07-25 04:16:16

虽然不是详尽无遗的列表,但以下是绕过php密码检查的几种方法:

1)使用" union select '<?php system($_GET[cmd]); ?>',2,3,etc into outfile '/var/www/shell.php' --的authentication有效载荷,这将创建一个后门,然后不通过身份验证检查。攻击者现在可以直接浏览到shell.php

2)使用基于错误的SQL注入检索用户表的内容,然后使用纯文本凭证登录。

3)使用联合查询返回静态值以及用户名和密码字段" union select 1,'password',privileges,etc from users --

这当然是假设这是实际的攻击矢量。

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

https://stackoverflow.com/questions/31216870

复制
相关文章
网站被整改报告存在sql注入漏洞如何修复防护
SQL注入是一种网站的攻击方法。它将SQL代码添加到网站前端GET POST参数中,并将其传递给mysql数据库进行分析和执行语句攻击。
技术分享达人
2022/10/24
1.4K0
wordpress被挂马_php绕过
网页挂马指的是把一个木马程序上传到一个网站里面,然后用木马生成器生成一个网马,放到网页空间里面,再加代码使得木马在打开网页时运行。
全栈程序员站长
2022/11/10
2.5K0
wordpress被挂马_php绕过
mysql防止网站被sql注入攻击 的3种方法
mysql数据库一直以来都遭受到sql注入攻击的影响,很多网站,包括目前的PC端以及手机端都在使用php+mysql数据库这种架构,大多数网站受到的攻击都是与sql注入攻击有关,那么mysql数据库如何防止sql注入呢?下面我们SINE安全技术针对于这个sql注入问题总结3种方案去防止sql注入攻击。
技术分享达人
2018/11/29
3.1K1
如何防止CDN防护被绕过
当发现目标站点存在CDN防护的时候,我们会尝试通过查找站点的真实IP,从而绕过CDN防护。
Bypass
2020/03/13
1.9K0
Python批量检查网页是否被注入其他页面
代码思路:对于给定的文件夹中所有网页文件,读取其内容,然后使用正则表达式检查该文件中是否包含iframe框架,如果有的话就返回文件名和iframe代码,表示是一个怀疑对象,但这并不意味着网页被攻击。使用代码快速挑选出所有的怀疑对象,最后再人工确认一下。 import os import re def detectIframe(fn): #存放网页文件内容的列表 content = [] with open(fn, encoding='utf8') as fp: #读取文件所有行,删除两侧的空白
Python小屋屋主
2018/04/16
1.2K0
SQL注入的绕过方式
这篇文章搜集整理自@Junehck师傅的Github,记录了他在实战中遇到的各种WAF拦截SQL注入的场景和绕过姿势,文章并不是完整的,仅记录了Bypass部分。
cultureSun
2023/05/18
9250
SQL注入的绕过方式
SQL注入过滤的绕过
在实际的项目开发中,程序员一般都会使用函数过滤一些字符,以防止SQL注入比如魔术引号magic_quotes_gpc()之前的文章有提过,再比如preg_replace()函数过滤了一些字符。
Baige
2022/03/30
3.3K0
SQL注入过滤的绕过
如何Mock被@Value注入的属性
使用反射工具类即可。 参考:How do I mock an autowired @Value field in Spring with Mockito?
阿杜
2018/08/06
2.2K0
OpenRASP SQL注入绕过
OpenRASP即应用运行时自我保护,“可直接注入到被保护应用的服务中提供函数级别的实时防护,可以在不更新策略以及不升级被保护应用代码的情况下检测/防护未知漏洞”——https://rasp.baidu.com/ 《OpenRASP 官方文档》
腾讯代码安全检查Xcheck
2020/12/02
2.7K1
OpenRASP SQL注入绕过
如何手动利用 SQL 注入?
SQL 注入,也称为 SQLI,是一种常见的攻击,它使用恶意 SQL 代码进行后端数据库操作,以访问不打算显示的信息。
Khan安全团队
2022/03/14
8850
防止网站被SQL攻击的处理办法
能否理解并利用SQL首注是区分一般攻击者和专业攻击者的一个标准。面对严密禁用详细错误消息的防御,大多数新手会转向下一目标。但攻破SQL盲注漏洞并非绝无可能,我们可借助很多技术。它们允许攻击者利用时间、响应和非主流通道(比如DNS)来提取数据。以SQL查询方式提问一个返回TRUE或FALSE的简单问题并重复进行上千次,数据库王国的大门便通常不容易发现SQL盲注漏洞的原因是它们隐藏在暗处。一旦发现漏洞后,我们就会有们能支持多种多样的数据库。大量的漏洞可用。要明确什么时候应选择基于响应而非时间的利用和什么时候使用重量级的非主流通道工具,这些细节可节省不少时间。考虑清楚大多数SQL盲注漏洞的自动化程度后,不管是新手还是专家,都会有大量的工具可用。它们中有些是图形化界面,有些是命令行,它有了SQL注入和SQL盲注的基础知识之后,现在转向进一步利用漏洞:识别并利用一个不错的注入点之后,如何快速发现注入并修复漏洞。
网站安全专家
2021/02/05
1.2K0
防止网站被SQL攻击的处理办法
浅析白盒白名单SQL注入绕过利用
看到标题的第一反应,大家可能感觉本文讲的是一些老套数,比如select/*xasdasdsa*/等等垃圾字符绕过,在平时代码审计项目中,遇到了很多白名单过滤,现实情况就是,根本不允许使用特定语句和方法,比如一些存在注入的代码中,明明有注入但是碰到了白名单过滤。洞就送在眼前了,只需要变通一下,就可以成为一个新的洞了。
FB客服
2023/09/18
4260
浅析白盒白名单SQL注入绕过利用
SQL注入绕过的简单总结
SUBSTR(str,start,len) 返回start开始,长度为len的字符串。注意:字符串起始位置为1。
pankas
2022/08/10
1.9K0
利用Cookie注入 绕过WAF
cookie注入的原理在于更改本地的cookie,从而利用cookie来提交非法语句。
Xcnte
2021/12/14
3930
利用Cookie注入 绕过WAF
你的新进程是如何被内核调度执行到的?
在前面的文章《Linux进程是如何创建出来的?》 和 《聊聊Linux中线程和进程的联系与区别》 中我们都讲过了,进程和线程在创建出来后会加入运行队列里面等待被调度。
开发内功修炼
2022/12/07
7650
你的新进程是如何被内核调度执行到的?
记一次网站被注入js的经历
然后突然想到了之前被挂马的事件(Event),f12看看 发现加载了一个陌生的jsmarket.js
MUKAPP
2023/01/30
1.5K3
点击加载更多

相似问题

如何防止我的网站被sql注入?Struts

12

如何利用NodeJS绕过网站推荐检查

12

绕过SQL注入格式检查

214

WordPress站点被怀疑被破坏

24

如何检查我的蔚蓝网站实例计数是否被利用?

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文