python中oxf2是什么_0x02-StartingPoint-Oopsie

Help Desk

经过第一篇文章,我思考了一下,已经存在太多的 walkthrough,不应该再去写一样的文章,而是应该着重写思路。接下来的文章,会着重写在什么情况下,应该做些什么,应该注意哪些信息,应该如何采取下一步操作。这样,才能让举一反三的过程更加顺利,和大家一起成长的速度才能更快。

HTB-Oopsie

这是一个 Web Application and Privilege Escalation 的练习。

Nmap

第一步不变, nmap 一下。

这些天又读了很多文章,除了 nmap,还有很多优秀的扫描工具,如 masscan, unicorn scan, 值得一看

Nmap 结果:

Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-17 04:51 EDT

Nmap scan report for 10.10.10.28 (10.10.10.28)

Host is up (0.23s latency).

PORT STATE SERVICE VERSION

22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)

| ssh-hostkey:

| 2048 61:e4:3f:d4:1e:e2:b2:f1:0d:3c:ed:36:28:36:67:c7 (RSA)

| 256 24:1d:a4:17:d4:e3:2a:9c:90:5c:30:58:8f:60:77:8d (ECDSA)

|_ 256 78:03:0e:b4:a1:af:e5:c2:f9:8d:29:05:3e:29:c9:f2 (ED25519)

80/tcp open http Apache httpd 2.4.29 ((Ubuntu))

|_http-server-header: Apache/2.4.29 (Ubuntu)

|_http-title: Welcome

Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/

.

Nmap done: 1 IP address (1 host up) scanned in 16.61 seconds

22 和80 开放.

SSH 服务还是挺可靠的,意思就是很难有可发掘的漏洞,要么就去爆破登录密码,但是基本很难成功。

目标肯定要落在 80 端口的网站上面。

当遇到一个网站,该做些什么?

查看 /robots.txt是否存在,如果存在,网站的部分目录结构一目了然。

一定要看网页源码,在 firefox 中可以按 CTRL + U。寻找任何可可能泄露信息的地方,注释,以及 js代码。

着重浏览一下 js代码,他会告诉你这个网页想要做什么,这些很可能是线索。

如果源码中没有有用的信息,该去点点网页上的按钮了,或者改变一下地址栏,触发一些报错,看网站是否有合规的错误处理,如果没有,那么网站后端的技术栈信息,很可能就泄露了。

最后当然还要读一下网页上的文字,很可能发现一些线索,可以让我们能进行到下一步。

扩展阅读

我列举了一些在 Web App Pentest 中需要注意的事情,下面这篇文章讲解更加详细,值得一看。

在这个练习中,通过做上述的第四步,就可以发现,网页声称需要登陆来获取相关服务。

在这里插入图片描述

线索:网页说需要登录,但是找不到任何登录入口

思路:登录入口隐藏在网站某个目录,没有公开

操作:使用诸如 dirbuster,gobuster,dirb,Burp Suite这些 WebApp分析爆破工具,找到隐藏的网站目录。这里推荐 dirbuster,运行较快,也较精准,可以递归搜索,能生成报告,并且 GUI 支持直接在浏览器打开目标链接

在这里插入图片描述

在这里插入图片描述

很快就找到了 /uploads,/cdn-cgi/login,这些文件夹,相信这个登录页面肯定就在 /cdn-cgi/login 这个目录里。

在这里插入图片描述

在 Results 一栏中可以看到精确的路径以及状态码,这个 index.php,是可以访问的。

直接右键到浏览器打开。

在这里插入图片描述

到了这里,又是一个页面,我又重复了上面5个操作,但是什么信息都没找到。结果这个练习和第一个是相关联的,第一个练习中获取的 admin 的密码,在这里依旧可以用。

登录信息是,admin,MEGACORP_4dm1n!!。

在这里插入图片描述

源码没什么,点上面的按钮,页面上也没什么内容,点上面的按钮,到 Uploads 的时候,被告知权限不够。

在这里插入图片描述

我是 Admin,还有个 super admin。

线索:网站有 super admin 身份,现有的账号登录上去是 admin

思路:表单登录,需要检查一下登录请求,找到能判断身份的参数

