前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >代码审计之命名执行漏洞

代码审计之命名执行漏洞

作者头像
用户1467662
发布2018-03-30 10:50:47
5820
发布2018-03-30 10:50:47
举报
文章被收录于专栏:农夫安全农夫安全

环境:windows + apache + mysql + php (phpstudy)

由于是在Windows下进行的测试,所以和Linux下的测试会有所不同

在测试漏洞之前先提一下可以同时执行两条命令的特殊字符

Linux:

|

;(Windows下不行)

&&

Windows

|

&(Linux貌似不行,自行测试)

&&

肯定有没写出来的,我就不去秀百度了====

低级:

可以将”|”替换成其他字符,效果会不一样.例如:& &&会执行完第一条命令在去执行后面的.这个”|”在linux中是管道符,我这里就不扯这个了===

看看代码,是如何造成的漏洞:

在第五行,将我们输入的值赋值给了$target这个变量,其次在第8行到第15行都是在判断操作系统,因为linux or unix的ping是无限的,所以要是不加个ping限制,等一辈子也不会有结果返回...

在第10行和14行可以看到通过shell_exec函数执行了命令,接受到的值并没有做任何过滤就执行了,执行的相当于是 ping 127.0.0.1|echo 1你放到命令行下执行一下试试

中级:

你会发现”|”和”&”都可以使用,但是”&&”却不行.(linux下&貌似不可以),瞅一下代码

聪明了一点点,在第八行到第十一行,定义了一个数组,下标分别是;和&&,对,就过滤这两个,而且windows下;不好使(linux下可行)

在14行时,使用了str_replay函数进行了替换,将输入的内容中的;和&&替换成了’’空字符串,可以查一下str_replay函数的用处,这里很是形象的来了一个过滤不严谨=

高级:

估计各位哥也发现了,不管中低高级,反正”|”都能过,没错,就是这样,====

看代码吧:

和中级一样的,只是过滤的字符更多了,& && | || ;...这里就有问题了,为什么过滤了”|”还可以呢?

好吧,在第11行哪里| 这里是不是有一个空格?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-09-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网络安全社区悦信安 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档