记一次相对完整的渗透测试

  • 记一次相对完整的渗透测试已关闭评论
  • 11 views
  • A+

教育src 700rank了想着继续冲一波分,早日上核心,于是就有了下面这一次渗透测试的过程了。

开局一个登陆框,且存在密码找回功能。

wKg0C2B6dGAMQlcAABjaL0DK3g730.png

归属为某教育局

wKg0C2B6dyAa5ubAAAI4vfQnhc183.png

开启burp 抓取登陆包,发现用户密码并未加密 ,尝试爆破admin账户密码 跑了一下发现报如下错误,看来爆破这条路走不通了。

wKg0C2B6eOAJATbAAA3y4ofrTk266.png

于是fofa查询了一下ip,无旁站。继续肝下一个功能点,密码找回

wKg0C2B6mCAAIutAAAw7VOxGY8459.png

密码找回处

wKg0C2B6meALyI4AAFSuMMD9Zw687.png

可以看出这里肯定是会存在数据交互的,于是加个单引号测试一下sql,返回500

wKg0C2B6oaARUKZAAAKOwK9VDc641.png

两个单引号,返回正常,可以断定这里是肯定存在sql注入了,抓取包丢进sqlmap中跑一下。

wKg0C2B6o2Af4jAAAMmCZ4ZU691.png

得出如下payload

sqlmap resumed the following injection point(s) from stored session:


Parameter: #1* ((custom) POST)

Type: boolean-based blind

Title: AND boolean-based blind - WHERE or HAVING clause

Payload: login_name=admin' AND 5698=5698 AND 'yKnB'='yKnB

Vector: AND [INFERENCE]

Type: time-based blind

Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)

Payload: login_name=admin' AND (SELECT 3409 FROM (SELECT(SLEEP(5)))iWYb) AND 'ZAHe'='ZAHe

Vector: AND (SELECT [RANDNUM] FROM (SELECT(SLEEP([SLEEPTIME]-(IF([INFERENCE],0,[SLEEPTIME])))))[RANDSTR])

报错与延时注入,对于接下来的渗透意义不大,继续fuzz,尝试按照正常逻辑找回密码。

抓取返回包可以很明显的看到其中存在success参数其值为false,我们将其改为true,

wKg0C2B6paAZhwAAAtkC6HRGA342.png

页面显示如下,flag参数不为空,这是玩ctf呢,再次重放找回密码请求。

wKg0C2B6p6AEA4mAAAaPp62YWw800.png

发现,flag的值应该是在这设定哦,but并不知晓flag的值,无从下手手

wKg0C2B6qWAAzq0AABJJOIX84830.png

行吧转换思路,既然admin账户没有设置手机号,那我去跑一下账户,总有设置手机的账户,flag出现了,现在目前不知道有何作用。转手测试有手机号的账户。

wKg0C2B6q2AZjIIAADXcoyatCg480.png

随意输入验证码,点击下一步,大概是明白了,这个flag就相当于身份id。

wKg0C2B6raAC6CCAACXraYcv4018.png

我们继续抓取返回包,改success 参数为true,成功到达重置密码界面

wKg0C2B6yGAAiFsAABGcM0OH4754.png

设置了一下新密码,之后使用burp抓包,发现存在两个参数flag 与pwd flag参数之前在跑用户名的时候我们就已经获取到了,所以这里我单独拉出来,复制之前的flag。

wKg0C2B6yAKnAABDEOOPMM530.png

Send,返回结果为true表示成功更改

wKg0C2B6zmAWShGAADN4Fgi2ho811.png

成功登陆

wKg0C2B60SAb6XZAABuM9ubh9o421.png

既然成功登陆之后,就开始找上传点了

wKg0C2B626AfqagAABz1aZVi0497.png

Java站那就是jsp与jspx了,经过一番fuzz找到一处相册管理

wKg0C2B65uAWEbUAABGFS1CYM285.png

先上传了一张图片,获取到了上传路径。

wKg0C2B66SAMbEKAAAcmbxpTZE834.png

接着在构造jsp小马尝试上传,目标存在waf jsp无法上传,我是一点都不意外啊。

wKg0C2B66AFphpAADaCfmXdg688.png

看了看poc中可疑的参数点,这不就是我们需要的文件路径,以及文件名吗,我们可以尝试在此处更改文件后缀。

wKg0C2B67mAJ01RAAAQ5hz59Ko108.png

证实了猜想。

wKg0C2B68iACSwXAABKgctE58916.png

于是继续构造poc,成功上传,拼接之前得到的url,尝试访问

wKg0C2B69GACBEmAADbW3xHoNY766.png

发现直接打印了,看来是不解析。

wKg0C2B69qARCVJAABMESFUing429.png

可以很明显的看到这里是目录结构,所以尝试删除部分目录,重新上传

wKg0C2B6OAcVpoAAAOkAnEEZ4587.png

例如

wKg0C2B66AU7nsAAAPrPnTiuo974.png

发现成功跳过目录

wKg0C2B6WAcrnbAAAPIQlnxSA402.png

图片28.png
继续访问发现还是直接打印了,不慢慢fuzz跳目录了,我直接跳到他根目录下面。

wKg0C2B7AiAKVYDAAATWh1URJw862.png

分析一下、这是最开始上传到的目录并不解析,我们可以看到其中有四层目录

wKg0C2B7BCARWglAAAaOROnTU0039.png

删除其中如下两层目录后,还剩下

wKg0C2B7BiAHotAAAOkAnEEZ4880.png

图片32.png
这两层目录所以用 ../../来跳过这两层目录。

结合之前的路径,拼接访问。

wKg0C2B7CGAHOuaAAEsC82uRgI804.png

wKg0C2B7CqAQbgtAAAy6ZT2nxE325.png

未授权,点到为止,打包提交

wKg0C2B7DKAT8S3AAAwFNU0yYc220.png

带带我代码审计可好,好哥哥们。

本文涉及相关实验:SQL注入(本实验以PHP和mysql为环境,简单展示了SQL的发生原理和利用过程,通过显错注入和盲注的对比,更直观展现注入的不同利用方法。)

相关推荐: 堆的off-by-one利用

off-by-one介绍 off-by-one在缓冲区溢出中有时出现,CTF比赛中常出现在堆中,有时栈也会有off-by-one的漏洞,关于栈的off-by-one漏洞可以看一下https://www.anquanke.com/post/id/183873,作…