提示:本文记录了博主打靶过程中一次曲折的提权经历

目录

  • 1. 主机发现
  • 2. 端口扫描
  • 3. 服务枚举
  • 4. 服务探查
    • 4.1 80端口探查
    • 4.2 1898端口探查
    • 4.3 EXP搜索
      • 4.3.1 exploit/unix/webapp/drupal_coder_exec
      • 4.3.2 exploit/unix/webapp/drupal_drupalgeddon2
  • 5. 提权
    • 5.1 系统信息枚举
    • 5.2 探查/etc/passwd
    • 5.3 枚举定时任务
    • 5.4 枚举可执行程序
      • 5.4.1 ping6
      • 5.4.2 chfn
    • 5.4.3 pkexec
      • 5.4.4 mtr
      • 5.4.5 pppd
    • 5.5 EXP提权
    • 5.5.1 CVE-2017-16995
    • 5.5.2 CVE-2017-1000112
    • 5.5.3 CVE-2016-8655
      • 5.5.4 CVE-2016-5195 dirtycow
      • 5.5.5 CVE-2016-5195 dirtycow2
  • 6. 获取flag

1. 主机发现

目前只知道目标靶机在65.xx网段,通过如下的命令,看看这个网段上在线的主机。

$ nmap -sP 192.168.65.0/24


锁定靶机地址为192.168.65.148。

2. 端口扫描

通过下面的命令对目标靶机进行全端口扫描。

$ sudo nmap -p- 192.168.65.148

3. 服务枚举

通过下面的命令枚举一下目标靶机的开放端口上运行着什么服务。

$ 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.5,kernel版本是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/crontab

5.4 枚举可执行程序

先枚举一下root用户下面其它用户客户可写的文件。

$ find / -type f -user root -perm -o=w 2>/dev/null | grep -v "/sys/" | grep -v "/proc/"


就搜出来了一个隐藏文件.lock,看看这是个啥文件。

竟然是空的,没有理想的结果,再看看具备SUID的可执行文件(下面命令三选一)。

$ find / -user root -perm -4000 -print 2>/dev/null
$ find / -perm -u=s -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-data@lampiao:/tmp$ nc -nlvp 6666 > 1299.sh

kali上通过kali往靶机的6666端口发送1299.sh文件

$ nc -nv 192.168.65.148 6666 < 1299.sh

然后在靶机上修改一下执行权限,并运行一下。

理论上,这个脚本应该是可以提权的,可惜的是在这里没法使用,因为需要当前用户的密码,等我们拿到当前用户密码的时候,再回来试试看。

5.4.3 pkexec

这个pkexec是我们的老朋友了,先看一下靶机上的polkit版本。

www-data@lampiao:/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-data@lampiao:/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-data@lampiao:/tmp$ g++ -Wall -pedantic -O2 -std=c++11 -pthread -o 40847 40847.cpp -lutil


编译成功。
说明:这里了说明一下各个参数的含义。
-Wall选项让gcc提供所有有用的告警;
-pedantic选项允许发出标准C列出的所有告警;
-O2选项是编译器优化选项的4个级别中的一个(-O0表示无优化,-O1为缺省值,-O3优化级别最高);
-std=c++11选项表示按照2011版C++的标准执行编译;
-pthread选项表示当用到多线程时调用pthread库。

然后运行一下编译的可执行文件。

直接搞出了root的密码,太牛逼了,试一下切换到root用户。

貌似搞定了,验证一下。

6. 获取flag


搞定。

