当前位置:首页 » 《随便一记》 » 正文

命令注入(OS)_ZY95001的博客

26 人参与  2021年12月28日 14:33  分类 : 《随便一记》  评论

点击全文阅读


一、OS命令注入

代码注入与命令注入区别:PHP代码注入是具体的语言的代码(如php、Java),命令注入的是系统命令。

原因:

当应用需要调用一些外部程序(系统命令或者exe等可执行文件)时就会用到一些系统命令的函数。应用在调用这些函数执行系统命令的时候,如果将用户的输入做为系统命令的参数拼接到命令行中,在没有过滤用户的输入的情况下,就会造成命令执行漏洞。

1.用户输入作为拼接。

2.没有足够过滤。

危害:

1.继承web服务器程序权限(web用户权限),去执行系统命令。

2.继承web服务器权限,读写文件。

3.反弹shell。服务器主动连接攻击方。

4.控制整个网站。

5.控制整个服务器。

二、相关函数

1.system()

<?php
$str="ipconfig";
system($str);
?>

如果将ipconfig换成变量:

<?php
if($_GET['cmd']){
    $str=$_GET['cmd'];
    system($str);
}
?>

此时在客户端可以通过传参,执行漏洞。(URL路径后面接)命令执行完才在页面显示出来。

?cmd=whoami

2.exec()

输出执行结果,结果内容有限

3.shell_exec()              应用最广泛   

4.passthru()                   自带输出

5.popen

不返回结果,而是返回文件指针。我们关心的是命令执行了。在URL中输入:

>>1.txt     #将执行结果导入文件中看。

6.反引号(1键左边的键)

三、漏洞利用

1.查看系统文件

提交参数

[?cmd=type c:\windows\system32\drivers\etc\hosts]

查看系统hosts文件。

2.显示当前路径

提交参数:

[?cmd=cd]

3.写文件

[?cmd=echo "<?php phpinfo();?>" > D:\xampp\htdocs\Commandi\shell.php]

>  覆盖并建文件   #路径随机 

四、如何避免

1.尽量减少命令执行函数的使用,并在disable_functions  中禁用。

2.在进入命令执行的函数或方法前,对参数过滤。

3.参数的值尽量使用引号包裹,并在拼接前调用addslashes()进行转义。#函数表示返回在预定义的字符之前添加反斜杠的字符串。预定义字符有   (')   (")   (\)   NULL


点击全文阅读


本文链接:http://zhangshiyu.com/post/32281.html

命令  执行  函数  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1