RCE代码及命令执行漏洞全解(30)

这篇具有很好参考价值的文章主要介绍了RCE代码及命令执行漏洞全解(30)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 web应用中,有时候程序员为了考虑灵活性,简洁性,会在代码中调用代码或执行命令执行函数去处理。

比如当应用在调用一些能将字符串转化成代码的函数时,没有考虑用户是否能够控制这些字符串,将代码执行漏洞,同样调用系统命令处理,将造成命令执行漏洞。

RCE代码及命令执行漏洞全解(30)

 危害是执行脚本代码,RCE代码及命令执行漏洞全解(30)

 危害是执行系统命令,系统命令就是命令提示符可以执行出来的语句,比如ip config就能查询到电脑的IP,系统命令可以做很多事情,影响到电脑。

执行脚本代码和执行系统命令,

代码执行是围绕着脚本语言来讲的,如果是php的脚本,就能执行出php的一些脚本命令,java网站的就执行java的脚本命令。而命令执行是围绕着操作系统来的,Linux的就就是linux语句,Windows就Windows语句。

用php代码的案列演示一下

写一串简单的代码RCE代码及命令执行漏洞全解(30)

 eval的意思时会把括号里面的字符串当作代码去执行,然后我现在去访问一下,给x传递一个值phpinfo去访问一下试试RCE代码及命令执行漏洞全解(30)

在测试一下,传递x值为echo 123RCE代码及命令执行漏洞全解(30) 

 结果就输出个123。

把代码里面eval换成system,然后执行输出出来

RCE代码及命令执行漏洞全解(30)

system就是会把字符串当作系统命令去执行

 然后输入一个系统命令,查看ip地址的RCE代码及命令执行漏洞全解(30)

 这个就属于命令执行。

漏洞的产生分两种情况,第一种情况是根据现实的应用情况,第二种情况是网站代码里面的情况,

先说代码层面,

漏洞形成条件:可控变量(通过传递参数可以改变变量值),漏洞函数(使用的那个函数对这个变量进行操纵,刚刚演示了一个eval的函数字符串当作代码去执行,system是调用php去执行系统命令,他们最后做出的漏洞,一个是代码执行一个是系统命令,如果将函数换成文件上传类函数,文件提交或者输出函数就会造成不同的漏洞,)

所以漏洞的类型由来的函数决定,漏洞是否存在将由可控变量来决定。缺一不可

网站源码是有类型分类的,有的就是购物,有的就是文件上传,或者社区论坛,因为类型不一样,网站程序员写代码的时候也会哟区别。比如说是文件管理的网站,它的代码就是以文件管理为主,而他的可能产生的漏洞也是文件下载或者上传的漏洞比较多一些。所以网站的应用决定漏洞的走向。

rce的漏洞比其他网站的几率要小,根据网站的漏洞去判断可能出现上面漏洞,比如一个单纯的新闻网站就不可能出现代码执行。

关于漏洞检测分为两个方向,白盒和黑盒

白盒就是你知道对方网站的源码,相关信息,黑盒就是啥都没有,

白盒有源码我们就可以在源码中分析有没有这个漏洞,叫做代码审计。黑盒方向没有对方源码我们就可以用一下漏扫工具,之外还可以去找利用一些网上的公开漏洞,刚好公开的漏洞和他是对应的,他所说的程序和版本漏洞,我们就可以用网上公开漏洞去检查测它,第三种方法就是手工,根据对方的参数值和功能点去判定,拿老师的博客网站做演示RCE代码及命令执行漏洞全解(30)

 这就是一个简单的博客网站,不可能会产生上面文件上传的那种漏洞,然后参数值也是正常的123,如果参数值是echo 123,和php代码一些东西有关,就可能存在问题,就可以用phpinfo()去测试一下。

实战中还可能参数值加密,然后解密之后还可以继续测试。

#案列演示

打开墨者靶场,黑盒#命令注入执行分析

