freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

RCE漏洞原理及危害、相关危险函数
Taco_king 2023-07-16 00:05:45 303652
所属地 广东省

首先先了解什么是RCE漏洞(Remote Code|Command Execute):

由于程序中预留了执行代码或者命令的接口,并且提供了给用户使用的界面,导致被黑客利用, 控制服务器。


漏洞原理:

代码执行漏洞原理:

传入php代码到执行函数的变量,客户端可控,并且没有做严格的过滤,攻击者可以随意输入他想执行的代码,并且这些代码在服务端执行

代码执行漏洞危害:

攻击者可以通过RCE继承web用户的权限,执行php代码,如果web的权限比较高的话,就可以读写目标服务器任意文件的内容,甚至控制整个网站

与代码执行漏洞相关的危险函数:

  eval()   将字符串当作php代码执行
  assert()   将字符串当作php代码执行
  preg_replace()   将字符串正则匹配后替换
  call_user_func()   回调函数
  array_map()    回调函数

命令执行漏洞原理:

应用在调用这些函数执行系统命令的时候,如果将用户输入作为系统命令的参数拼接到命令行中,如果没对用户的输入进行过滤的话,就会造成命令执行漏洞

命令执行漏洞危害:

  1.继承web服务器程序权限,去执行系统命令
  2.继承web服务器权限,读写文件
  3.反弹shell
  4.控制整个网站,控制整个服务器

与命令执行漏洞危险函数:

  system()   将字符串当作os命令执行
  exec()       将字符串当作os命令执行,但只输出命令执行的最后一行,约等于没有回显
  shell_exec()   将字符串当作os命令执行
  passthru()      将字符串当作os命令执行
  popen()           能过执行os命令,相当于把命令执行结果输出到一个文件内
  ``单引号

相关函数的使用详情看php手册

拿靶场DVWA的命令注入模块来练手


输入一个ip地址,然后提交,它会拿提交的ip地址去ping,然后返回,ping127.0.0.1看看,显示ping通返回数据


我们试试执行多条命令,一个一个的去试一下,发现有的可以,有的不行

  127.0.0.1 & whoami
  127.0.0.1 && whoami
  127.0.0.1 | whoami
  127.0.0.1.1 || whoami
  127.0.0.1;whoami

选择ping 127.0.0.1 &whoami,然后把ping的内容和用户都显示出来了,这些是黑盒测试

接下来看看它的源代码

  <?php
   
  if( isset( $_POST[ 'Submit' ]  ) ) {
      // Get input
      $target = $_REQUEST[ 'ip' ];
   
      // Determine OS and execute the ping command.
      if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
          // Windows
          $cmd = shell_exec( 'ping  ' . $target );
      }
      else {
          // *nix
          $cmd = shell_exec( 'ping  -c 4 ' . $target );
      }
   
      // Feedback for the end user
      echo "<pre>{$cmd}</pre>";
  }
   
  ?>

代码分析

  1.是否点击了提交按钮;

  2.服务器通过GPC 方式获取了一个IP 地址,赋值给了$target 变量;

  3.命令拼接ping $target ,ping 127.0.0.1;由shell_exec() 运行拼接后的命令;

  4.当web 用户点击提交按钮的时候,服务器执行了1 条命令;

防御漏洞的方法:

  1.尽量不要使用eval等危险函数的使用,如果要是使用则要进行严格的过滤
  2.preg_replace()函数放弃使用/e修饰符
  3.尽量减少危险函数的使用,并在php.ini配置文件中disable_functions中禁用
  disable_functions=system,assert
  4.参数值尽量用引号包裹,并在拼接前调用addslashes() 进行转义

# 渗透测试 # web安全 # CTF
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 Taco_king 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
Taco_king LV.4
这家伙太懒了,还未填写个人描述!
  • 8 文章数
  • 5 关注者
php代码审计总结
2023-09-12
应急响应流程及对常见的病毒应急方法、Windows安全事件查看及安全事件id汇总
2023-07-16
SQL注入漏洞详解总结大全
2023-07-15
文章目录