先nmap一下:
22端口的ssh服务被过滤了,80端口的http服务开放着,先从后者入手。通过浏览器访问网页,manage应该是用于登陆的:
display all records可以查看一些用户信息:
search模块应该是用于查询的,比如search一下之前的Mary:
那么这边有可能存在sql注入,使用burpsuite抓包验证一下:
可以爆出数据库名:
使用sqlmap进行数据库爆破,先把burpsuite截获的request报文拷贝到sqlmap.txt中:
sqlmap -r sqlmap.txt --dbs 爆出数据库:
之前我们已经手动注入获得数据库名为Staff,接下来爆出表格:sqlmap -r sqlmap.txt --tables -D "Staff"
我们感兴趣的是Users表,爆出Users表中的列名:sqlmap -r sqlmap.txt --columns -T "Users" -D "Staff"
最后爆出用户名和密码:
密码是hash值,直接在网站上破解:transorbital1
得到了管理员的用户名和密码:admin-transorbital1
除了Staff数据库以外,还有一个Users数据库,在其中的UserDetails表中可以找到很多用户名和密码,这儿的密码是明文,先将它们保存为username.txt和password.txt:
使用admin-transorbital1成功登陆网站,在网站中看到下面这句话:
应该是存在文件包含漏洞,使用wfuzz进行测试。首先获取登录的cookie:
测试文件包含使用的变量:wfuzz --hh 1341 -b 'PHPSESSID=ga0mhstkji5331odmqidv0s7du' -c -w common.txt http://192.168.190.157/manage.php?FUZZ=../../../../../../../etc/passwd
其中--hh 1341表示过滤1341字符长度的response,-b用于指定cookie。-w用于指定字典
获得文件包含指定的变量名为file,在浏览器中打开看看,可以看到用户名正是之前我们使用sql注入得到的用户名:
使用hydra进行暴力破解登录,提示我们连接被拒绝:
SSH服务是容易被攻击的,相应的就衍生出一系列保护SSH的方法:
1、端口变化,并加强配置
2、设置用户白名单
3、完全隐藏允许SSH访问的事实,要求根据特殊的“敲门”序列识别有效用户:https://zhuanlan.zhihu.com/p/43716885
第三种方法常使用的工具是knockd,它侦听以太网或其他可用接口上的所有流量,等待特殊序列的端口命中。通过查看目标服务器运行进程看看是否开启了knockd:
/proc/sched_debug中存放的是CPU的调度情况。
确定了目标服务器上运行了knockd以后,knockd的默认配置文件的位置在/etc/knockd.conf中:
可以看到knockd的序号是7469、8475、9842,安装knockd以后使用knock敲门后再用hydra进行爆破:
获得三对用户名和密码。
当然,还有其他的敲门方法:
for x in 7469 8475 9842;do nmap ‐Pn ‐‐max‐retries 0 ‐p $x 192.168.56.112;done for x in 7469 8475 9842 22 ;do nc 192.168.56.112 $x;done
只有登录进janitor里面才获得一些有效信息——一个隐藏文件夹下的密码,除此之外也没有找到提权的途径:
把这些密码加入之前的password.txt中,再hydra一下,发现获得了一对新的用户名和密码fredf-B4-Tru3-001:
使用这对用户名和密码登录ssh后,sudo -l一下发现可以不需要密码就执行root的test文件:
在其父目录中找到了test.py,应该是还没有编译的文件:
看来test的作用是把第一个文件的内容附加到第二个文件中。
使用openssl加密用户名-密码 kali-666
然后将
root1:$1$root1$XWBhesw1wJPdUdB54.rhA.:0:0::/root:/bin/bash
写入一个临时文件中,再使用test将这个临时文件附加在/etc/passwd中,最后su一下就可以了:
还有另外一种提权方式,主要基于下面的原则(https://blog.csdn.net/heli200482128/article/details/77833881):
当用户执行sudo时,系统会主动寻找/etc/sudoers文件,判断该用户是否有执行sudo的权限
–>确认用户具有可执行sudo的权限后,让用户输入用户自己的密码确认
–>若密码输入成功,则开始执行sudo后续的命令
那么何时可以不需要输入密码呢:
1.root执行sudo时不需要输入密码(eudoers文件中有配置root ALL=(ALL) ALL这样一条规则)
2.欲切换的身份与执行者的身份相同,不需要输入密码
3./etc/sudoers文件设置为允许用户在不输入该用户的密码的情况下使用所有命令
如设置允许wheel用户组中的用户在不输入该用户的密码的情况下使用所有命令
( %wheel ALL=(ALL) NOPASSWD: ALL)
那么我们就可以往/etc/sudoers里面添加内容,使得用户可以以root的权限去执行命令:
然后用joeyt用户登录,sudo su,然后输入joeyt的密码即可:
获得flag:
参考:
https://cloud.tencent.com/developer/article/1602518
https://my.oschina.net/u/4587410/blog/4943113