实战打靶集锦-016-lampiao相关推荐

  1. 实战打靶集锦-012-sar2HTML

    **写在前面:**记录博主的一次打靶经历. 目录 1. 主机发现 2. 端口扫描 3. 服务枚举 4. 服务探查 5. 搜索公共EXP 6. 文件上传研究 7. 提权 7.1 弱密码提权 7.2 枚举 ...

  2. 实战打靶集锦-018-decoy

    提示:本文记录了博主的一次打靶过程 目录 1. 主机发现 2. 端口扫描 3. 服务枚举 4. 服务探查 4.1 浏览器探查 5. 突破边界 6. 提权 6.1 rbash绕过 6.2 枚举系统信息 ...

  3. 实战打靶集锦-021-glasgowsmile

    提示:本文记录了博主的一次曲折的打靶经历. 目录 1. 主机发现 2. 端口扫描 3. 服务枚举 4. 服务探查 4.1 手工访问 4.2 目录枚举 4.3 手工探查 4.4 搜索EXP 4.5 jo ...

  4. 实战打靶集锦-001-Funbox2

    **写在前面:**这应该是本人第一次自主成功完成的打靶,纪念一下下. 目录 1. 主机发现 2. 端口扫描 3. 服务枚举 4. 服务探查 4.1 Apache探查 4.1.1 浏览器访问 4.1.2 ...

  5. android简单app实例_Android安卓小项目实战视频教程集锦

    Android安卓小项目实战视频教程,点击进入视频教程: 一.安卓项目视频教程: 1蓝牙聊天APP介绍-分步骤介绍一个简单安卓蓝牙APP的开发过程 - 西瓜视频 2蓝牙聊天开发流程-分步骤介绍一个简单 ...

  6. OpenStack安装部署实战——问题集锦

    为什么80%的码农都做不了架构师?>>>    安装OpenStack是一个及其考验耐心的事情.最近前后花了一个月的时间,尝试手动.自动两种方式部署OpenStack.我想说的是,尼 ...

  7. 实战多种方式实现远程控制

    文章来源|MS08067 红队培训班 第5期 本文作者:山(红队培训班5期学员) 作业的思路是实现控制端(Server)对受控端(Client)的远程控制:在作业中,将以python代码 以及 jav ...

  8. Hadoop 2.X 从入门到精通系列视频课程套餐

    购买大数据Hadoop课程套餐,享八五折优惠!! 套餐地址:http://edu.51cto.com/pack/view/id-806.html 赵强老师博客地址:http://collen7788. ...

  9. 2022 年度「博客之星」评选TOP 200进100结果已出炉

    2022年「博客之星」年度评选马上进入专家评审阶段,「博客之星」评选TOP 200 进 100 结果也已出炉.具体名单以及评选规则如下: TOP 100 名单(按照码龄排序) CSDN ID 昵称 博 ...

最新文章

  1. Fragment里面嵌套Fragment注意事项
  2. oracle数据库按照城市分组_大数据分组怎样才会更快
  3. ThreadLocal原理分析与使用场景
  4. LeetCode 464. 我能赢吗(状态压缩+记忆化递归 / 博弈)
  5. Java中内存泄漏八种情况的总结
  6. 7-10 统计字符出现次数 (20 point(s))
  7. nginx平滑升级至最新版的nginx-1.9.5
  8. mac下加速下载百度云资源
  9. DHTMLX-Grid
  10. 中国银行 网银 控件造成 IE8 崩溃的解决办法
  11. 程序员自我介绍如何出彩?面试「万能模板」快拿走!
  12. 红红火火的丹麦造陆运动,和它恍恍惚惚的“硅谷梦”
  13. 【DT】大数据之数据采集
  14. 淘宝技术四面,本以为三面过了就完了,没想到还有个交叉面试。
  15. 店盈通:你肯定不知道,拼多多如何打造基础销量
  16. java把小写变大写_用java实现人民币小写变大写的方法
  17. meiyouyingjian------cnclsnvcnsdnvk
  18. linuxprobe第二弹
  19. 【办公类-16-01-01】“机动班下午代班的排班表”(python 排班表系列)
  20. 历数马化腾早年的赚钱经历。

热门文章

  1. VR技术在教育中的应用:如何帮助学生更好地理解和掌握知识
  2. ubuntu18.04虚拟机dhclient ens33无反应
  3. java 铺地板问题_客厅铺地板后悔了?看完这篇文章再说...
  4. Ubuntu Linux管理员ROOT账号登录
  5. 操作系统课堂同步练习选择题(第五章)题库信阳师范学院柳春华老师
  6. 编写一个程序,反映病人到医院看病,排队,看医生的情况。
  7. 抖查查参数解析 【2023/03/29】
  8. ehcache java 工具,Ehcache jar包下载
  9. 【博客545】从交换机视角看四种报文:广播、组播、未知单播、已知单播
  10. python 3des加密_使用Python进行3DES加密-pyDes