RCE代码及命令执行漏洞全解(30)

 这个功能点有这么个功能,进行类似的像我们电脑上ping命令,这相当于就满足了命令,明显可能出现命令执行漏洞,可控变量和漏洞函数都存在。第一要去分析是什么操作系统,RCE代码及命令执行漏洞全解(30)

通过查看数据包分析出来了是linux操作系统,然后如果输入字符串的话网站会提示格式正确,所以网站还有一个检测输入的是不是ip地址,

RCE代码及命令执行漏洞全解(30)

 这时候我们可以使用Linux执行多条的命令的符号  |   用这个符号连接起来ip再去操作RCE代码及命令执行漏洞全解(30)

 这次的提示有一个组织测页面更多对话框,这就是个前端验证,就可以右键源代码去分析,

解决方法:1.浏览器设置禁用本地js 2.将网站源代码复制,将验证的js代码删除3.抓包工具修改数据包(在数据包内修改执行语句,就不会被前端检测)RCE代码及命令执行漏洞全解(30)

 这是个js代码,这个检测不是服务端的检测,onsubmit鼠标事件之后,就会返回f-check-i开始检测ip,我们把它禁用掉就会了,这个可以抓包,我们打开burp,然后输入一个正常ip127.0.0.1,抓住数据包之后ip后面加上|ls,这个命令是查看所在文件夹目录RCE代码及命令执行漏洞全解(30)

就出现了,然后我们直接读取文件里面的内容,就能知道要提交什么,RCE代码及命令执行漏洞全解(30) 

 |cat<文件名字,语句是这样的,有时候空格不行可以换成%20试试,可能网站有检测就换换别的,刚刚老师用ls 文件名和ls%20文件名,就没有显示出来。

#墨者靶场,白盒代码及命令执行,

打开靶场

RCE代码及命令执行漏洞全解(30)

 RCE代码及命令执行漏洞全解(30)

 在网上随便找一个php在线运行,然后运行一下这个代码,运行一下看看,把eval去掉,去掉相应的括号。然后echo输出一下,把它运行看一下,RCE代码及命令执行漏洞全解(30)

RCE代码及命令执行漏洞全解(30)

变量request,是接受获取POST或GET方式提交的数据、COOKIE信息,同时可以在代码里看出来传参数值是a。然后直接RCE代码及命令执行漏洞全解(30)

 然后在进行一个key的读取就能获取到完成靶场的东西了。

RCE代码及命令执行漏洞全解(30)

 这里就有一个问题,为什么用的ls,tac这种Linux的系统命令,是因为echo在Linux的里面的用法,echo `字符串`  字符串是系统命令的的话就会执行,实列如下图。 RCE代码及命令执行漏洞全解(30)

#墨者靶场,黑盒rce漏洞检测——公开漏洞

打开测试靶场RCE代码及命令执行漏洞全解(30)

 那个webmin是啥啊,网上搜一下,网上说是linux的系统管理工具,那直接网上搜一下漏洞,看看有没有西瓜吃,

RCE代码及命令执行漏洞全解(30)

有, 漏洞复现里面就用post数据发送给数据包就行RCE代码及命令执行漏洞全解(30)

 然后在回到靶场解密,随便输入个账户密码登陆抓住数据包之后,

RCE代码及命令执行漏洞全解(30)

RCE代码及命令执行漏洞全解(30)

根据网站的提示的数据包,更改一下地址然后修改下面的数据之后,直接发送,就会显示出来所在文件夹目录

RCE代码及命令执行漏洞全解(30)

 然后选择只需要找到答案就行,根据靶场的目标上写着在网站的根目录,所以就是把ls换成ls/就可以RCE代码及命令执行漏洞全解(30)

 然后利用cat读取,因为是根目录,所以语句是cat /key.txt,然后就可以看到了RCE代码及命令执行漏洞全解(30)

 再利用这个公开的漏洞,要自己找到测试出来可以应该修改的地方吗,比如这个公开的漏洞,下面那串语句里面有一个id,然后获取到的就是root,就是这种名字,所以判断出来id是应该修改且有效的地方。

