漏洞学习 持续更新

漏洞学习

RCE漏洞——远程代码执行

1.形成原因

应用系统从设计上需要给用户提供指定的远程命令操作的接口,比如常见的路由器、防火墙、入侵检测等设备的web管理界面上一般会给用户提供一个ping操作的web界面。后台对该命令进行执行。

2.漏洞危害

  • 获取服务器权限

  • 获取敏感数据文件

  • 写入恶意文件GETSHELL

  • 植入木马病毒勒索软件等

3.实际漏洞

  • CVE-2021-3177 python RCE漏洞
  • CVE-2021-21972 VMware RCE漏洞
  • CVE-2021-25646 Apache Druid RCE漏洞
  • CNVD-2020-46552 深信服EDR
  • 网康下一代防火墙RCE漏洞

4.php相关函数

  • 命令command注入
system()              //执行外部程序,并显示输出
exec()                //通过shell环境命令,并且将完整的输出以字符串的方式返回
shell_exec()
pcntl_exec()		  //在当前进程空间执行指定程序
passthru()            //执行外部程序并且显示原始输出
popen()               //打开进程文件指针
proc_open()           //执行一个命令,并且打开用来输入/输出的文件指针
  • 代码code注入
    eval()                     //将字符串code作为php代码执行
    assert()                   //检查一个断言是否为false
    preg_replace()             //执行一个正则表达式的搜索和替换
    create_function()          //创建一个匿名函数并且返回换数名称
    call_user_func()
    call_user_func_array()
    usort()
    uasort()
    
    

5.windows命令拼接符号

&& 左边的命令执行成功,右边的才执行

& 简单的拼接

| 上一条命令的输出,作为下一条命令参数

|| 左边的命令执行失败,右边的才执行

6.Linux命令拼接符号

&& 左边的命令执行成功,右边的才执行

| 上一条命令的输出,作为下一条命令参数

|| 左边的命令执行失败,右边的才执行

; 没有任何逻辑关系的连接符

& 任务后台执行,与nohup命令功能差不多

7.实战技巧

关键字替换

空格 ${IFS}

flag f*** 通配符

cat more

;—— %0a回车 %0d换行 uml编码 在uml输入

例子: 127.0.0.1;cd flag_is_here;cat flag.php

playload: 127.0.0.1%0acd I F S f ∗ ∗ ∗ i s h e r e {IFS}f***_is_here%0amore IFSfishere{IFS}flag.php

8.漏洞防御

  1. 开源框架,升级到最新版本
  2. 尽量不要使用命令执行的函数
  3. 如果必须使用,需要做白名单处理
  4. 用正则表达式对用户输入的内容进行处理
  5. 使用waf

反序列化漏洞

1.PHP类与对象

2.magic函数

PHP保留所有以__开头的方法名称。因此,除非覆盖PHP的行为,否则不建议使用此类方法名称。

对一个类的生命周期进行丰富的操作,例如类创建时、类销毁时等。

3.PHP序列化和反序列化

序列化(serialize):将一个对象字符化

反序列化(unserialize):将一串字符恢复成对象

反序列化:注意

  1. 如果转递的字符串不可以序列化,则返回FALSE
  2. 如果对象没有预定义,反序列化得到的对象是_PHP_Incomplete_Class

作用:1.传输对象

​ 2.用作缓存(Cookie、Session)

反序列化与Magic函数

__wakeup

__unserialize 7.4.0)

如果类中同时定义了 unserialize()和 wakeup()两个魔术方法,则只有unserialize()方法会生效,wakeup()方法会被忽略。

其他序列化格式
  • json字符串 json_encode
  • xml字符串 wddx_serialize_value
  • 二进制格式
  • 字节数组

4.反序列化漏洞的出现

  1. unserialize函数的参数可控,比如通过GET请求传参(漏洞触发点)
  2. 脚本中定义了有Magic方法,方法里面有向php文件做读写数据或执行命令的操作,比如__destruct()、unlink()
  3. 操作的内容需要有对象中的成员变量的值,比如:filename

5.反序列化漏洞实例

CVE-2016-7124

当定义的成员变量数目大于实际的成员变量数目则跳过__wakeup()函数执行

6.typecho反序列化漏洞分析

CVE-2018-18753

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值