某不知名博客 某不知名博客
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carsaid

安全界的小学生
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前言

  • 服务器端主题(翻译)

  • 客户端主题(翻译)

  • 高级主题(翻译)

  • 扩展阅读(翻译)

  • 个人学习笔记

  • 实验室做题记录

    • 实验室做题记录
    • 服务器端

      • SQL注入

      • 身份验证

      • 目录遍历

      • OS命令注入

        • 学徒-OS命令注入-简单示例
          • 题目
          • 实操
        • 从业者-OS命令盲注-时间延迟
        • 从业者-OS命令盲注-输出重定向
        • 从业者-OS命令盲注-带外交互
        • 从业者-OS命令盲注-带外数据泄露
      • 业务逻辑漏洞

      • 信息泄露

      • 访问控制

      • 文件上传漏洞

      • SSRF漏洞

      • XXE注入漏洞

    • 客户端

    • 高级主题

  • BurpSuite及官方实验室
  • 实验室做题记录
  • 服务器端
  • OS命令注入
clincat
2023-06-11
目录

学徒-OS命令注入-简单示例

# 实验室:OS命令注入,简单示例

# 题目

本实验室的 产品库存检查器 中存在操作系统命令注入 (opens new window)漏洞。

应用程序执行 包含用户提供的 productID 和 storeID 的 shell 命令,并在其响应中 返回该命令的原始输出。

要解决实验室问题,请执行whoami命令以确定当前用户的名称。

实验室-学徒

OS命令注入,简单示例 >>

- name: 实验室-学徒
  desc: OS命令注入,简单示例 >>
  avatar: https://fastly.statically.io/gh/clincat/blog-imgs@main/vuepress/static/imgs/docs/burpsuite-learn/public/lab-logo.png
  link: https://portswigger.net/web-security/os-command-injection/lab-simple
  bgColor: '#001350'
  textColor: '#39d50c'
1
2
3
4
5
6

# 实操

根据题意,可得实验目标:

  • 在 产品库存检查器 中,尝试利用 OS命令注入漏洞,并执行 whoami 命令。

点击 “Access the lab” 进入实验室。

Not Found Image

实验室首页如下,可以看到很多的产品图像。

点击任意产品下方的 “View details” 以查看详细信息。

Not Found Image

在产品详情页下方,可以看到一个 “Check stock” 的按钮,可以用来检查当前产品的库存情况。

启用浏览器代理,然后点击该按钮。

Not Found Image

点击之后,成功查询了库存情况,当前产品剩余 43 件。

Not Found Image

查看 BurpSuite 数据包情况,其中传递了两个参数 商品id(productId) 和 店铺id(storeId)。

Not Found Image

尝试注入OS命令,应用程序正常返回了库存情况,说明未注入成功。

& echo test &
1
Not Found Image

符号&在 POST 传输中会造成一定影响,所以需要对其进行 URL 编码。

转到 “Decoder” 选项卡,对刚刚的 OS 命令进行编码操作。

# 编码前
& echo test &

# 编码后
%26%20%65%63%68%6f%20%74%65%73%74%20%26
1
2
3
4
5
Not Found Image

将编码后的命令注入到productId参数当中,返回了程序的绝对路径,以及错误信息 “未绑定$2变量” ,由此可以推断出目标命令格式:

# 命令运行格式
/home/peter-UVTHZp/stockreport.sh $productId $storeId

# 预期
/home/peter-UVTHZp/stockreport.sh 3 1

# 注入命令之后
/home/peter-UVTHZp/stockreport.sh 3& echo test & 1
1
2
3
4
5
6
7
8

第二个参数 storeId 被我们注入的命令给挤掉了,而程序执行必须要有两个参数,所以报错。

Not Found Image

尝试删除第一个参数值,错误信息 “未绑定$1变量”,印证了上面的猜想。

Not Found Image

改为注入第二个参数,应用程序返回了字符串 “test” ,注入的命令成功执行。

Not Found Image

将echo替换为whoami,并进行 URL 编码。

# 编码前
& whoami &

# 编码后
%26%20%77%68%6f%61%6d%69%20%26
1
2
3
4
5
Not Found Image

注入命令,whoami成功执行,应用程序返回了当前用户的名称。

Not Found Image

实验完成。

Not Found Image
编辑 (opens new window)
从业者-文件路径遍历-空字符绕过
从业者-OS命令盲注-时间延迟

← 从业者-文件路径遍历-空字符绕过 从业者-OS命令盲注-时间延迟→

最近更新
01
API测试笔记
04-30
02
msfvenom
03-29
03
Metasploit
03-29
更多文章>
Theme by Vdoing | Copyright © 2023-2024 Carsaid | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式