#产生,就是这个网站会产生在哪些地方

第一种是网站程序源码类

脚本代码执行的

thinkphp,eyoucms,wordpreess都产生过,会产生在web程序源码中

中间件平台也会产生,tomcat,apache struts2,redis,都产生过

其他环境也有,php-cci,jenkins-ci,java rmi,也有

系统命令执行的

web源码,nexus,webmin,elasticsearch,都产生过

中间件平台,weblogic,apache  都产生过

其他环境,postgresql,samba,supervisord  都有过

#javaweb-struts2框架类rcs漏洞-漏洞层面

演示一下中间件搭建平台,struts2

还是打开墨者靶场

RCE代码及命令执行漏洞全解(30)

 靶场说得很去,struts2,他是一个基于mvc设计的web应用框架,随便网上一找就有RCE代码及命令执行漏洞全解(30)

 poc是验证代码,exp是利用代码,直接复制exp的代码,后面命令写个ls试试,RCE代码及命令执行漏洞全解(30)

 然后读取key.txt就可以了,RCE代码及命令执行漏洞全解(30)

 这关其实是告诉你这个漏洞产生在多个层面。不仅网站源码其他地方也会产生。

#rce漏洞防御

第一个就是waf产品,网上的一些防护软件,第二种方法就是敏感函数禁用,第三种方法变量过滤或者固定,

第二种,对变量进行过滤,但是命令是多样性我们该如何过滤它呢,他不想sql注入select有这种关键字,比如代码执行,它的代码是多样的,比如想要文件读取有readfile或者fread各种各样的函数,执行那么一个东西,各种各样的命令去执行一样东西,所以去防护关键值不现实,所以我们对变量进行控制,只让她执行某一个东西就行了,但是这种要根据实际情况。

还有一种就是敏感函数禁用。防止漏洞产生的根本条件,漏洞产生两个条件,可控变量,敏感函数,先说代码执行,我们以php为例,eval,assert,RCE代码及命令执行漏洞全解(30)

 RCE代码及命令执行漏洞全解(30)

 直接在网上代码执行漏洞函数,防御就是把这些函数给禁用掉,使用到某个敏感函数就对变量进行过滤,使用不到就直接禁用,同样在代码里面挖掘这个漏洞就找他有没有对应的敏感函数,只有有才可能会产生。

#扩展知识菜刀

菜刀一句话代码执行,RCE代码及命令执行漏洞全解(30)

一句话执行出那么多功能可能吗?不可能。eval会把post(x)传递过滤的参数进行执行,抓包看一下

这个在执行的时候,点开一个目录的时候,其实就是他把这个功能性函数写到这个程序里面去了,点开一个目录的时候就相对应,就会向代码发送一个功能性代码过去,比如说我们要去读取目录,他就用php代码去实现读取那个目录的php代码发送到,变量里面,然后eval去执行,

菜刀的原理就是把一些写好的功能数据包,写到工具里面去,然后用代码去实现正常的收发,然后去控制。文章来源地址https://www.toymoban.com/news/detail-465994.html