操作:Burp Suie,截取请求,先找到判断身份的参数

账户信息是在 Account 一栏里面,点击一下,截取请求。

在这里插入图片描述

请求里面有一个参数 id,并且带上了 cookie,网页给我们返回了当前用户的 Access ID 和 Name。

在这里插入图片描述

在这里插入图片描述

刷新一下 Uploads 页面,请求的时候没有参数 id,而是带上了标识用户身份的 cookie 信息。

线索:服务端判断身份的参数是 id,服务端根据 id 返回对应的 user 和 role,存入 cookie;当要访问 Uploads 页面的时候,带上这个 cookie,就能判断是否是 super admin

思路:如果能不断尝不同的 id 值,是不是可以试出 super admin 的 id

操作:Burp Suite Intruder 不断使用顺序 id 值 (1-500)去请求,看返回结果是否会有 super admin

小贴士:

Intruder 工作过程中,点击 Length 将返回结果长度按降序排列,如果有明显大于其他长度的结果,可能就已经命中目标

在这里插入图片描述

成功获取到 super admin 的 Access ID。

线索:获得 super admin 的 Access ID

思路:使用该 Access ID 访问 Uploads 页面

操作:截取对于 Uploads 目录的访问请求,将请求中的 user 改为 86575

在这里插入图片描述

在这里插入图片描述

成功进入 Uploads 页面。

线索:因为是 super admin,可以上传任意文件(应该不会有 super super admin了)

思路:获取目标机器控制的方式,第一步是设法得到一个 shell;网站后端是 php,可以上传一个包含 php reverse shell 的文件,直接在浏览器访问,代码就可以成功被执行;当然要注意,要考虑目标机器有 AV 的可能,代码中不要出现类似 pwn 这样的敏感词,会被系统拦截

操作:上传 Kali 自带的 php reverse shell,修改文件名,然后在浏览器访问执行

扩展阅读

从哪里找 php reverse shell?

/usr/share/webshells/php/php-reverse-shell.php

在这里插入图片描述

修改 IP 和 PORT,具体操作见视频。

上传的时候,同样要截取请求,用 super admin 身份上传才能成功。

在这里插入图片描述

线索:reverse shell 文件已经上传,需要找到路径执行

思路:记得用 dirbuster 搜索登录入口的时候,有一个 /uploads 目录,上传的文件应该都存放在这里

操作:本地侦听代码中设定的端口号,然后浏览器访问 10.10.10.28/uploads/image-processing.php

在这里插入图片描述

当获得了一个 shell,进入了目标机器,该做些什么?

查看用户信息 - id

查看当前目录里的文件 - ls -al

注意敏感文件和目录 - .bashrc .ssh .config .cache

查看用户当前 shell - echo $SHELL 如果没有输出,需要生成一个可交互 shell

查看 bash 是否存在 - which bash

查看 python 是否存在 - which python which python3

生成交互 shell - SHELL=/bin/bash script -q /dev/null python3 -c 'import pty;pty.spawn("/bin/bash")'

查看网站根目录,查找配置文件包含的敏感信息 - /var/www/html

查看临时文件夹 - /tmp

如果有用户的登录密码,列举出用户可以使用 sudo 执行的命令 - sudo -l

扩展阅读

这篇文章将了 script 命令的作用,看完就能理解为什么用它生成交互 shell

Script Command

在这里插入图片描述

线索:在网站目录下找到了另一个登录信息

思路:因为是 mysql_conn,可以登录数数据库,但是登录了数据库没什么可以干的,破坏数据不能达到控制目标的目的;还可以试一下用 ssh 登录

操作:用登录信息尝试 ssh 到服务器

在这里插入图片描述

成功登录。

上面提到了进入了目标机器之后要做的事情,这里依旧要做。

在这里插入图片描述

线索:id 命令之后发现用户在一个特别的组里 bugtracker

思路:添加用户到某个特定的组,是为了让用户能有执行某些命令的权限,通常这些程序或这命令的名字,会跟组名相同(例如virtualbox 会将用户添加到 virtualbox 组中)

查找一下系统中跟组名相同的文件

在这里插入图片描述

当找到一个敏感文件,该做些什么?

