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

1.1php注入点的发现及扫描

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

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

图1使用wvs扫描目标网站

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

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

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

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

1.2使用sqlmap进行sql注入测试

1.sql注入payload

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

图3 sql注入payload

2.获取当前数据库名称

获取当前数据库为xbase,如图4所示。

图4获取当前数据库名称

3.获取当前用户

命令直接获取当前数据库账号为root@localhost,如图5所示。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1.3php网站webshell获取

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

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

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

2.直接获取webshell失败

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

图8获取shell失败

3.获取真实物理路径

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

图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写入文件测试

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文件配置情况

(2)关闭general_log

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

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

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

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

图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”[/align]

[align=left]sqlmap.py -u http://www.***.com.cn/happystudy/happystudy_info.php?idnow=34 –file-read=”/etc/passwd”  [/align]

[align=left]

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

(2)获取数据库密码

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

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

1.4艰难的后台地址获取

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

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

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

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

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

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

3.获取真正的管理表

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

图16获取真正的管理表

4.登录后台管理

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

图17登录后台进行管理

5.fckeditor漏洞验证

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

图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语句

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

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

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

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

有问题大家可以留言哦,也欢迎大家到春秋论坛中来耍一耍  >>>点击跳转

使用sqlmap对进行php+mysql注入实战的更多相关文章

  1. 利用sqlmap进行Access和Mysql注入

    sqlmap将检测结果保存到C:\Users\Administrator.sqlmap\output (windows) linux:(/root/.sqlmap/output) Access注入 1 ...

  2. 2.羽翼sqlmap学习笔记之MySQL注入

    1.判断一个url是否存在注入点: .sqlmap.py -u "http://abcd****efg.asp?id=7" -dbs 假设找到数据库:student ------- ...

  3. SQLMAP学习笔记2 Mysql数据库注入

    SQLMAP学习笔记2 Mysql数据库注入 注入流程 (如果网站需要登录,就要用到cookie信息,通过F12开发者工具获取cookie信息) sqlmap -u "URL" - ...

  4. 手工注入——MySQL手工注入实战和分析

    今天进行了MySQL手工注入实战,分享一下自己的实战过程和总结,这里环境使用的是墨者学院的在线靶场.话不多说,咱们直接开始. 第一步,判断注入点 通过 ' 和构造 and 1=1 和 and 1=2 ...

  5. 【总结】MYSQL注入

    关于MYSQL注入的总结,网上的资料很多,这里和大家简单分享下自己实战中常用的思路和命令 0x00   UNION联合查询型注入常用语句 order by n //定字段,n为正整数 union se ...

  6. mysql注入篇

    博客这个东西真的很考验耐心,每写一篇笔记,都是在艰难的决定中施行的,毕竟谁都有懒惰的一面,就像这个,mysql注入篇,拖拖拖一直拖到现在才开始总结,因为这个实在是太多太杂了,细细的总结一篇太烧脑. 由 ...

  7. Mysql注入小tips --持续更新中

    学习Web安全好几年了,接触最多的是Sql注入,一直最不熟悉的也是Sql注入.OWASP中,Sql注入危害绝对是Top1.花了一点时间研究了下Mysql类型的注入. 文章中的tips将会持续更新,先说 ...

  8. 【sql注入教程】mysql注入直接getshell

    Mysql注入直接getshell的条件相对来说比较苛刻点把 1:要知道网站绝对路径,可以通过报错,phpinfo界面,404界面等一些方式知道 2:gpc没有开启,开启了单引号被转义了,语句就不能正 ...

  9. SQLMAP学习笔记1 access注入

    SQLMAP学习笔记1  access注入 Sqlmap是开源的自动化SQL注入工具,由Python写成,具有如下特点: 完全支持MySQL.Oracle.PostgreSQL.Microsoft S ...

随机推荐

  1. spring学习 十八 spring的声明事物

    1.编程式事务: 1.1 由程序员编程事务控制代码.commit与rollback都需要程序员决定在哪里调用,例如jdbc中conn.setAutoCimmit(false),conn.commit( ...

  2. vue 开发系列(五) 调用原生API

    概要 我们在开发手机端程序的时候了,我们经常需要使用到拍照,二维码的功能.数字天堂公司提供了大量的原生API支持. http://www.html5plus.org/doc/ 实现 1.在hbuild ...

  3. FontAwesome 4.7.0 中完整的675个图标样式CSS参考

    FontAwesome 4.7.0 中完整的675个图标样式CSS参考 用法:首先引入CSS文件:<link href="https://maxcdn.bootstrapcdn.com ...

  4. UVa 10294 Arif in Dhaka (First Love Part 2) (Polya定理)

    题意:给定 n 和 m 表示要制作一个项链和手镯,项链和手镯的区别就是手镯旋转和翻转都是相同的,而项链旋转都是相同的,而翻转是不同的,问你使用 n 个珠子和 m 种颜色可以制作多少种项链和手镯. 析: ...

  5. DDR中的命令

    (3) 列地址选择(CAS#): 选择器件内感兴趣的地址列 行地址选择(RAS#): 选择设备中感兴趣的地址行. (4)(precharge)预充电 DRAM读取具有破坏性,也就是说,在读操作中会破坏 ...

  6. 在IIS7.5下配置PHP环境

    1.下载安装ZkeysPHP,路径随意 找到该程序集 D:\ZkeysSoft\Php\php5isapi.dll 2.在站点配置“处理程序映射”,添加php后缀映射由D:\ZkeysSoft\Php ...

  7. 微信官方api & 非官方api

    1.微信公众平台开发者文档 http://mp.weixin.qq.com/wiki/home/index.html 2.微信公众平台 https://mp.weixin.qq.com/ 3.第三方a ...

  8. 【设计模式】Javascript设计模式——状态模式(行为型)

    注:这个模式是非常聪明的,很有点数学中组合的意思,现在,来看下这个模式是怎么个思想. 问题提出:假如某个操作有三种可能,分别为1,2,3,还可能是组合,比如先执行1,再执行2或者先执行2再执行3或者1 ...

  9. noip2017d1t3

    其实是参考洛谷上某篇题解的思路: 先求出两个dis数组表示从1走和从n走的最短路: 转移方程:dp[v][dis1[u]-dis1[v]+w+j]+=dp[u][j]; 转移顺序要注意一下呢,肯定是先 ...

  10. Grand Central Dispatch

    什么是GCD? Grand Central Dispatch或者GCD,是一套低层API,提供了一种新的方法来进行并发程序编写.从基本功能上讲,GCD有点像NSOperationQueue,他们都允许 ...