你了解命令执行漏洞吗? – 作者:Pretty

漏洞成因

  1. 通过URL 可以执行系统命令  例如:ping 判断网络连接状况
  2. Web应用程序没有过滤好输出命令  

命令可以连接执行

eg:ping www.xxx.com&& command

在windows上支持的管道符

  1. “|”  直接执行后面的语句
  2. “||” 如果前面的语句出错,则执行后面的语句
  3. “&”如果前面的语句为假,则执行后面的语句
  4. “&&”如果前面的语句为假则直接出错,后面的语句也不执行了;前面语句为真的情况下执行后面的语句

在Linux上支持的管道符

  1. “;”执行完前面的语句执行后面的语句
  2. “|”显示后面语句的执行结果

与Windows上执行效果相同的管道符

  1. “||”
  2. “&”
  3. “&&”

命令执行漏洞与代码执行漏洞的区别:

命令执行漏洞是直接调用系统命令

代码执行漏洞是靠执行脚本代码调用系统命令

可以执行系统命令的函数

PHP命令

  1. system()函数  :执行外部函数,并显示输出
  2. shell_exec()函数 : 执行Linux函数时,显示所有的输出
  3. exec()函数:执行外部函数,但只显示最后一行的数据
  4. passthru()函数:调用命令,但是不显示结果,但把执行结果输出到标准输出设备上 
  5. preg_replace()函数:执行一个正则表达式的搜索和替换
  6. ob_start()函数:打开输出缓冲区
  7. array_map()函数:返回用户自定义函数处理后的数组

漏洞的利用

  • 通过PHP和Java等脚本执行外部应用程序
  • 框架执行漏洞

为了追求更高效、更省时、更简单,框架技术得到盛行,该技术也应用到了网站应用的设计中。但若发生了安全漏洞,使用该框架的用户越多,影响的范围也就越大。

struts2代码执行漏洞

  1. Struts被称为JAVA三大框架之一,但Struts2却存在许多漏洞。Struts2本身是Struts1和XWOF的结合,而且开发者在遇到漏洞时,并未从根本上进行解决,所以struts2上的两漏洞层出不穷。 
  2. 可以 通过各种编码绕过被禁止的特殊字符

ThinkPHP命令执行漏洞

  1. preg_replace()函数中的第二个参数会被作为PHP代码执行
  2. 注意双引号,其中的PHP变量语法也可能被解析执行

漏洞防御

  1. 传入参数的值用双引号包围,并用addslashes函数进行转义。addshashes函数,在每一个双引号前加一个转义符。
  2. 尽量少用系统执行命令
  3. 在进行命令执行之前进行预编译,对参数进行过滤,对敏感字符进行转义
  4. 对于php来说,不能控制的危险语言尽量不要用
  5. 在使用动态函数之前,确保使用的函数时指定的函数之一

来源:freebuf.com 2020-09-14 19:17:58 by: Pretty

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论