本文介绍了对vulnhub-dc9靶场进行测试的过程,主要内容为nmap信息收集、Web信息收集,利用SQL注入漏洞和文件包含漏洞利用获取到SSH用户名和密码,在SSH登录后通过sudo进行提权,通过测试总结发现了新攻击思路,在文中记录下来。
端口服务信息收集:
1.先将靶机进行网络配置,使得攻击机在同一网段,确保攻击机和靶机之间的正常通信。通过攻击机(kali)使用nmap扫描网段内存活主机,确定靶机ip为192.168.137.134。
扫描命令:
nmap
-sP
192.168.137.1
/
24
2.在确定好ip后使用nmap扫描靶机端口以及开放的服务,发现开放了22端口(过滤状态)和80端口,通过过滤状态猜测目标靶场开启了防火墙对ssh服务开启了防护,Apache httpd版本2.4.38。
扫描命令:
namp
-sC
-sV
192
.168
.137
.134
web信息收集:
访问靶机网站,发现有搜索页面search.php。查看表单信息,提交页面results.php,参数名为search。
|
SQL注入漏洞发现利用:
1.因为是搜索页面的表单,首先想到了可能会与数据库进行交互,测试results.php是否存在sql注入漏洞,发现存在union注入和时间盲注,直接使用使用sqlmap去跑库名。发现存在Staff和 users两个数据库。
Sqlmap获取数据库名命令:
sqlmap
-u
192.168.137.134
/results.php -data search=
1
–dbs
*左右滑动查看更多
2.攻击机使用sqlmap查看Staff库的所有表。
sqlmap
-u
192.168.137.134
/results.php -data search=
1
-D Staff –tables
*左右滑动查看更多
3.攻击机使用sqlmap跑Users表的数据内容,发现存在用户名和密码,密码字段猜测使用MD5进行加密,使用sqlmap自带的功能去爆破密码。也可以使用一些在线网站进行解密,最后得到账户:admin/transorbital1。
sqlmap
-u
192.168.137.134
/results.php -data search=
1
-D Staff -T Users –dump
*左右滑动查看更多
4.接着在攻击机使用sqlmap跑第二个数据库users库的表名。
sqlmap命令如下:sqlmap
-u
192.168.137.134
/results.php -data search=
1
-D users –tables
*左右滑动查看更多
5.攻击机使用sqlmap跑UserDetails表的数据内容,得到多个账户。
命令如下:sqlmap
-u
192.168.137.134
/results.php -data search=
1
-D users -T UserDetails –dump
*左右滑动查看更多
文件包含漏洞发现利用:
1.返回Web界面,点击页面的Manager标签。
页面路径为:
http:
/
/192.168.137.134/manager
.php
发现存在登录功能,使用管理员账号登录即Users表爆破出的密码登录admin用户,可成功登录后台。
2.在登录成功后没有发现后台没有什么功能点,但是下方有一串英文File does not exist提示文件不存在,由于页面是从http://192.168.137.134/manager.php登录后进行跳转然后才出现File does not exist,这里可以猜测在文件manager.php 可能存在隐藏的参数,用于指向文件。
由于我们没有加参数所以显示文件不存在,进一步猜测可能存在文件包含漏洞或者是文件上传、下载漏洞。
3.由于没有参数,需要进行参数的爆破,这里使用wfuzz工具进行猜解manager.php隐藏的参数,在参数后面passwd 文件的路径,文件的路径层数也是需要进行猜测,因为一般网站的根目录在(/var/www/html)加上Web系统目录,可能会有四层目录。
由于是登录后才出现的File does not exist,所有在使用wfuzz时需要指定cookie,最后得出文件包含参数为file。
wfuzz下载和使用:
https:
//github.com/xmendez/wfuzz
Kail自带字典路径:
/usr/share/wfuzz/wordlist/general/common.txt
wfuzz 命令:
wfuzz -b ‘cookie值’ –hw
100
-w 参数字典
http:
//192.168.137.134/manage.php?FUZZ=../../../../etc/passwd http://192.168.137.134/manage.php?FUZZ=../../../../etc/passwd
*左右滑动查看更多
4.读取/etc/passwd文件,发现文件中用户与前面通过注入得到的users数据库中的UserDetails表中的有相同的用户名,结合开放ssh端口,猜测可能为ssh登录的用户名和密码。
SSH突破限制登录:
1.攻击机使用查表获得的用户名、密码作为爆破字典,使用Hydra尝试爆破ssh服务,发现连接被拒绝。
这里思考后想到信息收集的时候扫描靶机的22端口状态为(filtered)即被过滤状态(原因是nmap 直接发送的SYN 探测报文,都没有收到应答),很有可能开启了防火墙规则。通过搜索关于设置隐藏22端口的操作,找到了一个关于knockd的服务设置可以实现。
参考:
https:
/
/blog.csdn.net/nzjdsds
/article/details
/112476120
*左右滑动查看更多
这里简单介绍一下knockd:
knockd服务翻译过来是端口敲门服务,该服务通过动态的添加iptables(防火墙)规则来隐藏系统开启的服务,使用自定义的一系列序列号来“敲门”(这里的序列号是由不同的端口号组成),只有依次访问序列号中设定的端口,才能触发相应的规则,执行命令使系统开启需要访问的服务端口。在不使用时,可以使用自定义的序列号来进行“关门”操作,将端口关闭。
利用文件包含漏洞发现确实存在knockd服务配置文件/etc/knockd.conf,成功读取发现了配置文件中开启SSH端口的端口序列号。
|
在确定好序列号后,在攻击机依次访问这三个端口进行“敲门”操作,从而触发knockd服务开启ssh端口的规则,即可访问靶机的22端口。使用nc命令如下,也可以用nmap等端口探测或者连接工具。依次访问三个端口就可以了。
for
x
in
7469 8475 9842 22 ;
do
nc IP
$x
;
done
再次使用Hydra对ssh服务进行爆破,获得了3个账户。
登录刚才获得的3个账号,发现janitor用户多一个隐藏目录.secrets-for-putin。
进入.secrets-for-putin目录查看,发现了一些password。
将新发现的密码补充进数据库找到的密码字典再次爆破,发现多了个可用账户fredf。
SSH登录fredf账号,因为后续需要进行权限提升,sudo提权Linux提权的一种方式,使用sudo -l(列出当前用户可以利用sudo执行哪些命令)查看能以root权限执行的程序,并且不需要root的密码,测试后发现了可执行程序test。
执行test程序,发现提示test.py读取追加,说明。使用find命令查找test.py文件并忽略错误提示,查看test.py内容是读取参数1文件的内容追加到参数2文件中。
通过分析可执行文件,可执行文件可以往文件了追加内容,那我们可以联想到可以往/etc/passwd文件中写入登录的账户信息。从而创建新的用户。
在kali上的root终端使用openssl生成一个一个hash值,伪造一个root权限的用户hack,密码为123456。
登录fredf账号将生成的hash值上传到文件/tmp/hack,执行test程序将 /tmp/hack 作为第一个参数 /etc/passwd 作为第二个参数,文件hack的内容追加给/etc/passwd。
Openssl passwd -1 -salt hack 123456
sudo /opt/devstuff/dist/
test
/
test
/tmp/hack /etc/passwd
*左右滑动查看更多
su hack,切换为我们创建用户,成功提权,获得flag。
一、SQL注入漏洞的修复建议:
1. 使用参数化查询或预编译语句:使用参数化查询可以防止将用户输入的数据与SQL查询语句混合,从而避免注入攻击。
2. 输入验证和过滤:对于所有用户输入的数据,应该进行验证和过滤掉其他字符,以确保只加装waf等安全防护设备。
二、文件包含漏洞修复建议:
1. 对于所有用户提供的输入,包括文件名和路径,都应进行验证和过滤。确保只接受预期的字符和格式,并且不允许包含任何敏感的特殊字符或目录遍历符号。
2. 使用白名单机制来限制用户可以包含的文件或目录。定义一个可信的文件或目录列表,并仅允许应用程序从该列表中动态包含文件。
3. 尽量避免将用户提供的输入直接用作文件包含的路径或文件名。如果有必要进行动态包含,可以使用固定的文件名,并通过其他方式(如查询数据库)将用户输入映射到合适的文件路径。
4. 强化文件权限,确保应用程序和服务器上的文件和目录权限设置正确。限制对包含文件的读取和执行权限,以防止攻击者通过包含恶意文件进行代码执行。
三、权限提升漏洞修复建议:
1. 采取最小化权限原则,将普通用户的权限设置为最低权限,只提供执行其任务所需的权限,而不是使用管理员权限运行。
2. 限制文件和目录权限,确保系统中的敏感文件和目录仅对特定的管理员用户或服务账户可写,其他用户只能读取或执行必要的文件。
通过这次打靶场学习和巩固到的知识:
1. 在nmap信息收集扫描端口时,需要注意端口的开放状态。
2. sql注入漏洞的发现和利用。
3. 通过参数Fuzz隐藏的参数到发现文件包含漏洞并进行利用。
4. knock:端口敲门服务的利用,通过依次访问目标端口,触发knock服务的规则,开启相应的端口,从而进一步的利用。
5. 通过Sudo -l查看是否有高权限可执行文件,并分析进一步利用进行提权等。
原文始发于微信公众号(安恒信息安全服务):九维团队-红队(突破)| vulnhub-dc9靶场渗透
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论