命令\代码执行漏洞与反序列化

一、命令与代码执行原理

网站在开发时对外部输入的参数未经严格过滤,并使用危险函数导致引入的参数被当作命令或代码执行。

二、系统命令与代码执行的函数

系统命令执行函数:

  • assert()
  • system()
  • passthru()
  • exec()
  • pcntl_exec()
  • shell_exec()
  • popen()
  • proc_open()
  • ``(反单引号)

代码执行函数:

  • eval()
  • assert()
  • call_user_func()
  • base64_decode()
  • gzinflate()
  • gzuncompress()
  • gzdecode()
  • str_rot()

三、命令执行测试方法

拼接命令:&  &&  |  || ;

例:ping 127.0.0.1 & ver

代码层面:

<?php
if(isset($_POST['submit']) && $_POST['ipaddress']!=null){   // 检查是否提交了表单且 'ipaddress' 参数不为空
    $ip=$_POST['ipaddress'];  // 将 'ipaddress' 参数的值赋给变量 $ip


    if(stristr(php_uname('s'), 'windows')){  // 判断操作系统是否为 Windows
       
        $result.=shell_exec('ping '.$ip);  // 在 Windows 系统下执行的 ping 命令
    }else {
        $result.=shell_exec('ping -c 4 '.$ip);  // 在非 Windows 系统下执行指定次数的 ping 命令
    }

}
?>

例:开发使用eval()函数

代码层面:

<?php
if(isset($_POST['submit']) && $_POST['txt']!= null){ // 检查是否提交了表单且文本输入不为空
    if(@!eval($_POST['txt'])){  // 尝试执行用户输入的代码,若执行失败
        $html.="<p>你喜欢的字符还挺奇怪的!</p>"; // 输出提示信息
    }
} 
?>

四、命令执行漏洞经常存在的地方

  • 路由器、防火墙、自动化运维平台等一些硬件设备界面,它们通常在网络调试中会留有网络测试窗口。
  • 中间件、系统框架等已知漏洞,在百度上都可以搜到以往的命令执行漏洞。
  • 只要带参数的地方都可能出现命令执行漏洞。

五、struts2框架命令执行漏洞复现

1、怎么判断网站是否为struts2框架?

参考:红队第2篇:区分Spring与Struts2框架的几种新方法-腾讯云开发者社区-腾讯云 (tencent.com)

扩展名判断:.action  .do

报错判断:访问不存在的资源报错判断

抓包判断

2、struts全版本漏洞检测工具探测

工具链接:百度网盘 请输入提取码

六、反序列化漏洞

反序列化漏洞就是将一个对象转化为可以传输的字符串形式(将恶意代码构建的对象转化为字符串的形式),利用反序列化的函数(serialize()  序列化函数)(unserialize()  反序列化函数),转化为原有的对象形式进行注入攻击。

1、序列化漏洞的利用条件

序列化和反序列化的内容是用户可以控制,且后台不正当的使用了PHP中的魔法函数就会导致安全问题

  •         序列化内容用户可有控制
  •         后台使用了不正当的PHP魔法函数

2、常见的魔法函数

  • __construct()当一个对象创建时被调用
  • __destruct()当一个对象销毁时被调用
  • __sleep() 在对象在被序列化之前运行
  • __toString()当一个对象被当作一个字符串使用
  • __wakeup将在序列化之后立即被调用

fastjson <= 1.2.80 存在反序列化任意代码执行漏洞。该漏洞利用黑白名单防御机制的绕过,即使autoType关闭也可能导致远程命令执行漏洞。这个漏洞的利用门槛较低,可以绕过默认限制攻击远程服务器,风险影响较大。建议fastjson用户立即采取安全措施来保护系统安全。对受影响的特定依赖≤1.2.80的情况下会有影响。为了解决这个问题,可以采取以下几种安全措施: 1. 升级到最新版本1.2.83,该版本修复了此次发现的漏洞。注意,该版本中涉及autotype行为变更,可能在某些场景下存在不兼容情况。如果遇到问题,可以到fastjson的Github页面寻求帮助。 2. 在1.2.68及之后的版本中引入了safeMode,可以通过配置safeMode来关闭autoType功能。这样无论是白名单还是黑名单,都不支持autoType,可以防止反序列化Gadgets类的变种攻击。但是请注意,在关闭autoType之前要充分评估对业务的影响。具体的配置方法可以参考fastjson的Wiki页面。 3. 考虑升级到fastjson v2版本,可以参考fastjson的Github页面了解相关信息。 总结起来,为了解决fastjson <= 1.2.80 反序列化任意代码执行漏洞,建议采取上述的安全措施,包括升级到最新版本、配置safeMode关闭autoType功能或者考虑升级到fastjson v2版本。这样可以防止漏洞的利用,并提升系统的安全性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [fastjson1.2.8 反序列化远程代码执行漏洞](https://download.csdn.net/download/xiazai_ceshi/18466350)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [fastjson <= 1.2.80 反序列化任意代码执行漏洞](https://blog.csdn.net/qq_18209847/article/details/124952791)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值