百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

一次SQL注入到代码审计之路

toyiye 2024-06-21 12:35 7 浏览 0 评论

搜索公众号:暗网黑客

可领全套网络安全课程、配套攻防靶场


*本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。

本文中出现的所有敏感信息已做打码处理


一、找网站SQL注入点

在测试时候发现有一个信息查询框,就是下面这个图片显示的

一般信息查询框会和数据库存在交互

我输入数字1,会正常提示木查询到相关信息

那我们使用1′测试一下,发现不弹未查询到相关信息的提示框

也没有任何数据输出,大致判断这个点存在sql注入,并且不对输出报错信息

大概猜测出SQL语句为 :

select * from A where id ='$_POST['id']';

没有对用户输入的数据做任何过滤。

构造一个闭合语句再次确认一些是否确认存在sql注入。

payload:1′ #

通过上面简单测试,已经确定了,肯定存在sql注入


二、sqlmap跑一下

将数据包保存到一个文件,直接用sqlmap跑

非常震惊,居然有51个库

经过查询,查到后台的账号密码,那我就开始找后台的艰辛路程了。


三、找后台


没有找到后台,但是发现robots文件。

从robots上看到是PHPCMS系统

使用PHPCMS系统通用后台地址admin.php,m=admin&c=index&a=login

都不行,测了好就发admin模型下的index控制器是存在

当我们访问的时候就会自动跳到首页

这也该是开发者后来做了修改,专门做防黑的。


四、找通用漏洞


这个步骤就不多说了

我测了已暴光的漏洞,都是不行

说明开发者还是有安全意识的,把漏洞都给修复了


五、返回sqlmap


还有一种思路就是使用sqlmap –os-shell直接获取shell

但是这个基本上不行的,因为网站的文件基本上都是755权限

没有写的权限就会失败。那我还是抱着一丝丝希望去测试了

使用sqlmap –os-shell需要知道网站的绝对路径,网站绝对路径可以通过中间件配置文件查看。


首先需要知道网站用了什么中间件

我没有用nmap跑,只用404看到是nginx ,nginx的配置文件 /usr/local/nginx/conf/ngixn.conf

用sqlmap –file-read 去读nginx配置文件

通过配置文件只看到一条默认的配置信息

需要注意的是如果在nginx.conf文件没有看到有价值的信息

有一种可能是存在

/usr/local/nginx/conf/vhost/网站域名.conf 这个位置

果不其然就是它

找到了真实的路径,就可以使用 sqlmap –os-shell了

但是正式我当时预料的没有写入权限导致拿shell失败。

六、使用sqlmap读取网站源码


通过上面的思路我们已经知道网站的真实路径

知道了是PHPCMS系统,那我们可以读取网站的文件了

1、读取路由文件 caches\configs\route.php 查看路由文件没有问题。

2、查看系统文件 caches\configs\system.php (这个文件能看是否开启了域名访问后台)

3、在上面我们说到admin模型下index控制器是能访问

知识在访问的时候会跳转到主页,那我们下载index控制器文件看下

phpcms\modules\admin\index.php

看index控制器下的login方法是没有做任何修改的。

七、侧面渗透测试


上面说了一共有51个网站,我随机看了几个

数据库的结构是一样的,说明是同一个建站系统

那我们用nmap扫一下服务发现有8080服务

这个网站8080端口的网站时dedecms系统搭建的

我正好有后台密码,这样能通过dedecms上传文件

八、代码审计


通过上面们大概判断是admin模块index控制器有问题

查看admin模块多了一个MY_index.php控制器,

查看MY_index.php 发现里面有一个构造函数

这个函数大概意思就是会打开这个方法会判断你的right_enter的session值是否为空

若果为空,那么就回到首页

这这是我们刚开始一直打不开后台的原因

经过看phpcms开发手册(我对这看系统二次开发不太熟悉,我只知道是一个MVC结构的php程序)

如果需要对控制器进行二次开发需要在同级目录创建一个MY_*.php文件

大概意思就是创建这个文件后程序在运行index模块时会运行MY_index.php里面的代码。

到这了明白了,因为没有$_SESSION['right_enter']值

所以导致登陆不了

所以打开后台首先需要给$_SESSION['right_enter']赋值

经过不懈努力找到了一个正确文件

这个文件大概意思就是当我运行改文件时会将$_SESSION['right_enter']=1,然后跳转到登陆界面


学习更多黑客技术!可领取视频教程!边看边学!掌握思路~

扫描下方二维码!直接免费领取!(录播视频免费领取)


作者:lesssafe

转载自https://www.freebuf.com/vuls/234382.html

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码