JDK有以下几种方法:
创新互联建站-专业网站定制、快速模板网站建设、高性价比屯留网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式屯留网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖屯留地区。费用合理售后完善,10年实体公司更值得信赖。
1、查找目前所使用的linux下所使用的jdk安装后的目录:echo $JAVA_HOME;
2、获得目前所使用的linux下所使用的jdk的版本java -version;
3、获得所安装后的jdk的版本,在bin目录下输入 ./java -version即可;配置好Java环境的情况下可以使用 java -version查看。
拓展资料:
JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。
SE(JavaSE),standard edition,标准版,是我们通常用的一个版本,从JDK 5.0开始,改名为Java SE。
近日,Qualys研究团队公开披露了在Polkit的pkexec 中发现的一个权限提升漏洞,也被称为PwnKit。该漏洞是由于pkexec 无法正确处理调用参数,从而将环境变量作为命令执行,任何非特权本地用户可通过此漏洞获取root权限。目前该漏洞PoC已公开。
具有任意用户权限的攻击者都可以在默认配置下通过修改环境变量来利用此漏洞,从而获得受影响主机的root 权限。
Polkit预装在CentOS、Ubuntu、Debian、Redhat、Fedora、Gentoo、Mageia等多个Linux发行版上,所有存在Polkit的Linux系统均受影响。
以下为安全版本
注意:版本号必须完全一致,否则还是存在漏洞。最好的办法是通过代码验证,验证代码库地址:
切换到源代码目录,编译,运行,输入命令whami可以看到当前用户已经变成了root。
事实证明确实存在此漏洞!
以下命令在Rocky Linux 8.5上验证,可以修复CVE-2021-4034漏洞
命令的含义
yum clean all :清除所有的缓存信息,包括packages、metadata、headers,这个命令相当于执行了下面三条命令
yum makecache : 生成缓存
此时再执行验证代码,可以发现已经无法提升权限。
注意 :在某些CentOS 8版本中,执行 yum update polkit -y 之后,polkit的版本号显示为:polkit-libs-0.115-12.el8.x86_64,经过验证,此版本仍然存在漏洞。此时只能通过下面的临时缓解措施解决。
CentOS 8 操作系统可能确实无法通过 yum update polkit -y 的方法修复漏洞,这是因为C entOS 8已经于2021年12月31日停止更新并停止维护(EOL)。
那么只能通过临时缓解措施解决了。
缓解之前的
缓解之后的
变化在于文件/usr/bin/pkexec的权限由之前的4755变成了0755
本次测试环境在阿贝云免费云服务器()上进行,阿贝云目前正在进行"免费虚拟主机"和“免费云服务器”体验活动,感兴趣的可以试试。
就是构造线,你可以用这个命令画出一条任意角度的无限延长的线,这在画三视图等需要长度或高度对齐的时候很有帮助。
在我们获得了对目标的控制权后,还想保持这种控制权限,于是就出现了木马后门,Rootkit之类的保护权限的手段。首先来说一下我们常见的应用层次的木马后门,比如我们常见的远程控制类的软件,像国外的Sub7,VNC,netbus,国内的冰河,灰鸽子,黑洞等等,这些大家都很熟悉因此就不详细介绍了。然而此类后门的可以很容易被发现,现在的杀毒软件大多都能轻松的查处,即使暂时查不到,用其他手段检测也不是很困难,现在就我就给大家介绍一种比一般木马后门潜伏的更深的一类木马后门--Rootkit。
传统的Rootkit是一种比普通木马后门更为阴险的木马后门。它主要通过替换系统文件来达到目的。这样就会更加的隐蔽,使检测变得比较困难。传统的Rootkit对一系列平台均有效,但主要是针对Unix的,比如Linux,AIX,SunOs等操作系统。当然有些Rootkits可以通过替换DLL文件或更改系统来攻击windows平台.Rootkit并不能让你直接获得权限,相反它是在你通过各种方法获得权限后才能使用的一种保护权限的措施,在我们获取系统根权限(根权限即root权限,是Unix系统的最高权限)以后,Rootkits提供了一套工具用来建立后门和隐藏行迹,从而让攻击者保住权限。
下面就针对Unix来讲解一下传统Rootkit的攻击原理
RootKits是如何实现后门的呢?为了理解Rootkits后门,有必要先了解一下Unix的基本工作流程,当我们访问Unix时(不管是本地还是远程登陆),/bin/login程序都会运行,系统将通过/bin/login来收集并核对用户的帐号和密码.Rootkits使用一个带有根权限后门密码的/bin/login来替换系统的/bin/login,这样攻击者输入根权限后门的密码,就能进入系统。就算管理员更改了原来的系统密码或者把密码清空。我们仍能够
使用后门密码以根用户身份登陆。在攻入Unix系统后,入侵者通常会进行一系列的攻击动作,如安装嗅探器收集重要数据,而Unix中也会有些系统文件会监视这些动作,比如ifconfig等,Rootkit当然不会束手就擒,它会同样替换一下这些系统文件,
通常被Rootkit替换的系统程序有login,ifconfig,du,find,ls,netstart,ps等。由于篇幅问题,这些系统文件的功能就不一一罗列,有兴趣的读者可以自己去查找,现在Rootkit的工具很多,里面基本都是包含一些处理过的系统文件来代替原来的系统文件的,像tOmkit等一些Rootkit就是比较优秀的了。
防御办法:Rootkit如此可怕,得好好防它才行,实际上,防御他的最有效的方法时定期的对重要系统文件的完整性进行核查,这类的工具很多,像Tripwire就是一个非常不错的文件完整性检查工具。一但发现遭受到Rootkit攻击,那你就比较麻烦了,你必须完全重装所有的系统文件部件和程序,以确保安全性.
写到这里,战争似乎结束了,然而更可怕的Rootkit还没登场,那就是更加恐怖( 这个词一点也不夸张)的内核级Rootkit。在大多数操作系统中(各种Uni x和windows),内核是操作系统最基本的部件,它控制着对网络设备、进程、系统内存、磁盘等的访问。例如当你打开一个文件时,打开文件的请求被发送到内核,内核负责从磁盘得到文件的比特位并运行你的文件浏览程序。内核级Rootkit使攻击者获得对系统底层的完全控制权。攻击者可以修改你的内核,大多数内核级Rootkit都能进行执行重定向,即截获运行某一程序的命令,将其重定向到入侵者所选中的程序并运行此程序。也就是说用户或管理员要运行程序A,被修改过的内核假装执行A,实际却执行了程序B.现在就介绍一下内核级的Rootkit是如何攻击Unix系统的
和传统的Rootkit不同,Unix的bin/login并未被修改,但所有执行/bin/login 的请求(当登陆系统时将产生)都被重定向到攻击者制作的隐藏文件/bin/backdoorlogin,这样当系统管理员使用检测传统级别的Rootkit的方法(比如用tripwire之类的软件检测文件的完整性)就行不通了,因为/bin/login并没有被改变。同样的道理,攻击者对其他的系统程序也进行重定,这样你的操作实际就是按照入侵者的意愿执行了。也就是说,表面上你在运行程序A,你也认为自己运行的是程序A,而实际上你运行的是入侵者设定的程序B~!
更恐怖的是,内核级Rootkit不仅仅只会进行执行重定向,许多内核级Rootkit还支持文件隐蔽。传统的Rootkit是通过替换ls程序来实现文件的隐藏,而内核级的Rootkit则是通过对内核的修改来对ls程序欺骗,更加的阴险隐蔽。另外内核级的Rootkit还能对进程和网络进行隐藏,用户将得不到真实的系统情况报告。
实现思路:根据系统的类型,攻击者有不同的方法来对内核进行修改,在N种Unix系统上修改内核最简单的方法就是利用系统本身的加载的内核模块(LKM)的功能,因此大多数的内核级Rootkit通过利用LKM动态地将内核更新来提供新功能,新添加的模块扩展了内核,同时对内核和其他使用内核的所有东西有了完全访问权。
因此,许多内核级Rootkit都通过LKM来实现。安装通过LKM实现的内核级Rootkit十分简单。例如,在Linux上安装Knark内核级Rootkit只需具有根权限的入侵者输入命令: insmod knark.o 就行了,模块被安装后就等着我们输入命令了。更妙的是整个过程不需要重启.。通过LKM 实现的Rootkit在Unix上十分流行。我们也常常会通过给windows平台打LKM补丁的方法攻击windows.
内核级Rootkit 的几个例子
现在有大量的内核级Rootkit可用,现在我就选几种比较强大的来跟大家讨论一下,
一、 linux 上的内核级Rootkit:Knark
Knark具有各种标准的内核级Rootkit功能,包括执行重定向,文件隐藏,进程隐藏和网络隐藏。另外,还有不少比较过瘾的功能,如:
1、远程执行:我们可以通过网络向运行Knark的机器发送一条命令,源地址是假造的,
命令被发往UDP端口53,使之表面上看起来像是DNS流量。我们就可以利用这个功能
来升级Knark,删除系统文件或其他任何我们想做的事
2、任务攻击:当某一进程在系统上运行时,它总是具有与UID和有效的UID(EUID)相关的权限。另外进程还具有与文件系统UID(FSUID)相关的文件及目录访问权。Knark的任务攻击能力可实时地将进程UID,EUID和FSUID改变。进程在不停止运动的情况下突然具有了新的权限
3、隐藏混杂模式:
同一般的RootKit一样,入侵者也会在受害者机器上运行嗅探器。我们可以用文件隐藏和进程隐藏将嗅探器隐藏起来。然而,以太网卡会被设成混杂模式,管理员可以检查到这一点
Knark将内核进行了修改,使之隐瞒网卡的混合模式,这将使嗅探变得更加隐秘。
4、实时进程隐藏:
Knark可以将一个正在运行的进程隐藏起来。通过发送信号31给一个进程,此进程将消失,
但仍在运行。命令kill-31 process_id将阻止内核汇报任何有关此进程的信息。进程在运行时,ps和lsof命令的使用都不能显示此进程
5、内核模块隐藏:Linux中的lsmod命令可以列出当前在机器上安装的LKM.,我们自然不想让管理员看到Knark模块,因此Knark包含了一个单独的模块modhide,modhide将Knark
和自己隐藏了起来。这样,当我们用Knark攻击一个系统时,我们首先为Knark.o做一个insmod,然后为modhide.o做一个insmod。这样不管谁运行lsmod命令,这些模块都不会被发现.
二、 另一个Linux上的内核级Rootkit:Adore
同Knark一样,Adore也是一个针对Linux的LKM RootKit. 他包含了标准的内核级Rootkit功能,如文件隐藏,进程隐藏,网络隐藏和内核模块隐藏。我们只所以讨论Adore,是因为他还有一个非常强大的功能:内置的根权限后门。
Adore的根权限后门可以让我们连接到系统上并获得根权限的命令外壳,此功能十分直接了当 ,Adore将此功能巧妙的包含在内核模块中了。这一招十分难破,因为管理员看不到任何文件、进程、侦听网络端口的迹象。
防御办法:防御内核级的Rootkit的根本办法是不要让攻击者得到你的机器的系统的根本权限(Unix里的root和windows里的admin),不过这看起来像废话:),目前对内核级的Rootkit还没有绝对的防御体系。
现在也存在一些Rootkit自动检测工具,但都不是很可靠.同时内核级的Rootkit也在不断的发展中,对一些系统来说防御它最好的办法是使用不支持LKM的内核,Linux的内核就可以设成不支持LKM的单一内核。
在Linux中,查看是32位还是64位的JDK,可以在命令行下敲下java -version,回车;64位的JDK版本会出现64bit,而32位的不会出现。
JDK(Java Development Kit) 是 Java 语言的软件开发工具包。JDK包含的基本组件包括:
javac – 编译器,将源程序转成字节码
jar – 打包工具,将相关的类文件打包成一个文件
javadoc – 文档生成器,从源码注释中提取文档
jdb – debugger,查错工具
java – 运行编译后的java程序(.class后缀的)
appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。
Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。
Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
Jconsole: Java进行系统调试和监控的工具
使用eclipse进行嵌入式Linux的开发环境配置:
1、安装jdk
jdk(java development kit)即java开发包,其中包含了运行eclipse所需要的jre. ubuntu缺省安装的gnu版本的jre运行效率不高,所以需要安装sun公司的jre. 首先从sun的网站上下载安装包jdk-6u7-linux-i586.bin,然后如下进行安装:
# mkdir -p /opt/java
# ./jdk-6u7-linux-i586.bin // 执行自解压文件,生成目录
# mv jdk1.6.0_07 /opt/java // 把目录移到/opt/java下
# cd /opt/java
# ln -s jdk1.6.0_07 jdk
# mv /etc/alternatives/java /etc/alternatives/java.gnu
# ln -s /opt/java/jdk/bin/java /etc/alternatives/java
# export JAVA_HOME=/opt/java/jdk // 设置环境变量
2、安装eclipse和cdt
从eclipse网站上下载安装包eclipse-SDK-3.4-linux-gtk.tar.gz 和cdt-master-5.0.0.zip
# cd /opt
# tar zxvf eclipse-SDK-3.4-linux-gtk.tar.gz // 解压生成eclipse目录
# export PATH=/opt/eclipse:$PATH
# mkdir -p /opt/cdt
# cd /opt/cdt
# unzip cdt-master-5.0.0.zip
# cp -r plugins/* /opt/eclipse/plugins/
# cp -r features/* /opt/eclipse/features/
二、创建c/c++工程
假设已经在linux上安装好了arm交叉工具链,下面介绍如何创建、交叉编译和调试c/c++工程,进入eclipse安装路径后,运行eclipse。
创建c 工程
使用缺省的Linux GCC工具链
进入c/c++ 界面
添加源代码文件1
添加源代码文件2
编辑代码
设置工程属性,指定交叉工具链1
设置工程属性,指定交叉工具链2
设置工程属性,指定交叉工具链3
编译工程
已生成arm平台可执行代码
配置调试选项
设置Debugger和 GDB debugger选项
设置连接类型为TCP,目标板的ip地址和调试端口号。端口号任意指定,通常大于1024(避免和系统所用端口号冲突)
在开发板上运行程序,格式如上图所示:gdbserver是交叉调试辅助程序;192.168.0.150是主机的ip地址;1234是调试端口号,和eclipse调试选项里设定的端口号要一致
点击Debug,进入调试界面
执行到断点
eclipse的调试界面和操作和在windows下开发类似。
所需开发工具及环境
虚拟机Linux:Fedora 9
交叉编译工具:arm-linux-gcc-3.4.1.tar.bz2
集成开发工具:Eclipse(Linux安装包中自带的,安装Linux时选中安装)
安装ARM交叉编译器
1. 安装。其实很简单,就是将下载的arm-linux-gcc-3.4.1.tar.bz2解压到Linux根目录即可(因为解压后已经包含了/usr/local目录,所以要解压到根目录),如下命令:
tar -jxvf arm-linux-gcc-3.4.1.tar.bz2 -C /
解压后的目录/usr/local/arm/3.4.1/
2. 设置环境变量。就是把交叉编译器的路径设置到系统环境变量里面去。
echo $PATH
查看现有的环境变量
如果只想临时添加交叉编译器的环境变量(注:临时添加的系统重启或注销后又没有了),只需在命令行输入如下命令:
export PATH=$PATH:/usr/local/arm/3.4.1/bin
如果想这个环境变量永久的添加到系统的环境变量中,则你只需把这个命令添加到/root/.bashrc文件的最后一行即可(这个文件是隐藏文件,你要在文件浏览器中单击查看菜单,勾选显示隐藏文件才能看到)
3. 测试建立的交叉编译环境。新建一个c程序,文件名:test.c, 如下:
#include stdio.h
int main(void)
{
printf("Hellow world!\n");
return 0;
}
进行交叉编译,如下:
arm-linux-gcc -o test test.c
将交叉编译好的目标文件test下载到ARM开发板中并运行,如下:
./test
输出结果为:
Hellow world!
用集成开发工具Eclipse来开发嵌入式应用程序
双击Eclipse图标启动Eclipse
设置Eclipse的工作空间,就是选个目录,单击OK
启动后的主界面
开始新建一个应用程序工程
选择新建一个C工程,单击Next
给工程取个名字,这里我就叫test_app;然后选择工程类型,我选择了个Hellow world C工程模版,单击Next
填写作者、版权等信息,单击Next
没什么选的,点击Finish
单击Yes
新建好的项目工程
展开左边的源代码目录,双击打开主函数。这里只是输出一句"Hello World!!!",你可以做一些其他复杂的应用
单击Project菜单,去掉Build Automatically的勾选,因为勾选的话,每次修改一个地方工程都会自动进行编译
打开工程的属性对话框进行编译选项的设置
我们的应用程序最终要到嵌入式arm上运行,这里就要把gcc改成arm-linux-gcc编译器,当然前提是你要在你的开发主机上先安装arm-linux-gcc
C连接器也要改成arm-linux-gcc
这里的Libraries是设置你的应用程序中用到的库文件,比如应用程序中用到了线程类,则这里在上面添加pthread这个库,下面就添加这个库的路径。如果应用程序没用到任何库文件就不用管了
选中左侧的工程名,右键,在弹出的菜单中选择Build Project编译工程
编译好后的工程,目标文件在Debug目录下