命令注入

  • 命令注入
  • 命令注入的条件
  • DVWA的命令注入漏洞
  • 总结这几个安全级别漏洞并审计
  • 漏洞解决方法

命令注入

命令:这个命令指的是操作系统的命令。
命令注入:就是通过web程序,在服务器上拼接系统的命令。有些网站对这些有需求,就开放了这些功能,但是,没有对命令进行严格的过滤,从而导致命令注入漏洞。

命令注入的条件

1、web应用程序调用可执行系统命令的函数。
2、执行系统命令函数或者函数的参数可控,如果它把你填入的参数限制得死死得,那也没办法用命令注入了。
3、参数可控,而且可拼接,一般命令注入的情况就是,前面语句固定的,后面需要我们自己去拼接语句,如果说遇到的情况不可拼接的话,那只能想别的办法了。

DVWA的命令注入漏洞

一、low安全级别

ok,关于ping命令我这里就不说了,从以前的Linux都继承下来了,现在windows上也有。从上图,我们可以看到,ping本地是能ping通的,我们就可以用命令连接符连接试试。

可以看到,我们通过&&连接两个命令,达到了注入的目的,在这里,我尝试了一下创建用户命令,不知道是权限不够还是什么情况,好像没有成功。我们先来看看服务器端的核心源码。

