写在前面
靶场链接:
https://www.vulnhub.com/entry/dc-9,412/
DC系列,有些知识点在DC:1
中提到,可以翻阅
DC:1
恭喜你,DC_9是DC系列的最后一个靶场,你已经刷完DC系列了,推荐你看最后的DC篇总结。
信息收集
这里省略了网段扫描,直接对目标进行端口扫描。
ip: 192.168.101.39
port: 80
进去看看,一开始就提示从上面功能栏中选择一栏,总共四栏。
对应路径分别为:
/index.php
/display.php
/search.php
/manage.php
如下四图
寻找突破点
前两个就是信息的展示,后两个有输入点,抓包查看这两个点。
登录点。输入是明文传输,无验证码,有爆破的机会,同时前面页面有员工信息泄露,可以制作社工字典针对型爆破。不过爆破是没有办法的时候再来尝试了,先看看另一个点
简单的sql
测试,成功了,这里显然是突破点。
继续尝试一些其他语句。
探测列数
确定回显位
SQL注入
已经非常明显了,使用工具,就不手工攻击了。记得将数据包存入一个文本文件,这里就是存为hack.txt
,加上-r
参数即可
sqlmap -r hack.txt
继续查询
sqlmap -r hack.txt --current-db
查到目标点
sqlmap -r hack.txt -D Staff -T Users -dump
随便找一个破解试试
得到账号密码。
admin
transorbital1
登录成功,新开了两个栏,点进去没什么东西,下方提示
file does not exist
如果看过前面的dc
系列,在dc5
中也有爆破本地文件包含参数进行攻击的思路。需要一些经验和猜测吧
文件包含
推断可能为本地包含点,爆破参数名和包含文件。
找到
以file
为参数,简单做目录穿越就可以攻击了
网页表现
尝试查看其他敏感文件。注意这里payload
比一般的往上多了一级,因为探测的时候就需要往上一级才是当前网页(index.php
)加载路径
?file=../../../../etc/passwd
其实到这里,你是否觉得和dc5
非常相似,也是本地文件包含,那么我用一样的思路不就行了么?
日志写马,是本地文件包含的惯用手法,只是现在是apache
,之前是nginx
查看日志路径(可能被修改过)
?file=../../../../etc/apache2/apache2.conf
从源代码看看,是在一个变量后面。
继续跟进
/etc/apache2/envvars
查询access.log
,error.log
无果。
应该是关了
隐藏SSH
似乎到这里思路就断了。这个靶机感觉怪怪的,因为以往的靶机至少都会开放80
,22
端口,但是这个靶机扫描结果没有22
端口,工作者难以对目标网站进行维护。
这里就是隐藏SSH
技术。先说说ssh
安全,这里先简单介绍一些ssh
防御方法
这里暂不讨论ssh
本身缺陷的防御(及时更新,及时打补丁…),仅从能动性防御角度触发
定期修改ssh密码,或使用证书登录
修改ssh端口
修改ssh配置,设置登录时长,错误尝试次数
上述的方法,其实都有绕过和攻击的空间,较为安全的就是knockd
工具,它可以和防火墙联合工作,只有正确“敲门”,去连接相应的端口序列,才能打开22
端口
这样做,有类似一次一密的保护,同时隐藏了ssh
的指纹。
knockd
具体工作方式:https://blog.youkuaiyun.com/nzjdsds/article/details/112476120
首先查询当前任务调度:
从源码看再ctrl+f
一下
查看knockd的配置文件 /etc/knockd.conf
查看源代码
得到敲门序列
7469,8475,9842
这里建议下载knockd
工具,直接使用自带的knock
,一键敲门
knock 192.168.101.39 7469:tcp 8475:tcp 9842:tcp
使用nmap
也可以:
for x in 7469,8475,9842; do nmap -Pn --max-retries 0 -p $x 192.168.101.39; done
敲门后再次扫描,找到ssh
端口
进入ssh
,利用前面的sql
点,查出所有敏感数据
sqlmap -r hack.txt -D users -T UserDetails -dump
将上述提到的密码和用户名制作为字典,使用hydra
破解即可
得到三个用户密码,令人激动,上去看看。
这里其实设计的不是很好,三个用户基本一样,suid
文件无差异,就藏了一个线索在其中一个用户中。就只能慢慢找。
suid
无差异
查大家的文件
终于在janitor
用户下,找到一个隐藏密码本
重新制为字典,再次爆破
出现两个用户,再查
有一个test
文件,运行时提示有test.py
find
一下 test.py
find / -name test.py -print 2>/dev/null
代码审计一下
就是一个追加功能,先打开第一参数,再追加第二参数
权限提升
追加内容的攻击,我们在dc4
中有遇到过,同样是追加 /etc/passwd
文件
这次写个密码,存至tmp
目录下
echo 'sayo:$1$123456$F7kNUZuCbTjf7qCbQhTB21:0:0:root:/root:/bin/bash' > /tmp/hack
sudo ./test /tmp/hack /etc/passwd
登录
得到flag