本帖最后由 jiangmingzi 于 2024-3-25 00:13 编辑
迪哥讲事 2024-03-01 21:39 江苏
前言
目标存在注册功能,注册账号后发现普通用户,后台存在文件上传功能.网站架构为apache+php,操作系统为window server
尝试上传
f12全局搜索png看了下没有前端效验的js的代码,是服务端效验。[color=rgba(0, 0, 0, 0.9)] 首先上传正常jpg图片观察一下
[color=rgba(0, 0, 0, 0.9)] 右键新链接打开
[color=rgba(0, 0, 0, 0.9)] 有暴露上传路径。然后看一下正常phpinfo.php上传是个什么情况
[color=rgba(0, 0, 0, 0.9)] 0x01判断黑白名单及校验字段
将png格式文件后缀更改为phpabcde
[color=rgba(0, 0, 0, 0.9)] [color=rgba(0, 0, 0, 0.9)] 还是可以正常显示,那应该是黑名单,并且后缀错误也能正常显示,那么可能文件头也进行了校验。接下来试一下正常的php文件改后缀看一下是否能上传成功:
[color=rgba(0, 0, 0, 0.9)] [color=rgba(0, 0, 0, 0.9)] 证明校验了文件头。继续测一下在文件头是png情况下测试php文件是否能上传:
[color=rgba(0, 0, 0, 0.9)] 显示也是只能上传图片文件,证明也后缀名也进行了校验
[color=rgba(0, 0, 0, 0.9)] 通过上面php和png文件的文件头和文件后缀两两组合发包测试可以判断出是文件名后缀黑名单+文件 头的校验方式。那么绕过思路如下: 利用制作图片马的方式在图片中插入php代码绕过文件头效验,同时在寻找在黑名单之外的后缀名看是否能解析成php,如果实在没有那就只能再挖个文件包含漏洞包含图片马了。
0x02黑名单绕过
制作图片马:copy small.jpg /b +phpinfo.php /a phpinfo.jpg 这里提醒一下,这里的jpg越小越好,不然有时候在解析php代码时,图片有一些脏字符会导致php代码解析失败。这里我随便截了一个很小的图进行图片马制作,大小只有700字节
[color=rgba(0, 0, 0, 0.9)] 在本地测试,后缀改为php可以解析:
[color=rgba(0, 0, 0, 0.9)] 先把常用的黑名单绕过方式拉出来:1.大小写 ----->.Php等,上传失败2.前后加空格,后面加点-----> 空格.php、.php空格 、.php.,上传失败3.代替扩展名-----> .php, .php2, .php3, .php4, .php5, .php6, .php7, .phps, .phps, .pht, .phtm, .phtml, .shtml, .htaccess, .phar。测到phps的时候有变化,可以上传,但解析如下:
[color=rgba(0, 0, 0, 0.9)] [color=rgba(0, 0, 0, 0.9)] 没有解析成功。
成功
常规的后缀名都尝试了,没有成功解析.抓耳挠腮的时候,突然想起来目标是windows.可以尝试使用windows特性来尝试绕过.
给的靶标已经被打过很多次,常见的漏洞已经没有了,
[color=rgba(0, 0, 0, 0.9)] [color=rgba(0, 0, 0, 0.9)] 成功解析,不过无法执行命令,又进行新的尝试.
0x03绕过defender进程链查杀webshell
目标为window server2016,大概率是有defender的,defender会对webshell的进程链进行检查, webshell在windows下一般是在w3wp.exe下起的,属于灰进程,在灰进程下webshell执行cmd命令可 能会被杀,例如蚁剑的混淆过的一句话木马,静态就算过了但是执行命令时会被查杀:
[color=rgba(0, 0, 0, 0.9)] [color=rgba(0, 0, 0, 0.9)]
准备一个冰蝎的免杀马子,在本地VMware的window server 2016环境下测试下测试通过之后静态动态 测试免杀测试后(这里有坑,后续再说),制作成图片马上传至目标:
[color=rgba(0, 0, 0, 0.9)] 连接上之后发现文件上传下载删除可用,但是命令执行无回显。
[color=rgba(0, 0, 0, 0.9)]
猜测1.权限不够,默认cmd没有拉起来
尝试自己上传cmd.exe用自己的exe执行,依然不行
[color=rgba(0, 0, 0, 0.9)] 猜测2.函数被禁用
看了下phpinfo的disable_fuction,没有被禁用。
[color=rgba(0, 0, 0, 0.9)]
猜测3.webshell工具问题
换了个哥斯拉的免杀马,一样只能文件上传下载,不可以命令执行。
[color=rgba(0, 0, 0, 0.9)]
猜测4.更换系统函数
利用哥斯拉的php代码执行模块,把php常用的命令执行函数都试一遍,还是没有回显。
[color=rgba(0, 0, 0, 0.9)]
进程链查杀绕过
由于之前本地测试环境冰蝎和哥斯拉的马执行命令都没问题,所以没往这方面想,但是上面的测试特征都说明很可能是webshell工具进程链被杀了。尝试使用大马在web层面执行命令:
[color=rgba(0, 0, 0, 0.9)] 执行tasklist成功。这里也有坑,要通过webshell管理工具直接上传大马,而不是从上传点制作图片马上传大马,后者执行命令会失败,原因未知,可能跟图片马解析有关系。
查询杀软
[color=rgba(0, 0, 0, 0.9)] 到这里就已经算getshell成功了,之后上传cs免杀马再通过大马执行上线CS即可,整个过程还是比较坎 坷的
1.测试了不同的免杀马.
2.测试不同的改特征的webshell工具. 3.测试了白进程. 最后只有大马才可以.
|