主机发现
端口扫描
漏洞挖掘
访问web,发现是一个登录表单
打开burpsuite,抓包分析,发现请求体是xml格式,立马想到XXE
发送到Repeater模块进行测试,发现email那个位置可以利用,因为他在页面上有回显
我在请求体的XML引用了外部实体,结果发现程序启用了外部实体,也就是说这里真有XXE漏洞
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ANY [
<!ENTITY f SYSTEM "/etc/passwd">
]>
<details><email>&f;</email><password>12</password></details>
查看/etc/passwd
文件,看有哪些可以登录的用户
将信息保存在一个文件中
筛选出可以登录的用户,david和root
这时候可以利用xxe枚举david家目录的文件
将刚刚的请求包发送的intruder模块,payload点为下图的地方
选择一个字典
这里推荐https://github.com/danielmiessler/SecLists
简直是字典天花板,什么类型的字典都有
这里跑完之后发现4个响应长度不一样的文件,说明xxe回显出内容了,其他长度都是无内容的
这里发现一个可疑文件.viminfo
发现一个密码,应该是david的登录密码
ssh david@192.168.31.57
成功登录到david
成功找出user flag
权限提升
按照国际惯例,先把kali上的linpeas脚本拉到靶机上运行
首先是这里,没有gcc,用不了DirtyPipe提权(我是不会弄)
第一和第三个exp在网上找资源也是要gcc编译,也无果
这里也没有特别可利用的SUID二进制文件
研究了一天,第二天直到我看到这里
os.py
–others有可写功能,属主是root,那我们可不可以写入os.system()
命令让root帮我们执行一些命令
有想法就去测试了
david@system:~$ vi /usr/lib/python3.9/os.py
我在文件的最底部插入了
import os
os.system('cp /usr/bin/find /tmp/find')
os.system('chmod u+s /tmp/find')
意思是复制系统自带的find命令到/tmp目录下,并加个SUID权限
SUID的功能:用户运行某程序时,如果此程序拥有SUID权限,那么程序运行为进程时,其进程的属主不是发起者,而是程序文件自己的属主
python3运行了一下,结果发现运行有错误,好像是权限不够
但是当我查看/tmp目录时,大吃一惊
这不是复制成功了吗??
不管那么多,先拿去测试一下
david@system:~$ /tmp/find /opt -exec whoami \;
whoami是root说明已经拿到root权限了
拿到一个交互的root
david@system:~$ /tmp/find /opt -exec /bin/bash -p \;
这里-p 是必加的,作用是以"suid"运行bash
如果不加-p
,可以发现是david
拿到root权限之后,就是愉快的找root flag啦~
知识回顾
- XXE
- 枚举家目录文件
- 注意others有可写功能,属主是root的文件
- find的命令执行和root权限的交互shell
PS:这篇Writeup是全网System靶机的第一篇Writeup,没想到我也有今日…