<?php if( isset( $_POST[ 'submit' ] ) ) { $target = $_REQUEST[ 'ip' ]; // Determine OS and execute the ping command. if (stristr(php_uname('s'), 'Windows NT')) {  $cmd = shell_exec( 'ping  ' . $target ); echo '<pre>'.$cmd.'</pre>'; } else {  $cmd = shell_exec( 'ping  -c 3 ' . $target );echo '<pre>'.$cmd.'</pre>'; } }
?>

它只是判断了一下操作系统,并没有对传入的ip参数进行过滤,直接传到后台执行了。这明显很致命。
二、medium安全级别

这里,我输入同样的命令后,它没有任何响应,看来它可能在low的基础上设置了过滤,我们再看能不能ping通IP。

能ping通,说明漏洞可能还在,它只是设置了过滤。ok,现在,我们换用其他命令连接符:

ok,我们换用其它命令连接符绕过它的过滤了,现在看看服务器端的核心源码。

<?php if( isset( $_POST[ 'submit'] ) ) { $target = $_REQUEST[ 'ip' ]; // Remove any of the charactars in the array (blacklist). $substitutions = array( '&&' => '', ';' => '', ); $target = str_replace( array_keys( $substitutions ), $substitutions, $target ); // Determine OS and execute the ping command. if (stristr(php_uname('s'), 'Windows NT')) {  $cmd = shell_exec( 'ping  ' . $target ); echo '<pre>'.$cmd.'</pre>'; } else {  $cmd = shell_exec( 'ping  -c 3 ' . $target ); echo '<pre>'.$cmd.'</pre>'; }
} ?>

很明显,代码量多了,多的部分多在哪儿?它在low的基础上,还做了简单的符号过滤把&&和;替换成空了。这样就出现语法错误,直接就把整个输入的命令过滤了。
三、high安全级别
我一般都这样,还是先ping一下某个IP,看这个功能有没有关,有时候,它一个功能不一定随时开着。

能ping通,看来有搞头,一般的升级,是在上一个的基础上升级的,我测试&&后无效,就直接测试&连接符。

它提示我,说我输入的IP不合法,无效。这次它过滤了&符,我们再看看它是否过滤了管道’|‘或者’||’。

ok,还是绕不过去,我都试过了,然后,我们看服务器后端源代码。

<?php if( isset( $_POST[ 'submit' ] ) ) { $target = $_REQUEST["ip"]; $target = stripslashes( $target ); // Split the IP into 4 octects $octet = explode(".", $target); // Check IF each octet is an integer if ((is_numeric($octet[0])) && (is_numeric($octet[1])) && (is_numeric($octet[2])) && (is_numeric($octet[3])) && (sizeof($octet) == 4)  ) {// If all 4 octets are int's put the IP back together. $target = $octet[0].'.'.$octet[1].'.'.$octet[2].'.'.$octet[3]; // Determine OS and execute the ping command. if (stristr(php_uname('s'), 'Windows NT')) {  $cmd = shell_exec( 'ping  ' . $target ); echo '<pre>'.$cmd.'</pre>'; } else {  $cmd = shell_exec( 'ping  -c 3 ' . $target ); echo '<pre>'.$cmd.'</pre>'; } } else { echo '<pre>ERROR: You have entered an invalid IP</pre>'; } } ?>

这个它对IP进行了严格的筛选,它对IP的每一个部分都筛选了,只允许输入的IP中包含数字和点,做到这样的话,目前几乎是没有漏洞了。

总结这几个安全级别漏洞并审计

做到这,先小结一下,第一个是没有加过滤,这对于服务器来说危险程度是比较高的。第二个安全等级,主要是通过黑名单机制来进行限制,这种方法并不妥当。因为,黑名单中的字符毕竟有限,不能百分百保证能过滤所有危险。它只能在它黑名单的范围内起作用,在做命令过滤的时候,明显是不够专业的。

漏洞解决方法

现在,说一下解决办法,在DAVWA中,它是严格限制了IP的每一个元素,基本是没有漏洞了。然后,现在我也想不到啥好的办法,如果说用黑名单机制,还不如直接严格限制来的快,而且直接严格限制相比黑名单机制更加安全。如果说还能进一步完善的话,我觉得可以在后面的代码中记录一下输入特殊符号的用户IP,监视这个IP或者提交到waf的禁封策略。

php审计之——DVWA命令注入相关推荐

  1. 【CyberSecurityLearning 59】OS命令注入

    目录 OS命令注入 原理以及成因 漏洞危害 相关函数 1.system() 2. exec() 3.shell_exec()  应用最广泛 4.passthru() 5.popen() 6.反引号 漏 ...

  2. Buffalo WCR-GN路由器诊断功能命令注入漏洞

    1.注入点的发现: 探索路由器的诊断功能时,联想到练习过的DVWA 命令注入靶场.这类调用操作系统命令实现的功能,若对于用户输入验证不足,很容易引入命名注入风险.基于这种猜测,开始了这次实践. 1.采 ...

  3. 网络安全笔记-OS命令注入漏洞

    OS命令注入漏洞 原理以及成因: 程序员使用脚本语言(比如PHP)开发应用程序过程中,脚本语言开发十分快速.简洁,方便,但是也伴随着一些问题.比如说速度慢,或者无法接触系统底层,如果我们开发应用,特别 ...

  4. DVWA之命令注入漏洞(Command injection)

    目录 LOW medium high Impossible 命令执行漏洞的原理:在操作系统中,"&.|.||"都可以作为命令连接符使用,用户通过浏览器提交执行命令,由于服务 ...

  5. DVWA通关攻略之命令注入

    目录 1.Command Injection 命令注入 2.漏洞场景 3.实验演示 3.1.手工挖掘 3.2.使用burp爆破挖掘命令注入 4.命令注入防御 1.Command Injection 命 ...

  6. php如何检测在另一台设备登录怎么做_如何使用Metasploit的Web Delivery Script和命令注入弹出Shell(翻译)...

    Web交付概述 Metasploit包含一个有用的模块,它在你的的设备上创建的服务器上承载一个负载.一旦目标设备连接到服务器并执行负载,就会运行web交付脚本.这个模块是通用的,因为它可以面向Pyth ...

  7. notepad++怎么换行命令_命令注入新玩法:巧借环境攻击目标

    在一次漏洞赏金活动中,挖掘到一个不标准的命令注入漏洞,我无法用命令分隔符.命令替换符注入新命令让系统执行,所以,从"型态"上讲,它不算是命令注入漏洞:但我又可以借助目标环境让载荷到 ...

  8. 关于命令注入的一些介绍

    勤学以增智,修德以立身, 明辨以正心,笃实以为公. 平常以博客的形式来记录自己的笔记,因为学了IT以后才知道,这可不是抖音上vbs,bat那么easy,不是喊喊口号就能热血沸腾,所以平常学习的时间还是 ...

  9. Java安全-注入漏洞(SQL注入、命令注入、表达式注入、模板注入)

    文章目录 注入 SQL注入 JDBC拼接不当造成SQL注入 框架使用不当造成SQL注入 不安全的反射 命令注入 代码注入 表达式注入 Spel表达式注入 OGNL表达式注入 模板注入 注入 SQL注入 ...

最新文章

  1. 转一个后缀数组的简单总结:
  2. android新建view类,android – 无法创建ViewModel类的实例(无法启动活动ComponentInfo)
  3. gradle打包java项目_gradle打包java项目
  4. 当Java遇上机密计算,又一段奇幻之旅开始了!
  5. android 跳转系统通知,android 跳转到应用通知设置界面
  6. 终于会用c#中的delegate(委托)和event(事件)了
  7. 2021年MathorCup数学建模A题自动驾驶中的车辆调头问题全过程解题论文及程序
  8. win10家庭版升级教育版,专业版和企业版最新密钥和方法分享
  9. 《他们最幸福》之大冰的经典语录
  10. OWASP TOP 10 2017中文译文
  11. 瑞华吉瑞保重大疾病保险怎么样?好不好
  12. PS 中图层为索引,修改成背景可编辑
  13. 水安ABC考试单选练习题库(1)
  14. Centos7安装mysql 数据库
  15. 大批量爬取彼岸图网内容遇到的问题
  16. antv 官方文档参考 ywy(基础)
  17. python 提取pdf表格_用Python提取pdf文件中的表格数据
  18. 浅谈社交电商产品设计的10个深刻的知识
  19. 物联网专业课程包括linux么,物联网专业是干什么的?
  20. 排序(下)---快排、归并

热门文章

  1. RabbitMQ——使用Exchange中的fanout交换机实现消息发送和接收
  2. 并行计算之MPI(五)
  3. 啥是搜索引擎优化?SEO优化到底怎么做?
  4. Java多线程 模拟售票窗口售票
  5. python的wxpy库_1、初学探讨PYTHON的itchat和wxpy两库
  6. ASPICE详细介绍-3.ASPICE有多少能力等级?
  7. java毕业设计城市智能公交系统Mybatis+系统+数据库+调试部署
  8. Alertmanager邮箱和企业微信的告警模板分享
  9. pythoncv2模块详细介绍_python中cv2模块的安装方法
  10. 转自52 梦回凉亭的她 Java常见问题,面试题