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

python中oxf2是什么_0x02-StartingPoint-Oopsie相关推荐

  1. python中oxf2是多少_python 函数基础2

    一.什么是命名关键字参数? 格式: 在*后面参数都是命名关键字参数. 特点:1.约束函数的调用者必须按照Kye=value的形式传值. 2,.约束函数的调用者必须用我们指定的Key名. def aut ...

  2. 如何优雅的在python中暂停死循环?

    死循环 有时候在工作中可能会遇到要一直执行某个功能的程序,这时候死循环就派上用途了,python中死循环的具体形式大致如下 while True:run_your_code() 结束死循环 通常我们结 ...

  3. 关于python中的dict和defaultdict

    dict 在Python中如果访问字典中不存在的键,会引发KeyError异常,所以一般当我们比如统计一句话的词频时候,我们总是使用这样的处理方式: strings = ('puppy', 'kitt ...

  4. python中的新式类与旧式类的一些基于descriptor的概念(上)

    python中基于descriptor的一些概念(上) 1. 前言 2. 新式类与经典类 2.1 内置的object对象 2.2 类的方法 2.2.1 静态方法 2.2.2 类方法 2.3 新式类(n ...

  5. Python中yield和yield from的用法

    yield 后面接的是 future 对象 调用方 委托生成器 yield from 直接给出循环后的结果 yield from 委托者和子生成器直接通信 yield from 直接处理stopIte ...

  6. Python中正则表达式用法 重点格式以这个为准_首看_各种问题

    20210811 https://www.jb51.net/article/101258.htm 一.惰性模式的概念: 此模式和贪婪模式恰好相反,它尽可能少的匹配字符以满足正则表达式即可,例如: va ...

  7. 逗号分隔的字符串转换为Python中的列表 split

    将逗号分隔的字符串转换为Python中的列表 给定一个字符串: 它是由逗号分隔的几个值的序列: mStr = '192.168.1.1,192.168.1.2,192.168.1.3' 如何将字符串转 ...

  8. [翻译]Python中yield的解释

    问题: Python中yield关键字的作用是什么?它做了什么? 例如,我想理解以下代码 def node._get_child_candidates(self, distance, min_dist ...

  9. 全面理解Python中的类型提示(Type Hints)

    众所周知,Python 是动态类型语言,运行时不需要指定变量类型.这一点是不会改变的,但是2015年9月创始人 Guido van Rossum 在 Python 3.5 引入了一个类型系统,允许开发 ...

最新文章

  1. JavaEE学习笔记之Servlet
  2. python将一组数分成每3个一组
  3. 区块链即数字生产关系
  4. HTML文件类型定义
  5. 递推(hdu2563)
  6. STL中 set 和 multiset
  7. pytorch torch.eye
  8. dex、apk完整性校验
  9. java 抽象类命名_Java命名规范
  10. 消息队列,问题与处理方案梳理
  11. Java:javax.mail通过163服务器发送邮件
  12. 计算机上平方米的单位,word怎么写平方米 word中平方米的单位怎么打
  13. 2007舜宇杯ACM程序设计浙江省赛结果
  14. mysql截取前几个字符串_mysql中截取指定字符前后的字符串
  15. 《汇编语言程序设计教程》人民邮电出版社第二版习题及参考答案
  16. 驱动开发笔记5—驱动对象、设备对象、IRP和派遣函数
  17. 直线检测——Radon变换/霍夫变换/基于快速傅里叶变换的直线检测
  18. 移动鼠标(动态)改变svg图标的颜色
  19. Spring基础之IOCAOPDI
  20. python 投屏_python脚本调用scrcpy进行多设备投屏

热门文章

  1. MySQL Workbench运行脚本
  2. sublime text插件emmet的用法教程
  3. pytorch实现Dropout与正则化防止过拟合
  4. python可迭代对象,迭代器,生成器
  5. 线性-LR-softmax傻傻分不清楚
  6. mysql 字符设置与修改
  7. oracle 并行执行脚本,批量执行Oracle脚本
  8. mysql先删后增并发时出现死锁_MySQL死锁案例分析一(先delete,再insert,导致死锁)...
  9. datagrip替换字_DataGrip使用进阶-导航及搜索(一)
  10. APK逆向之静态分析篇