由于这个两个的漏洞和文件包含的漏洞的原理差不多,我就两个一块整理吧,我知道我自己整理分析的没有网上其他人整理的想详细,甚至从,发生,利用,复现,危害,防御,等等方面总结到一起的,毕竟我写这个也只是强迫我自己让我自己对原理更加深入的理解。
好了我先从命令执行这个漏洞开始说。
在某些应用时,有些会需要调用一些执行系统命令的函数,比如PHP中的:
system , exec , shell_exec , passthru , popen , proc_popen 等函数...
如果用户可以控制这些函数的参数,那么把参数替换成自己的恶意命令,是不是就可以操作系统一些命令了?这就是命令执行。
这里我用 shell_exec 这个函数来演示。
参数是 a ,并传参给 $cmd 这个变量,然后用 shell_exec 这个函数来执行,并让 echo 输出到页面上来,就是显示到网页当中。
我把CMD命令里的 whoami 这个查询当前用户的命令,传参给 a ,然后 a 赋值给变量 $cmd ,然后 shell_exec这个函数,就执行了,所以就如上图一样, 执行了我的命令。
这个就是简单的命令执漏洞的原理,虽说总结完命令执行这个漏洞了,但是还是真的如我说的有点总结的太少,那我就贴一个大神的总结吧,如果大神看到了,觉得侵权了,不想让我贴的话,可以私信我,我自己删除。
print '点击图片放大,然后右键在新标签里继续放大,这样就是最大化的放大,可以完全和原页面一样的大小观看。
#上图图片地址: https://pic1.zhimg.com/v2-744953ae4a3cb8715e10c892c29ff688_r.png
好了,下面我开始说说这个代码执行,这个漏洞。
代码执行,同样的道理,就是某些应用在应用中可能需要调用一些能将字符串转为代码的函数,然后执行,如果用户发现了一个存在这个函数的页面,那用户自己输入一些恶意代码,是不是就可以达到控制这个网站了?这就是代码执行。
PHP中常见的这类函数如 eval , assert 这两个,这里我就以 eval 这个函数进行演示。
在某个PHP文件里写下以下代码:
以字符串 a 作为参数,然后传参给变量 $b ,然后 eval 这个函数进行执行了变量 $b 带过来的参数,并以PHP代码的形式执行了。
是不是我把 a 这个参数写成PHP的代码,就能直接运行了啊?那我再添加个命令函数,在看看。
虽然我不知道为什么第一行会显示报错,,,但是,看第二句,是不是执行成功了,这就是代码执行漏洞的原理。
我擦擦,瞬间又想在贴一下某大神他总结的代码执行,,,,感觉我是和他的真爱粉了,,,,
print '点击图片放大,然后右键在新标签里继续放大,这样就是最大化的放大,可以完全和原页面一样的大小观看。
#上图图片地址:https://pic2.zhimg.com/v2-bddeb6d11f51766f94c2903871329b65_r.png
自己本地复现一下,这样是对漏洞原理能更好的理解,话说我为啥我老是喜欢贴这个大神总结的啊!!!
看了下他的简书博客,,,也是把常用的漏洞都自己总结了一遍, 而且总结的还是这么详细,话说不会当初的他也是和我一样,复现漏洞原理,理解和深入吧。。。
总结:
命令执行,代码执行,都是程序员在设计网站中,对函数没有好好的使用,从而导致用户能直接使用,如果程序员在设计时思考到这点,加过滤,加判断,价限制,那这个就不会存在这个漏洞。