命令注入&代码执行 - Web for pentester

简介:

  • 命令执行漏洞原理

    "& | ||" 在操作系统中会被是为命令连接符使用,用户通过浏览器提交执行命令,服务器端可能没有针对执行函数进行过滤,导致在没有指定绝对路径的情况下,就执行命令

  • 代码执行漏洞原理

    应用有时需要调用一些执行系统命令的函数,如php中的system、exec、shell_exec、passthru、popen、proc_popen等,

    攻击者可能通过控制函数参数,拼接恶意命令,从而进行 命令执行攻击

  • 两者区别:

    命令执行漏洞是可以直接调用操作系统命令,代码执行漏洞是靠执行脚本代码调用操作系统命令

   

Web for pentester

虚拟机下载安装略

https://download.vulnhub.com/pentesterlab/web_for_pentester_i386.iso

主要有如下功能

  • Code injection (代码注入)
  • Commands injection(命令行注入)
  • XSS(跨站脚本)
  • SQL injections(sql注入)
  • File include(文件包含)
  • LDAP attacks(LDAP攻击)
  • File Upload(文件上传)
  • XML attacks(XML攻击)

用ifconfig 查询ip

192.168.47.129

使用nmap查询靶机开放的端口

这里打开浏览器的80端口,进入练习

   

命令注入

 

Commands injection Example 1

 

         

后面加上 "|whoami" 成功

   Commands injection Example 2

        

源码:这里/m多行匹配模式 这里第一行即127.0.0.1能匹配,用 %0a (换行符)输入相关命令

Commands injection Example 3

        

不能%0a绕过

只要不是ip型的 就会重定向

BP可以看到代码还是执行了

但是如果正常操作 显示的内容 浏览器端是看不见的,但代码本身还是运行了

   

代码注入

Code injection example1

         

   

没有过滤任何内容

  1. " 用来闭合
  2. ;分割下一个命令
  3. // 在php中表示注释

        

Code injection example2

关键代码:

usort() 使用用户自定义的比较函数对数组进行排序。语法:usort(array,myfunction);

usort()经常与该功能create_function一起使用,以基于用户控制的信息动态生成"分类"功能。

   

   

   

Code injection example3

源代码:

   

源码中:参数base中是否匹配到pattern,有则替换成参数new

// /e修正符可以使preg_replace将replacement参数当作php代码执行 (php5.5以上就废弃了/e)

成功

Code injection example4

后端代码:

这里的assert函数和eval函数类似

  1. eval 参数是字符串
  2. assert 参数是表达式或者函数

尝试:

  • 加单引号

           

  • 再加.

           

  • 再加单引号

           

  • 将恶意代码加入

           

   

posted @ 2020-12-24 11:54  Beyond-189  阅读(374)  评论(0)    收藏  举报