查看文件详细信息,设置了 setuid/setgui 权限并且拥有者是 root 是最希望看到的结果 - ls -al

如果是可执行文件,运行,并尝试多种输入,尽可能触发错误,能收集更多信息

在这里插入图片描述

线索:程序设置了 setuid/setguid 的特殊权限

思路:如果程序可能被串改,运行自定义的脚本,就可以提权得到 root shell

操作:先运行一下程序,观察程序行为

扩展阅读

在这里插入图片描述

线索:触发错误之后看到程序其实是调用系统 cat 命令,到根目录下读取相应文件

思路:构造一个自定义的 cat 可执行文件,内容就是生成一个 bash shell,然后想办法让 bugtracker 调用自定义的 cat 即可

操作:自定义一个 cat 可执行文件,将其所在目录添加到 $PATH 环境变量,然后再次执行 bugtracker

在这里插入图片描述

I'm in :D

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

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

相关文章

java jlist checkbox_JCheckBox检查Java中的JList中的切换逻辑时遇到问题

如果我理解这个问题......import java.awt.*;import java.awt.event.*;import javax.swing.*;public class JListToggleLogicTest {private final ClearSelectionListener listener new ClearSelectionListener();public JComponent makeUI() {JList list new JList(makeMode…

java yaml dump方法_yamlyaml.load与yaml.dump方法

yaml.load与yaml.dump方法该模块提供了一些方法,不过常用的方法只有两个yaml.load和yaml.dump ,以下是一个版本相关的yaml 格式文件[root361way yaml]# cat tree.yamltreeroot:branch1:name: Node 1branch1-1:name: Node 1-1branch2:name: Node 2branch2…

vba中有多线程吗_VBA会被Python代替吗?

先说答案:不会被替代这里引用轮子哥的话说:微软只会开发更多的增强型插件来慢慢淡化VBA,但是不会用其他语言取代VBA。早在17年底,就有风声说Python要取代VBA,成为Excel官方脚本语言。我认真翻看了下好多篇文章&#xf…

java 编码实现内存拷贝_java提高篇(六)-----使用序列化实现对象的拷贝

我们知道在Java中存在这个接口Cloneable,实现该接口的类都会具备被拷贝的能力,同时拷贝是在内存中进行,在性能方面比我们直接通过new生成对象来的快,特别是在大对象的生成上,使得性能的提升非常明显。然而我们知道拷贝…

统计一个整数的所有因子的个数_【题解循环嵌套】1095:数1的个数

1095:数1的个数时间限制: 1000 ms 内存限制: 65536 KB【题目描述】给定一个十进制正整数n(1≤n≤10000),写下从1到n的所有整数,然后数一下其中出现的数字“1”的个数。例如当n2时,写下1,2。这样只出现了1个“1”;当…

运行java是提示 选择未包含 main 类型 如何解决_RuoYi 若依 代码生成器使用教程...

你好! 若是你想学习如何使用RuoYi 若依 代码生成器, 能够仔细阅读这篇文章,了解一下RuoYi 若依 代码生成器的基本知识。java新建数据表(注意字段必定要写注释)USE ry;web/*Table structure for table sys_zyq */sqlDROP TABLE IF EXISTS sys_zyq;数据库C…

vb.net 功能f8键事件_憋了三年,史上最全的 F1~F12 键用法整理出来了!

F1~F12 键在Excel表格中的用法,小编很早就想写篇教程整理一下。可三年过去了还没整理出来,原因有很多,总结成一个字:懒!这么,终于整理出来了!提示:有的电脑启用了FN键,如…

java递归分苹果_递归较难题——分苹果问题

第四届程序设计大赛 苹果Time Limit:1000MS Memory Limit:65536KTotal Submit:90 Accepted:48Description把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1&#…

usb hid 调试软件_开源USB免驱固件升级软件分享

跳兔科技开源软件分享,免驱的USB固件升级软件,给您的产品提供无限的活力。加快产品上市速度。相信做MCU开发的人都免不了要做boot升级功能,产品投入使用中,如果再使用link进行固件更新的话就比较麻烦,那么拥有一个优秀…

java地址自动拆分_java – Hibernate:每个月自动拆分表

我正在研究一个带有Postgresql和Hibernate的Spring-MVC应用程序,其中我有几个表,行数超过10万(10万).这些表,我95%的时间只访问最新的数据,并筛选所有这些行是耗时的.很多时候查询规划器甚至没有使用索引(原因我不知道).然后我想到每周拆分数据库表,所以我们可以先访…

yolo算法_不到2MB,超轻YOLO算法!准确率接近YOLOv3,速度快上45%

点击上方↑↑↑“OpenCV学堂”关注我来源:公众号 量子位 授权最轻的YOLO算法出来了!这是个模型非常小、号称目前最快的YOLO算法——大小只有1.3MB,单核每秒148帧,移动设备上也能轻易部署。而且,这个YOLO-Fastest算法满…

mysql报错last packet_mysql The last packet successfully received

mysql服务器最近老是报错,内容如下:The last packet successfully received from the server was 65,502,275 milliseconds ago. The last packet sent successfully to the server was 65,502,276 milliseconds ago. is longer than the server configu…

http请求丢部分数据_温故知新,HTTP/2

去年年底,据国际互联网工程任务组( IETF )消息,HTTP-over-QUIC 实验性协议将被重命名为 HTTP/3,即有望成为 HTTP 协议的第三个正式版本,也就是说HTTP/3可能要来了。 该消息是如此的惹人注目,是因为HTTP是我们身边的协议…

poi java 其他_让POI架起Java与Office之间的桥梁一

本文将阐述如何用POI来读取/写入完整的Excel文件。作者:中国IT实验室 来源:中国IT实验室 2007年8月31日本文将阐述如何用POI来读取/写入完整的Excel文件。约定:POI项目2.0版现在已经接近正式发行阶段,开发进度迅速,不断…

vue ui框架_「webAPP」记录几款比较好用的vue 移动端的ui框架

有时在做项目时,不同场景的项目既要有网站,又要有手机端,为了快速开发,如果功能简单,要求不高的话,我们一般会用H5进行移动端的适配。如果采用纯html进行书写手机端的样式,往往UI的体验感非常差…

java定义基础变量语句_编程语言第一:JAVA语言基础,变量

在前面的几篇文章中我们介绍了Java的运行环境,以及Eclipse IDE的安装与使用。从今天开始我们的文章开始介绍Java开发语言的基础知识。今天主要介绍Java变量。一、什么是变量变量是指代在内存中开辟的存储空间,用于存放运算过程中需要用到的数据。例&…

python keras_深度学习:基于Keras的Python实践

部分初识1初识深度学习/21.1Python的深度学习/21.2软件环境和基本要求/31.2.1Python和SciPy/31.2.2机器学习/31.2.3深度学习/41.3阅读本书的收获/41.4本书说明/41.5本书中的代码/52深度学习生态圈/62.1CNTK/62.1.1安装CNTK/72.1.2CNTK的简单例子/82.2TensorFlow/8部分初识1初识…

php 模拟并发请求_PHP模拟并发请求

原理&#xff1a;使用curl_init()创建多个请求实例&#xff0c;再使用curl_multi_init()批量执行创建的多个请求实例。文件1&#xff1a;curl.php<?php $threads500;//并发请求次数$urlhttp://blog.cn/index.php?;//请求的url//创建一个未定义的curl句柄数组$charray();//…

spring.profiles.active配置了没生效_微服务架构之「 配置中心 」

在微服务架构的系列文章中&#xff0c;前面已经通过文章《微服务架构之「服务网关 」》介绍过了在微服务中服务网关的原理和应用&#xff0c;今天这篇文章我们继续来聊一聊微服务中另外一个重要模块&#xff1a;「 配置中心 」。后面还会继续介绍 服务框架、服务监控、服务治理…

php+正则匹配qq,正则表达式对qq号进行验证的实例

这篇文章主要介绍了正则表达式对qq号码进行校验的相关知识&#xff0c;非常不错&#xff0c;具有参考借鉴价值&#xff0c;需要的的朋友参考下吧废话不多说了&#xff0c;直接给大家贴代码了&#xff0c;具体代码如下所示&#xff1a;package 正则表达式;/*对QQ号码进行校验要求…