到了这里,关于RCE代码及命令执行漏洞全解(30)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 4.9、漏洞利用 smb-RCE远程命令执行

    目录 1、samba服务介绍 2、漏洞相关信息 3、探测samba 4、metasploit利用 5、samba历年漏洞 1.1 samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。 1.2 SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域

    2024年02月07日
    浏览(57)
  • HVV爆火漏洞:最新 WPS RCE (远程命令执行) 复现

    最近HVV爆出的很火的WPS命令执行漏洞,其实并不是0DAY,早在2019年就出现了,只不过最近EXP才公开。接下来我们来复现一遍。 WPS Office 2023 个人版 11.1.0.15120 WPS Office 2019 企业版 11.8.2.12085 wps版本: WPS V11.1.0.12300 靶机: windows 10 攻击机: ubuntu 20.04     IP:192.168.2.103 WPS 内置了一

    2024年02月11日
    浏览(41)
  • RCE代码及命令执行(详解)

      RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。   1)调用第三方组件存在的代码执行漏洞。   2)用户输入的内容作为系统命令的参数拼接到命令中。   3)对用户的输入过滤不严格。   4)可控变量或漏洞函数。   像

    2024年02月11日
    浏览(48)
  • Thinkphp5.0.23 rce(远程代码执行)的漏洞复现

    框架介绍: ThinkPHP是一款运用极广的PHP开发框架。 漏洞引入: 其5.0.23以前的版本中,获取method的方法中没有正确处理方法名,导致攻击者可以调用Request类任意方法并构造利用链,从而导致远程代码执行漏洞。 1、访问靶机地址+端口号 进入首页 2、Burp抓包修改传参方式为Po

    2024年02月06日
    浏览(36)
  • CVE-2021-22204 GitLab RCE之exiftool代码执行漏洞深入分析(二)

    文章写于2022-01-19,首发在天融信阿尔法实验室 1 前言 2 前置知识 2.1 JPEG文件格式 2.2 Perl模式匹配 3 exiftool源码调试到漏洞分析 3.1 环境搭建 3.2 漏洞简介 3.3 exiftool是如何解析嵌入的0xc51b标签 3.4 exiftool是如何调用parseAnt函数 3.5 parseAnt函数分析 3.6 parseAnt漏洞分析 4 漏洞利用 4.1

    2024年02月14日
    浏览(25)
  • 【CTF】命令执行RCE

    *方法一* : 查看靶场内容,其中过滤了flag字样,那么也就是说可以执行phpinfo()、system()等的命令。一般目标的敏感文件位于tmp目录下,使用命令c=system(“ls /tmp”)查看tmp目录下的文件,由结果可看出其中有flag.php文件。然后使用命令system(“cat /tmp/flag.php”)即理论上可以查看

    2024年02月03日
    浏览(36)
  • YApi分析从NoSQL注入到RCE远程命令执行.md

    这个是前几个月的漏洞,之前爆出来发现没人分析就看了一下,也写了一片 Nosql注入的文章,最近生病在家,把这个写一半的完善一下发出来吧。 YApi是一个可本地部署的、打通前后端及QA的、可视化的接口管理平台。 YApi 是 高效 、 易用 、 功能强大 的 api 管理平台,旨在为

    2023年04月24日
    浏览(39)
  • Ctfshow web入门 命令执行RCE篇 web29-web77 与 web118-web124 详细题解 全

    pregmatch 是正则匹配函数,匹配是否包含flag, if(!preg_match(\\\"/flag/i\\\", $c)) , /i 忽略大小写 可以利用system来间接执行系统命令 flag采用 f* 绕过,或者 mv fl?g.php 1.txt 修改文件名,或者 cat 反引号ls反引号 linux通配符:https://www.cnblogs.com/ysuwangqiang/p/11364173.html 多了对system和php的过滤 用

    2024年02月07日
    浏览(42)
  • CTFHub笔记之技能树RCE:eval执行、文件包含、远程包含、php://input、读取源代码

    小白一个,记录解题过程,如有错误请指正! 知识点:         eval():把字符串 code 作为PHP代码执行。函数eval()语言结构是非常危险的,因为它允许执行任意 PHP 代码。它这样用是很危险的。如果您仔细的确认过,除了使用此结构以外别无方法, 请多加注意,不要允许传入

    2024年02月01日
    浏览(36)
  • vscode 的代码提示有时候有,有时候没有(python)

    vscode 的代码提示有时候有,有时候没有。没有的时候出现如下报错: Sorry, something went wrong activating IntelliCode support for Python. Please check the “Python” and “VS IntelliCode” output windows for details. 不太清楚为什么,把 IntelliCode 的版本换了别的也不好用。 先存一下,以后遇到解决方法

    2024年02月09日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包