前言      

在有的时候,要用外部的命令去执行一些系统命令。比如在php里面有一些函数可以操作系统比如system,exec,shell_exec等,加入我们要创建一个abc的目录,我们可以system<"mkdir abc">,这种情况他给定的系统命令是写死的用户没有办法去控制,则不存在漏洞, 当我们数如的东西是可以控制的时候,那么此时就很容易产生漏洞。用户可以去把恶意指令去注入到正常命令中。造成命令执行攻击。

以下情况我们就可以去进行传参,命令就不是固定的了,可以让用户去进行操作。这个时候就胡由于漏洞产了。

加入我们输入username=abc;cat/flag。那么由于分隔符的存在,就会对system进行两次命令一个是创建目录,一个获取计算机里面的文件。

命令执行的条件:

1、有执行系统命令的函数(条件)。 

2、参数可以改变(用户可以以传参)。

权限问题(题外话)

命令执行需要用户的权限  

php的权限是www-data,没有很大的权限,不能去进行关机等。

在控制栏进行ls-l会出来文件的所属用户, 第一个表示文件属性(-是文件,d是目录)后面的表示权限每三位表示当前用户,当前组里面的其他用户,其他,的权限,r是可读,w可写,x可执行(execute)。他们有一些数字:r是4,w是2,x是1。比如644的意思就是rw-r--r--。

虽然我们没有root权限但是iwm课以去看一些文件内容,在一些可以写的文件里面进行擦好看隐私等,我i还很大。

     

 有的时候打比赛会发现别人给你中了码但是你删不了,这是因为他是通过web服务器www-data进行的但是我们的用户是ctf/test,不是同一个用户,并且是一个644权限所以我们只能课读删不了。

如果我们进行命令会报Permission denied。那我们用应付怎么办呢,我们可以给自己写一个码,然后用蚁剑进行链接,通过这个webshell去删掉别人的webshell,这种情况就都是同一个用户就可以很轻松的进行写操作。

不死码

比如每间隔1s写入一个码

不停运行,那我们就可以给自己写shell,写一个kill -9 -1,就会结束掉所有的进程。 

如果使用sh busima sh或者php busima php,那么就可以ps ef  | grep shell.php。然后kill -9 pid(进程id),如果是网页的进程就是网页触发,那么就要上www-data结束所有的进程。

漏洞位点

上面的函数遇到后会执行一些代码,而下面的函数会执行一些命令。(` `)反引号是shell_exec()的别名。

利用

上面的代码要我们输入id,然后进行ping -c 4,会发现没有东西对ip进行安全过滤,而且是我们可以去操作的,我们就可以去执行一些别的东西,比如127.0.0.1;ls -l。就会在ping的基础上进行ls -l。这就是命令注入。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